From ef0f37134815968a98d0532809badd6ef8423417 Mon Sep 17 00:00:00 2001 From: DistroBaker Date: Wed, 4 Nov 2020 02:48:00 +0000 Subject: [PATCH] Merged update from upstream sources This is an automated DistroBaker update from upstream sources. If you do not know what this is about or would like to opt out, contact the OSCI team. Source: https://src.fedoraproject.org/rpms/binutils.git#9138ef73278f4728af1a504002360d7e4f48d69d --- binutils-dwarf-type-sign-2.patch | 142 +++++++++++++++++++++++++++++++ binutils.spec | 6 +- 2 files changed, 147 insertions(+), 1 deletion(-) create mode 100644 binutils-dwarf-type-sign-2.patch diff --git a/binutils-dwarf-type-sign-2.patch b/binutils-dwarf-type-sign-2.patch new file mode 100644 index 0000000..ce600d4 --- /dev/null +++ b/binutils-dwarf-type-sign-2.patch @@ -0,0 +1,142 @@ +--- binutils.orig/binutils/dwarf.c 2020-11-03 17:10:15.182386267 +0000 ++++ binutils-2.35.1/binutils/dwarf.c 2020-11-03 17:14:38.660411672 +0000 +@@ -876,6 +876,7 @@ typedef struct abbrev_list + { + abbrev_entry * first_abbrev; + abbrev_entry * last_abbrev; ++ dwarf_vma abbrev_base; + dwarf_vma abbrev_offset; + struct abbrev_list * next; + unsigned char * start_of_next_abbrevs; +@@ -955,10 +956,11 @@ free_all_abbrevs (void) + } + + static abbrev_list * +-new_abbrev_list (dwarf_vma abbrev_offset) ++new_abbrev_list (dwarf_vma abbrev_base, dwarf_vma abbrev_offset) + { + abbrev_list * list = (abbrev_list *) xcalloc (sizeof * list, 1); + ++ list->abbrev_base = abbrev_base; + list->abbrev_offset = abbrev_offset; + + list->next = abbrev_lists; +@@ -968,12 +970,14 @@ new_abbrev_list (dwarf_vma abbrev_offset + } + + static abbrev_list * +-find_abbrev_list_by_abbrev_offset (dwarf_vma abbrev_offset) ++find_abbrev_list_by_abbrev_offset (dwarf_vma abbrev_base, ++ dwarf_vma abbrev_offset) + { + abbrev_list * list; + + for (list = abbrev_lists; list != NULL; list = list->next) +- if (list->abbrev_offset == abbrev_offset) ++ if (list->abbrev_base == abbrev_base ++ && list->abbrev_offset == abbrev_offset) + return list; + + return NULL; +@@ -2415,10 +2419,10 @@ read_and_display_attr_value (unsigned lo + case DW_FORM_ref_addr: + if (dwarf_version == 2) + SAFE_BYTE_GET_AND_INC (uvalue, data, pointer_size, end); +- else if (dwarf_version == 3 || dwarf_version == 4) ++ else if (dwarf_version > 2) + SAFE_BYTE_GET_AND_INC (uvalue, data, offset_size, end); + else +- error (_("Internal error: DWARF version is not 2, 3 or 4.\n")); ++ error (_("Internal error: DW_FORM_ref_addr is not supported in DWARF version 1.\n")); + break; + + case DW_FORM_addr: +@@ -3455,6 +3459,8 @@ process_debug_info (struct dwarf_section + { + DWARF2_Internal_CompUnit compunit; + unsigned char * hdrptr; ++ dwarf_vma abbrev_base; ++ size_t abbrev_size; + dwarf_vma cu_offset; + unsigned int offset_size; + unsigned int initial_length_size; +@@ -3499,25 +3505,25 @@ process_debug_info (struct dwarf_section + + SAFE_BYTE_GET_AND_INC (compunit.cu_abbrev_offset, hdrptr, offset_size, end); + +- list = find_abbrev_list_by_abbrev_offset (compunit.cu_abbrev_offset); ++ if (this_set == NULL) ++ { ++ abbrev_base = 0; ++ abbrev_size = debug_displays [abbrev_sec].section.size; ++ } ++ else ++ { ++ abbrev_base = this_set->section_offsets [DW_SECT_ABBREV]; ++ abbrev_size = this_set->section_sizes [DW_SECT_ABBREV]; ++ } ++ ++ list = find_abbrev_list_by_abbrev_offset (abbrev_base, ++ compunit.cu_abbrev_offset); + if (list == NULL) + { +- dwarf_vma abbrev_base; +- size_t abbrev_size; + unsigned char * next; + +- if (this_set == NULL) +- { +- abbrev_base = 0; +- abbrev_size = debug_displays [abbrev_sec].section.size; +- } +- else +- { +- abbrev_base = this_set->section_offsets [DW_SECT_ABBREV]; +- abbrev_size = this_set->section_sizes [DW_SECT_ABBREV]; +- } +- +- list = new_abbrev_list (compunit.cu_abbrev_offset); ++ list = new_abbrev_list (abbrev_base, ++ compunit.cu_abbrev_offset); + next = process_abbrev_set + (((unsigned char *) debug_displays [abbrev_sec].section.start + + abbrev_base + compunit.cu_abbrev_offset), +@@ -3734,12 +3740,14 @@ process_debug_info (struct dwarf_section + (unsigned long) debug_displays [abbrev_sec].section.size); + else + { +- list = find_abbrev_list_by_abbrev_offset (compunit.cu_abbrev_offset); ++ list = find_abbrev_list_by_abbrev_offset (abbrev_base, ++ compunit.cu_abbrev_offset); + if (list == NULL) + { + unsigned char * next; + +- list = new_abbrev_list (compunit.cu_abbrev_offset); ++ list = new_abbrev_list (abbrev_base, ++ compunit.cu_abbrev_offset); + next = process_abbrev_set + (((unsigned char *) debug_displays [abbrev_sec].section.start + + abbrev_base + compunit.cu_abbrev_offset), +@@ -5304,7 +5312,7 @@ display_debug_lines_decoded (struct dwar + else + { + newFileName = (char *) xmalloc (fileNameLength + 1); +- strcpy (newFileName, fileName); ++ strncpy (newFileName, fileName, fileNameLength + 1); + } + + if (!do_wide || (fileNameLength <= MAX_FILENAME_LENGTH)) +@@ -6029,10 +6037,10 @@ display_debug_abbrev (struct dwarf_secti + dwarf_vma offset; + + offset = start - section->start; +- list = find_abbrev_list_by_abbrev_offset (offset); ++ list = find_abbrev_list_by_abbrev_offset (0, offset); + if (list == NULL) + { +- list = new_abbrev_list (offset); ++ list = new_abbrev_list (0, offset); + start = process_abbrev_set (start, end, list); + list->start_of_next_abbrevs = start; + } diff --git a/binutils.spec b/binutils.spec index c9c6c79..412943f 100644 --- a/binutils.spec +++ b/binutils.spec @@ -2,7 +2,7 @@ Summary: A GNU collection of binary utilities Name: %{?cross}binutils%{?_with_debug:-debug} Version: 2.35.1 -Release: 12%{?dist} +Release: 13%{?dist} License: GPLv3+ URL: https://sourceware.org/binutils @@ -261,6 +261,7 @@ Patch27: binutils-recursive-debuglink-following.patch # when attempting to determine a type's signedness. # Lifetime: Fixed in 2.36 Patch28: binutils-dwarf-type-sign.patch +Patch29: binutils-dwarf-type-sign-2.patch #---------------------------------------------------------------------------- @@ -838,6 +839,9 @@ exit 0 #---------------------------------------------------------------------------- %changelog +* Tue Nov 03 2020 Nick Clifton - 2.35.1-13 +- Extend fix erroneous decoding of LEB128 values. (#1893921) + * Tue Nov 03 2020 Nick Clifton - 2.35.1-12 - Another correction for plugin as-needed patch. (#1889763)