On Thu, 12 Dec 2013 11:51:37 +0100, Mark Wielaard wrote: > +/* Fetch one entry from the module's symbol table and the associated > + address value. On errors, returns NULL. If successful, fills in > + *SYM, *ADDR and returns the string for st_name. This works like > + gelf_getsym. *ADDR is set to the st_value adjusted to an absolute > + value based on the module's location, when the symbol is in an > + SHF_ALLOC section. For non-ET_REL files, if the arch uses function > + descriptors, and the st_value points to one, the value will be > + resolved to the actual function address. Note that since symbols > + can come from either the main, debug or auxiliary ELF symbol file > + (either dynsym or symtab) and the st_value itself isn't adjusted in > + any way (this is different from dwfl_module_getsym). */ > +extern const char *dwfl_module_getsym_info (Dwfl_Module *mod, int ndx, > + GElf_Sym *sym, GElf_Addr *addr) > + __nonnull_attribute__ (3, 4);
Not sure if you have considered dropping the first NULL ELF symbol, when it is a new API anyway. OTOH it will simplify neither caller nor the implementation. It could also document sh_info does not match the local vs. global symbols; but that can be documented at any time. Jan