This is the mail archive of the gdb@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: enable_break() in solib-svr4.c


> Date: Wed, 31 Aug 2005 13:30:45 -0700
> From: Kevin Buettner <kevinb@redhat.com>
> 
> On Mon, 15 Aug 2005 16:20:59 -0400
> Paul Koning <pkoning@equallogic.com> wrote:
> 
> > The code in solib-svr4.c in several places seems to assume that the
> > shared lib loader is linked to base address 0, loaded somewhere else,
> > and relocated at runtime -- and ditto for other libraries. 
> > 
> > I've just been battling a bug in enable_break, where the load address
> > of the shared lib loader is added to a symbol address from the
> > solib_break_names[] list.  That produces nonsense on NetBSD/MIPS,
> > because ldd.elf_so is linked to 5ffe0000 so that address is added to
> > the symbol address (5ffexxxx).
> > 
> > As a hack solution I have it add the load address only if the symbol
> > value is less than the load address.  It seems to me the correct way
> > to cure this is to compute the relocation delta -- the difference
> > between the load address and the as-linked VMA of the start of the
> > library (from the program headers).  I did something like this in
> > svr4_relocate_section_addresses. 
> 
> I too would like to see your solution, hack or not.
> 
> Is this issue different than the ones already discussed as part of the
> following thread?
> 
> http://sources.redhat.com/ml/gdb/2002-12/msg00266.html
> 
> Kevin

Did I reply to your origional message Paul?  Or did I let it slip
through?  MIPS is rather special; IRIX apparently did things
differently than everybody else, and some of the open source OS'es
copied the IRIX behaviour for their MIPS ports.  This is the case on
NetBSD/mips; see that #ifdef __mips__ in /usr/include/link_elf.h?

NetBSD made some changes between 1.6 and 2.0 to "rectify" this; and
IIRC the current code works fine on 2.0, but not on 1.6.  

That said, we must be careful making assumptions about the address
layout.  The trend is that operating systems randomize the locations
where they put stuff.

Mark


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]