News MIPS option -mno-shared
Dave Korn
dave.korn@artimi.com
Fri Dec 10 13:45:00 GMT 2004
> -----Original Message-----
> From: binutils-owner On Behalf Of Ian Lance Taylor
> Sent: 09 December 2004 20:32
> To: David Daney
> David Daney writes:
>
> > I have code that generates stack traces that relies on the
> structure of the
> > function prolog to work. It looks for this:
> >
> > /*
> > * Find function prolog. It will have the form:
> > *
> > * 3c1c???? lui gp,????
> > * 279c???? addiu gp,gp,????
> > * 0399e021 addu gp,gp,t9
> > * 27bd#### addiu sp,sp,####
> > *
> > * Where ???? are the offset of the GOT from the function
> > * entrypoint, and #### is the amount added to the
> stack poiner.
> > */
> >
> > Your change will break it.
>
> True, but only if you choose to use -mno-shared when you compile. I'm
> not proposing that it be the default, only that it be an option.
>
> Ian
GDB will presumably barf on this too, won't it? It does very much the same
kind of crude disassembling/parsing of function prologs IIUIC.
Having said that, reversing the prolog to deduce information that was
discarded at compile-time is always going to be an inherently fragile strategy.
The proper solution (both for gdb and for David's application, and I think to
some extent gdb may be already beginning to support this where applicable) is to
compile the application with debug info that identifies which instructions are
prolog-related. I think that means Dwarf-3.
David, another thing that could break your code is if the MIPS gcc port starts
to use RTL prolog generation; when that happens, you'll start to see code where
instructions from the body of the function are migrated upward in among prolog
instructions by the scheduler. That's liable to confuse any code that attempts
to parse prologs without using debug info.
cheers,
DaveK
--
Can't think of a witty .sigline today....
More information about the Binutils
mailing list