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: Mon, 15 Aug 2005 16:20:59 -0400
> From: Paul Koning <pkoning@equallogic.com>
> 
> 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).

I seem to recall that we have had problems with this in the past, and
that MIPS is a bit of an odd one out in this respect.  I also seem to
recall that NetBSD/MIPS changed some data structures in the dynamic
linker which doesn't make things easier for gdb.  What version of
NetBSD are you using?

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

It'd help if you actually attached your solution ;-).

Mark


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