re PR sanitizer/77631 (no symbols in backtrace shown by ASan when debug info is split)
authorIan Lance Taylor <iant@golang.org>
Wed, 20 Sep 2017 21:09:37 +0000 (21:09 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Wed, 20 Sep 2017 21:09:37 +0000 (21:09 +0000)
commit9283471ba0d8b605a5ddf8cbd2814d81d4dd8550
treee52a88d0b1f5cfcb40440155b8e658b582180f36
parent2ffb574542b10b14841c2807047e7396e3a63f37
re PR sanitizer/77631 (no symbols in backtrace shown by ASan when debug info is split)

PR sanitizer/77631
Support for external debug info.
* elf.c: Include <errno.h>, <sys/stat.h>, <unistd.h>.
(S_ISLNK): Define if not defined.
(xstrnlen): Define if strnlen is not available.
(b_elf_note): Define type.
(NT_GNU_BUILD_ID): Define macro.
(elf_crc32, elf_crc32_file): New static functions.
(elf_is_symlink, elf_readlink): New static functions.
(elf_open_debugfile_by_buildid): New static function.
(elf_try_debugfile): New static function.
(elf_find_debugfile_by_debuglink): New static function.
(elf_open_debugfile_by_debuglink): New static function.
(elf_add): Add filename and debuginfo parameters.  Adjust all
callers.  Look for external debug info notes, and try to fetch
debug info from external file.
(struct phdr_data): Add exe_filename field.
(phdr_callback): Pass filename to elf_add.
(backtrace_initialize): Add filename parameter.
* internal.h (backtrace_initialize): Add filename parameter.
* fileline.c (fileline_initialize): Pass filename to
backtrace_initialize.
* pecoff.c (fileline_initialize): Add unused filename parameter.
* unknown.c (fileline_initialize): Likewise.
* xcoff.c (fileline_initialize): Likewise.
* configure.ac: Check for objcopy --add-gnu-debuglink.
* Makefile.am (dtest): New test target.
* configure, Makefile.in: Rebuild.

Co-Authored-By: Denis Khalikov <d.khalikov@partner.samsung.com>
From-SVN: r253032
libbacktrace/ChangeLog
libbacktrace/Makefile.am
libbacktrace/Makefile.in
libbacktrace/configure
libbacktrace/configure.ac
libbacktrace/elf.c
libbacktrace/fileline.c
libbacktrace/internal.h
libbacktrace/pecoff.c
libbacktrace/unknown.c
libbacktrace/xcoff.c