"gdb vmlinux" gives wrong symbol addresses

Alan Modra amodra@bigpond.net.au
Mon Aug 21 01:38:00 GMT 2006


On Fri, Aug 18, 2006 at 02:48:37PM -0400, Daniel Jacobowitz wrote:
> The debug section has been fully resolved, but relocations are also
> applied to it, moving all addresses up even further.  I don't have
> any good idea on how to detect this case.  We originally handled
> relocations for shared libraries with unrelocated debug sections;
> but this is a fully relocated section which still has relocation
> information.
> 
> Did we change all binutils targets to resolve relocations in debug
> sections?  I don't really remember.  If so, maybe we should drop
> support for shared libraries with this problem, and only apply
> relocations to debug info for ET_REL objects.

I think that for ET_EXEC and ET_DYN gdb should ignore relocs that use
the normal symbol table.  Sane ELF targets will have dynamic reloc
section(s) with sh_link pointing at a symtab section with sh_type of
SHT_DYNSYM.  --emit-relocs creates reloc sections with sh_link pointing
at a symtab section with sh_type of SHT_SYMTAB.

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre



More information about the Gdb mailing list