Hi all,
Current backtrace_symbols(3) tries to read names of functions in call
stack from .dynsym which is usually very sparse compared to ordinary
symbol table in .symtab. Even if application is linked with -rdynamic
(which may be undesirable due to pollution of dynamic namespace, etc.),
.dynsym won't contain static functions, etc.
Has anyone considered making backtrace_symbols more .symtab-friendly
e.g. allowing users to prefer .symtab to .dynsym if it's available (*)?
This would of course be less (probably much less) efficient because
.symtab search would be linear (compared to hash table available for
.dynsym) but I can imagine usecases where this would be acceptable e.g.
printing friendly backtraces on error. AFAIK currently some projects
link against libunwind and elfutils for the sole purpose of getting
readable backtraces which should be available with glibc.
-Y
(*) ./elf/sprof.c already does something like this.