PATCH: invalid IFUNC DW_AT_linkage_name: memmove strstr time

Jan Kratochvil jan.kratochvil@redhat.com
Thu Aug 9 08:52:00 GMT 2012


On Thu, 09 Aug 2012 01:26:56 +0200, Roland McGrath wrote:
> > http://sourceware.org/bugzilla/show_bug.cgi?id=14166
> 
> That bug does give enough for me to guess, though it could indeed use an
> explanation of what the real problem is.  (My guess is that for inferior
> calls GDB tries first to look up the name in DWARF info, and thus it finds
> e.g. the "memmove" that is defined as the linkage name for memmove_ifunc,
> and uses that PC as the target based on the entry_pc in the DIE.  It
> doesn't double-check the ELF symbol table entry for the linkage name, and
> so fails to realize that PC is the IFUNC entry point rather than the
> resolved function entry point.)

I agree with everything said above.  Verifying each DWARF symbol also against
ELF symbols would be a needless overhead, GDB has already performance issues.

IMO the DWARF definition DIE of ifuncs was wrong, there should have been some
DW_AT_is_gnu_ifunc.  But according to Uli the gnu-ifunc resolvers were not
interesting enough for debugging to give them valid DWARF.


Thanks,
Jan



More information about the Libc-alpha mailing list