[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: mozilla on alpha



"Christopher C. Chimelis" wrote:
>Good luck!  And thanks for digging into this one for me :-)

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 ()).

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...)

Peter Maydell



Reply to: