binutils-gdb/config/debuginfod.m4
Aaron Merey 301a9420d9 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.
2020-01-09 13:19:20 +00:00

39 lines
1.5 KiB
Plaintext

dnl Copyright (C) 1997-2019 Free Software Foundation, Inc.
dnl This file is free software, distributed under the terms of the GNU
dnl General Public License. As a special exception to the GNU General
dnl Public License, this file may be distributed as part of a program
dnl that contains a configuration script generated by Autoconf, under
dnl the same distribution terms as the rest of that program.
AC_DEFUN([AC_DEBUGINFOD],
[
# Enable debuginfod
AC_ARG_WITH([debuginfod],
AC_HELP_STRING([--with-debuginfod],
[Enable debuginfo lookups with debuginfod (auto/yes/no)]),
[], [with_debuginfod=auto])
AC_MSG_CHECKING([whether to use debuginfod])
AC_MSG_RESULT([$with_debuginfod])
if test "${with_debuginfod}" = no; then
AC_MSG_WARN([debuginfod support disabled; some features may be unavailable.])
else
AC_CHECK_LIB([debuginfod], [debuginfod_begin], [have_debuginfod_lib=yes])
AC_CHECK_DECL([debuginfod_begin], [have_debuginfod_h=yes], [],
[#include <elfutils/debuginfod.h>])
if test "x$have_debuginfod_lib" = "xyes" -a \
"x$have_debuginfod_h" = "xyes"; then
AC_DEFINE([HAVE_LIBDEBUGINFOD], [1],
[Define to 1 if debuginfod is enabled.])
AC_SUBST([LIBDEBUGINFOD], ["-ldebuginfod"])
else
AC_SUBST([LIBDEBUGINFOD], [])
if test "$with_debuginfod" = yes; then
AC_MSG_ERROR([debuginfod is missing or unusable])
else
AC_MSG_WARN([debuginfod is missing or unusable; some features may be unavailable.])
fi
fi
fi
])