Add support for debuginfod to the binutils (disable by default, enabled via a configu...
authorAaron Merey <amerey@redhat.com>
Thu, 9 Jan 2020 13:19:20 +0000 (13:19 +0000)
committerNick Clifton <nickc@redhat.com>
Thu, 9 Jan 2020 13:19:20 +0000 (13:19 +0000)
commit301a9420d947da145884261ac31a7a52438c2894
treefb30bb433561f4887f14f356b4802c400939ad7a
parent40c75bc8b07abc5d5774ea1c439b69c96e7fd485
Add support for debuginfod to the binutils (disable by default, enabled via a configure time option).

debuginfod is a lightweight web service that indexes ELF/DWARF
debugging resources by build-id and serves them over HTTP. This patch
enables objdump and readelf to query debuginfod servers when they are
otherwise not able to find separate debug files. Binutils can be built
with debuginfod using the --with-debuginfod configure option. This
requires that libdebuginfod be installed and found at configure time.
debuginfod is packaged with elfutils, starting with version 0.178. For
more information see https://sourceware.org/elfutils/.

toplevel* config/debuginfod.m4: New file. Add macro AC_DEBUGINFOD. Adds
        new configure option --with-debuginfod.
        * configure: Regenerate.
        * configure.ac: Call AC_DEBUGINFOD.

binutils* Makefile.am (readelf_LDADD, objdump_LDADD): Add libdebuginfod.
        * Makefile.in: Regenerate.
        * NEWS: Update.
        * config.in: Regenerate.
        * configure: Regenerate.
        * configure.ac: Call AC_DEBUGINFOD.
        * doc/Makefile.in: Regenerate.
        * doc/binutils.texi: Add section on using binutils
        with debuginfod.
        * dwarf.c (debuginfod_fetch_separate_debug_info): New function.
        Query debuginfod servers for the target debug file.
        (load_separate_debug_info): Call
        debuginfod_fetch_separate_debug_info if configured with
        debuginfod.
        (load_separate_debug_files): Add file argument to
        load_separate_debug_info calls.
        * dwarf.h (get_build_id): Add declaration.
        * objdump.c (get_build_id): New function. Get build-id of file.
        * readelf.c (get_build_id): Likewise.
        * testsuite/binutils-all/debuginfod.exp: New tests.
        * testsuite/binutils-all/linkdebug.s: Add .note.gnu.build-id
        section.
16 files changed:
binutils/Makefile.am
binutils/Makefile.in
binutils/NEWS
binutils/config.in
binutils/configure
binutils/configure.ac
binutils/doc/Makefile.in
binutils/doc/binutils.texi
binutils/dwarf.c
binutils/dwarf.h
binutils/objdump.c
binutils/readelf.c
binutils/testsuite/binutils-all/linkdebug.s
config/debuginfod.m4 [new file with mode: 0644]
configure
configure.ac