]> git.ipfire.org Git - thirdparty/gcc.git/commit
Add support for tracing through shared libraries.
authorIan Lance Taylor <iant@google.com>
Tue, 9 Oct 2012 18:20:45 +0000 (18:20 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Tue, 9 Oct 2012 18:20:45 +0000 (18:20 +0000)
commite561a9920cce1e638826a53599eb55ec44ce54c2
treecf3815f8c8b0babee15a42892364a912abc14de3
parent1a61077e0ef68c9c4453f86c408a302518dd8075
Add support for tracing through shared libraries.

* configure.ac: Check for link.h and dl_iterate_phdr.
* elf.c: #include <link.h> if system has dl_iterate_phdr.  #undef
ELF macros before #defining them.
(dl_phdr_info, dl_iterate_phdr): Define if system does not have
dl_iterate_phdr.
(struct elf_syminfo_data): Add next field.
(elf_initialize_syminfo): Initialize next field.
(elf_add_syminfo_data): New static function.
(elf_add): New static function, broken out of
backtrace_initialize.  Call backtrace_dwarf_add instead of
backtrace_dwarf_initialize.
(struct phdr_data): Define.
(phdr_callback): New static function.
(backtrace_initialize): Call elf_add.
* dwarf.c (struct dwarf_data): Add next and base_address fields.
(add_unit_addr): Add base_address parameter.  Change all callers.
(add_unit_ranges, build_address_map): Likewise.
(add_line): Add ddata parameter.  Change all callers.
(read_line_program, add_function_range): Likewise.
(dwarf_lookup_pc): New static function, broken out of
dwarf_fileline.
(dwarf_fileline): Call dwarf_lookup_pc.
(build_dwarf_data): New static function.
(backtrace_dwarf_add): New function.
(backtrace_dwarf_initialize): Remove.
* internal.h (backtrace_dwarf_initialize): Don't declare.
(backtrace_dwarf_add): Declare.
* configure, config.h.in: Rebuild.

From-SVN: r192267
libbacktrace/ChangeLog
libbacktrace/config.h.in
libbacktrace/configure
libbacktrace/configure.ac
libbacktrace/dwarf.c
libbacktrace/elf.c
libbacktrace/internal.h