Make readelf and objdump recursively follow debug links. (PR 26595)
This commit is contained in:
parent
13a86b8b66
commit
842839bbb1
109
binutils-recursive-debuglink-following.patch
Normal file
109
binutils-recursive-debuglink-following.patch
Normal file
@ -0,0 +1,109 @@
|
||||
--- binutils.orig/binutils/dwarf.c 2020-10-15 12:13:21.960799738 +0100
|
||||
+++ binutils-2.35.1/binutils/dwarf.c 2020-10-15 13:02:39.454692627 +0100
|
||||
@@ -10427,7 +10427,7 @@ load_separate_debug_info (const char *
|
||||
{
|
||||
warn (_("Corrupt debuglink section: %s\n"),
|
||||
xlink->name ? xlink->name : xlink->uncompressed_name);
|
||||
- return FALSE;
|
||||
+ return NULL;
|
||||
}
|
||||
|
||||
/* Attempt to locate the separate file.
|
||||
@@ -10587,7 +10587,7 @@ load_separate_debug_info (const char *
|
||||
{
|
||||
warn (_("failed to open separate debug file: %s\n"), debug_filename);
|
||||
free (debug_filename);
|
||||
- return FALSE;
|
||||
+ return NULL;
|
||||
}
|
||||
|
||||
/* FIXME: We do not check to see if there are any other separate debug info
|
||||
@@ -10632,6 +10632,52 @@ load_dwo_file (const char * main_filenam
|
||||
return separate_handle;
|
||||
}
|
||||
|
||||
+/* Load a debuglink section and/or a debugaltlink section, if either are present.
|
||||
+ Recursively check the loaded files for more of these sections.
|
||||
+ FIXME: Should also check for DWO_* entries in the newlu loaded files. */
|
||||
+
|
||||
+static void
|
||||
+check_for_and_load_links (void * file, const char * filename)
|
||||
+{
|
||||
+ void * handle = NULL;
|
||||
+
|
||||
+ if (load_debug_section (gnu_debugaltlink, file))
|
||||
+ {
|
||||
+ Build_id_data build_id_data;
|
||||
+
|
||||
+ handle = load_separate_debug_info (filename,
|
||||
+ & debug_displays[gnu_debugaltlink].section,
|
||||
+ parse_gnu_debugaltlink,
|
||||
+ check_gnu_debugaltlink,
|
||||
+ & build_id_data,
|
||||
+ file);
|
||||
+ if (handle)
|
||||
+ {
|
||||
+ assert (handle == first_separate_info->handle);
|
||||
+ check_for_and_load_links (first_separate_info->handle,
|
||||
+ first_separate_info->filename);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (load_debug_section (gnu_debuglink, file))
|
||||
+ {
|
||||
+ unsigned long crc32;
|
||||
+
|
||||
+ handle = load_separate_debug_info (filename,
|
||||
+ & debug_displays[gnu_debuglink].section,
|
||||
+ parse_gnu_debuglink,
|
||||
+ check_gnu_debuglink,
|
||||
+ & crc32,
|
||||
+ file);
|
||||
+ if (handle)
|
||||
+ {
|
||||
+ assert (handle == first_separate_info->handle);
|
||||
+ check_for_and_load_links (first_separate_info->handle,
|
||||
+ first_separate_info->filename);
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
/* Load the separate debug info file(s) attached to FILE, if any exist.
|
||||
Returns TRUE if any were found, FALSE otherwise.
|
||||
If TRUE is returned then the linked list starting at first_separate_info
|
||||
@@ -10707,34 +10753,10 @@ load_separate_debug_files (void * file,
|
||||
return FALSE;
|
||||
|
||||
/* FIXME: We do not check for the presence of both link sections in the same file. */
|
||||
- /* FIXME: We do not check the separate debug info file to see if it too contains debuglinks. */
|
||||
/* FIXME: We do not check for the presence of multiple, same-name debuglink sections. */
|
||||
/* FIXME: We do not check for the presence of a dwo link as well as a debuglink. */
|
||||
|
||||
- if (load_debug_section (gnu_debugaltlink, file))
|
||||
- {
|
||||
- Build_id_data * build_id_data;
|
||||
-
|
||||
- load_separate_debug_info (filename,
|
||||
- & debug_displays[gnu_debugaltlink].section,
|
||||
- parse_gnu_debugaltlink,
|
||||
- check_gnu_debugaltlink,
|
||||
- & build_id_data,
|
||||
- file);
|
||||
- }
|
||||
-
|
||||
- if (load_debug_section (gnu_debuglink, file))
|
||||
- {
|
||||
- unsigned long crc32;
|
||||
-
|
||||
- load_separate_debug_info (filename,
|
||||
- & debug_displays[gnu_debuglink].section,
|
||||
- parse_gnu_debuglink,
|
||||
- check_gnu_debuglink,
|
||||
- & crc32,
|
||||
- file);
|
||||
- }
|
||||
-
|
||||
+ check_for_and_load_links (file, filename);
|
||||
if (first_separate_info != NULL)
|
||||
return TRUE;
|
||||
|
@ -2,7 +2,7 @@
|
||||
Summary: A GNU collection of binary utilities
|
||||
Name: %{?cross}binutils%{?_with_debug:-debug}
|
||||
Version: 2.35.1
|
||||
Release: 5%{?dist}
|
||||
Release: 6%{?dist}
|
||||
License: GPLv3+
|
||||
URL: https://sourceware.org/binutils
|
||||
|
||||
@ -186,69 +186,73 @@ Patch10: binutils-attach-to-group.patch
|
||||
|
||||
# Purpose: Allow OS specific sections in section groups.
|
||||
# Lifetime: Fixed in 2.36 (maybe)
|
||||
Patch12: binutils-special-sections-in-groups.patch
|
||||
Patch11: binutils-special-sections-in-groups.patch
|
||||
|
||||
# Purpose: Fix linker testsuite failures.
|
||||
# Lifetime: Fixed in 2.36 (maybe)
|
||||
Patch13: binutils-fix-testsuite-failures.patch
|
||||
Patch12: binutils-fix-testsuite-failures.patch
|
||||
|
||||
# Purpose: Stop gold from aborting when input sections with the same name
|
||||
# have different flags.
|
||||
# Lifetime: Fixed in 2.36 (maybe)
|
||||
Patch14: binutils-gold-mismatched-section-flags.patch
|
||||
Patch13: binutils-gold-mismatched-section-flags.patch
|
||||
|
||||
# Purpose: Add a check to the GOLD linker for a corrupt input file
|
||||
# with a fuzzed section offset.
|
||||
# Lifetime: Fixed in 2.36 (maybe)
|
||||
Patch15: binutils-CVE-2019-1010204.patch
|
||||
Patch14: binutils-CVE-2019-1010204.patch
|
||||
|
||||
# Purpose: Change the gold configuration script to only warn about
|
||||
# unsupported targets. This allows the binutils to be built with
|
||||
# BPF support enabled.
|
||||
# Lifetime: Permanent.
|
||||
Patch17: binutils-gold-warn-unsupported.patch
|
||||
Patch15: binutils-gold-warn-unsupported.patch
|
||||
|
||||
# Purpose: Fix compile time warning messages building s390 target with gcc-10.
|
||||
# Lifetime: Should be fixed in 2.36.
|
||||
Patch19: binutils-s390-build.patch
|
||||
Patch16: binutils-s390-build.patch
|
||||
|
||||
# Purpose: Fix LTO problems running config mini-builds.
|
||||
# Lifetime: Should be fixed in 2.36.
|
||||
Patch20: binutils-config.patch
|
||||
Patch17: binutils-config.patch
|
||||
|
||||
# Purpose: Fix compile time warning messages building with gcc-10.
|
||||
# Lifetime: Should be fixed in 2.36.
|
||||
Patch21: binutils-warnings.patch
|
||||
Patch18: binutils-warnings.patch
|
||||
|
||||
# Purpose: Fix compile time warning messages building with gcc-10. (part 2).
|
||||
# Lifetime: Should be fixed in 2.36.
|
||||
Patch22: binutils-gcc-10-fixes.patch
|
||||
Patch19: binutils-gcc-10-fixes.patch
|
||||
|
||||
# Purpose: Fixes for linking LTO objects.
|
||||
# Lifetime: Fixed in 2.36
|
||||
Patch23: binutils-add-sym-cache-to-elf-link-hash.patch
|
||||
Patch24: binutils-elf-add-objects.patch
|
||||
Patch20: binutils-add-sym-cache-to-elf-link-hash.patch
|
||||
Patch21: binutils-elf-add-objects.patch
|
||||
|
||||
# Purpose: Fix handling of relocations for AArch64 conditional branches.
|
||||
# Lifetime: Fixed in 2.36
|
||||
Patch25: binutils-aarch64-condbranch-relocs.patch
|
||||
Patch22: binutils-aarch64-condbranch-relocs.patch
|
||||
|
||||
# Purpose: Fix the PowerPC disassembler so that it ignores annobin symbols.
|
||||
# Lifetime: Fixed in 2.36
|
||||
Patch26: binutils-ppc-annobin-disassembly.patch
|
||||
Patch23: binutils-ppc-annobin-disassembly.patch
|
||||
|
||||
# Purpose: Fix the strip program to cope when merging multiple same-named
|
||||
# sections.
|
||||
# Lifetime: Fixed in 2.36
|
||||
Patch27: binutils-strip-merge.patch
|
||||
Patch24: binutils-strip-merge.patch
|
||||
|
||||
# Purpose: Fix various problems with the PowerPC arch10 extensions.
|
||||
# Lifetime: Fixed in 2.36
|
||||
Patch28: binutils-Power10-fixes.patch
|
||||
Patch25: binutils-Power10-fixes.patch
|
||||
|
||||
# Purpose: Allow plugin syms to mark as-needed shared libs needed.
|
||||
# Lifetime: Fixed in 2.36
|
||||
Patch29: binutils-plugin-as-needed.patch
|
||||
Patch26: binutils-plugin-as-needed.patch
|
||||
|
||||
# Purpose: Recursively follow .gnu_debuglink and .gnu_debugaltlink sections.
|
||||
# Lifetime: Fixed in 2.36
|
||||
Patch27: binutils-recursive-debuglink-following.patch
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
@ -823,6 +827,9 @@ exit 0
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
%changelog
|
||||
* Thu Oct 15 2020 Nick Clifton <nickc@redhat.com> - 2.35.1-6
|
||||
- Make readelf and objdump recursively follow debug links. (PR 26595)
|
||||
|
||||
* Fri Oct 09 2020 Nick Clifton <nickc@redhat.com> - 2.35.1-5
|
||||
- Allow plugin syms to mark as-needed shared libs needed
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user