This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Backtrace_symbols and .symtab
- From: Yury Gribov <y dot gribov at samsung dot com>
- To: GNU C Library <libc-alpha at sourceware dot org>
- Cc: Viacheslav Garbuzov <v dot garbuzov at samsung dot com>
- Date: Wed, 22 Oct 2014 18:53:51 +0400
- Subject: Backtrace_symbols and .symtab
- Authentication-results: sourceware.org; auth=none
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.