Re: mozilla on alpha
On Sat, 25 Nov 2000, Peter Maydell wrote:
> OK, I'm looking into the regxpcom segfault. What seems to be happening
> is that:
> * program runs to completion
> * xpcom library _fini routine is called
> * this calls a couple of routines in gcc/config/alpha/crtbegin.asm:
> __do_global_dtors_aux
> __do_frame_takedown
> * the _fini code expects the gp register to be preserved across
> the __do_global_dtors_aux call, but it isn't
> * therefore the call to __do_frame_takedown actually jumps to
> address 0, causing a segfault
>
> Further singlestepping indicates that gp is not trashed by
> the first destructor called by __do_global_dtors_aux, only
> by the second (global destructors keyed to xptiZipLoader::gCache ()).
Ah, ok...this sounds like a job for Superman....argh...wrong movie :-P
Seriously, this sounds like what's going on with Qt and seems to only
occur with multiple-inheritence code. I'll check my assembly references
and see what I can find out (it's been a few months since I had to
seriously read through Alpha asm). It sounds like something's not doing
the right thing here...most likely gcc...
> Any ideas? (My alpha assembly is virtually nonexistent, and I
> certainly have no idea what the calling convention says about
> who should be preserving gp here...)
I intend to find out :-)
C
Reply to: