mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-12 12:16:04 +08:00
301a9420d9
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.
67 lines
2.2 KiB
ArmAsm
67 lines
2.2 KiB
ArmAsm
/* Assembler source used to create an object file for testing readelf's
|
|
and objdump's ability to process separate debug information files.
|
|
|
|
Copyright (C) 2017-2020 Free Software Foundation, Inc.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
|
|
/* This is the separate debug info file. */
|
|
|
|
/* Create .note.gnu.build-id note for use by the .gnu_debugaltlink
|
|
in the main object file. */
|
|
|
|
.section .note.gnu.build-id,"a",%note
|
|
.balign 4
|
|
.dc.l 0x04 ;# Name size
|
|
.dc.l 0x18 ;# Description size
|
|
.dc.l 0x03 ;# Type
|
|
.asciz "GNU" ;# Name
|
|
.dc.b 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77
|
|
.dc.b 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff
|
|
.dc.b 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef
|
|
|
|
/* Create a .debug_abbrev section for use by the .debug_info section
|
|
in the main object file. */
|
|
|
|
.section .debug_abbrev,"",%progbits
|
|
abbrevs:
|
|
.uleb128 0x01 ;# Abbrev code.
|
|
.uleb128 0x11 ;# DW_TAG_compile_unit
|
|
.byte 0x00 ;# DW_children_no
|
|
.uleb128 0x03 ;# DW_AT_name
|
|
.uleb128 0x0e ;# DW_FORM_strp
|
|
.byte 0x00 ;# End of abbrev
|
|
.byte 0x00
|
|
|
|
.uleb128 0x02 ;# Abbrev code.
|
|
.uleb128 0x2e ;# DW_TAG_subprogram
|
|
.byte 0x00 ;# DW_children_no
|
|
.uleb128 0x03 ;# DW_AT_name
|
|
.uleb128 0x1f21 ;# DW_FORM_GNU_strp_alt
|
|
.byte 0x0 ;# End of abbrev
|
|
.byte 0x0
|
|
|
|
.byte 0x0 ;# Abbrevs terminator
|
|
|
|
/* Create a .debug_str section for remote use. This is also to check
|
|
the ability to dump the same section twice, if it exists in
|
|
both the main file and the separate debug info file. */
|
|
|
|
.section .debug_str,"MS",%progbits,1
|
|
string3:
|
|
.asciz "string-3"
|
|
.asciz "string-4"
|
|
.balign 2
|
|
string_end:
|