From 64596aaffc21256baf5c6149e27359c17448fe9b Mon Sep 17 00:00:00 2001 From: eabdullin Date: Tue, 30 Apr 2024 15:18:04 +0000 Subject: [PATCH] import UBI debugedit-5.0-5.el9 --- .debugedit.metadata | 1 + .gitignore | 1 + ...pport-for-.debug_str_offsets-DW_FORM.patch | 432 ++++++++++++++++++ ...cripts-find-debuginfo.in-Add-q-quiet.patch | 116 +++++ SOURCES/debugedit-5.0.tar.xz.sig | Bin 310 -> 0 bytes SPECS/debugedit.spec | 10 +- 6 files changed, 559 insertions(+), 1 deletion(-) create mode 100644 SOURCES/0001-debugedit-Add-support-for-.debug_str_offsets-DW_FORM.patch create mode 100644 SOURCES/0002-scripts-find-debuginfo.in-Add-q-quiet.patch delete mode 100644 SOURCES/debugedit-5.0.tar.xz.sig diff --git a/.debugedit.metadata b/.debugedit.metadata index 2f1f6e0..6e8cf87 100644 --- a/.debugedit.metadata +++ b/.debugedit.metadata @@ -1,2 +1,3 @@ e15e23409266e2a0be8b3748235b126bedbc7b6b SOURCES/debugedit-5.0.tar.xz +1c91547813dddd09e345df31d8ecfbd0b1aaa9e9 SOURCES/debugedit-5.0.tar.xz.sig 4c6ca620f5b14e24492616195f7848df0029451c SOURCES/gpgkey-5C1D1AA44BE649DE760A.gpg diff --git a/.gitignore b/.gitignore index 12a5671..2e43dad 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ SOURCES/debugedit-5.0.tar.xz +SOURCES/debugedit-5.0.tar.xz.sig SOURCES/gpgkey-5C1D1AA44BE649DE760A.gpg diff --git a/SOURCES/0001-debugedit-Add-support-for-.debug_str_offsets-DW_FORM.patch b/SOURCES/0001-debugedit-Add-support-for-.debug_str_offsets-DW_FORM.patch new file mode 100644 index 0000000..ce45c4f --- /dev/null +++ b/SOURCES/0001-debugedit-Add-support-for-.debug_str_offsets-DW_FORM.patch @@ -0,0 +1,432 @@ +From 3e7aeeab4f744ad15108775685db68d3a35b0735 Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Thu, 23 Mar 2023 18:07:40 +0100 +Subject: [PATCH] debugedit: Add support for .debug_str_offsets (DW_FORM_strx) + +In theory supporting strx .debug_str_offsets is easy, the strings in +.debug_str are just read through an indirection table. When the +strings are updated in .debug_str we just need to rewrite the +indirection table. + +The tricky part is the ET_REL (object files or kernel modules) +support. Relocation reading is "global" per section and we expect to +read a relocation only once. But we need to read the +DW_AT_str_offsets_base before reading any strx form attributes. So we +read that first, then reset the relptr. And when we read from the +.debug_str_offsets section we need to save and restore the .debug_info +relptr. + + * tools/debugedit.c (do_read_24): New function. + (str_offsets_base): New static variable. + (buf_read_ule24): New function. + (buf_read_ube24): Likewise. + (setup_relbuf): Handle .debug_str_offsets. + (do_read_uleb128): New function. + (do_read_str_form_relocated): Likewise. + (read_abbrev): Handle DW_FORM_strx[1234]. + (edit_strp): Take the actual string form as argument. + Use do_read_str_form_relocated. + (read_dwarf5_line_entries): Pass form to edit_strp. + (edit_attributes_str_comp_dir): Take the actual string + form as argument. Use do_read_str_form_relocated. + (edit_attributes): Handle DW_FORM_strx[1234]. + (edit_info): Read DW_AT_str_offsets_base first. + (update_str_offsets): New function. + (edit_dwarf2): Setup do_read_24. Call update_str_offsets. + +https://sourceware.org/bugzilla/show_bug.cgi?id=28728 + +Signed-off-by: Mark Wielaard +--- + tools/debugedit.c | 216 ++++++++++++++++++++++++++++++++++++++++------ + 1 file changed, 192 insertions(+), 24 deletions(-) + +diff --git a/tools/debugedit.c b/tools/debugedit.c +index e654981..7802f9f 100644 +--- a/tools/debugedit.c ++++ b/tools/debugedit.c +@@ -1,4 +1,5 @@ + /* Copyright (C) 2001-2003, 2005, 2007, 2009-2011, 2016, 2017 Red Hat, Inc. ++ Copyright (C) 2022, 2023 Mark J. Wielaard + Written by Alexander Larsson , 2002 + Based on code by Jakub Jelinek , 2001. + String/Line table rewriting by Mark Wielaard , 2017. +@@ -264,6 +264,7 @@ typedef struct + }) + + static uint16_t (*do_read_16) (unsigned char *ptr); ++static uint32_t (*do_read_24) (unsigned char *ptr); + static uint32_t (*do_read_32) (unsigned char *ptr); + static void (*do_write_16) (unsigned char *ptr, uint16_t val); + static void (*do_write_32) (unsigned char *ptr, uint32_t val); +@@ -271,6 +272,9 @@ static void (*do_write_32) (unsigned char *ptr, uint32_t val); + static int ptr_size; + static int cu_version; + ++/* The offset into the .debug_str_offsets section for the current CU. */ ++static uint32_t str_offsets_base; ++ + static inline uint16_t + buf_read_ule16 (unsigned char *data) + { +@@ -283,6 +287,18 @@ buf_read_ube16 (unsigned char *data) + return data[1] | (data[0] << 8); + } + ++static inline uint32_t ++buf_read_ule24 (unsigned char *data) ++{ ++ return data[0] | (data[1] << 8) | (data[2] << 16); ++} ++ ++static inline uint32_t ++buf_read_ube24 (unsigned char *data) ++{ ++ return data[2] | (data[1] << 8) | (data[0] << 16); ++} ++ + static inline uint32_t + buf_read_ule32 (unsigned char *data) + { +@@ -544,10 +560,12 @@ setup_relbuf (DSO *dso, debug_section *sec, int *reltype) + /* Relocations against section symbols are uninteresting in REL. */ + if (dso->shdr[i].sh_type == SHT_REL && sym.st_value == 0) + continue; +- /* Only consider relocations against .debug_str, .debug_line, +- .debug_line_str, and .debug_abbrev. */ ++ /* Only consider relocations against .debug_str, ++ .debug_str_offsets, .debug_line, .debug_line_str, and ++ .debug_abbrev. */ + if (sym.st_shndx == 0 || + (sym.st_shndx != debug_sections[DEBUG_STR].sec ++ && sym.st_shndx != debug_sections[DEBUG_STR_OFFSETS].sec + && sym.st_shndx != debug_sections[DEBUG_LINE].sec + && sym.st_shndx != debug_sections[DEBUG_LINE_STR].sec + && sym.st_shndx != debug_sections[DEBUG_ABBREV].sec)) +@@ -684,6 +702,59 @@ update_rela_data (DSO *dso, struct debug_section *sec) + free (sec->relbuf); + } + ++static inline uint32_t ++do_read_uleb128 (unsigned char *ptr) ++{ ++ unsigned char *uleb_ptr = ptr; ++ return read_uleb128 (uleb_ptr); ++} ++ ++static inline uint32_t ++do_read_str_form_relocated (DSO *dso, uint32_t form, unsigned char *ptr) ++{ ++ uint32_t idx; ++ switch (form) ++ { ++ case DW_FORM_strp: ++ case DW_FORM_line_strp: ++ return do_read_32_relocated (ptr); ++ ++ case DW_FORM_strx1: ++ idx = *ptr; ++ break; ++ case DW_FORM_strx2: ++ idx = do_read_16 (ptr); ++ break; ++ case DW_FORM_strx3: ++ idx = do_read_24 (ptr); ++ break; ++ case DW_FORM_strx4: ++ idx = do_read_32 (ptr); ++ break; ++ case DW_FORM_strx: ++ idx = do_read_uleb128 (ptr); ++ break; ++ default: ++ error (1, 0, "Unhandled string form DW_FORM_0x%x", form); ++ return -1; ++ } ++ ++ unsigned char *str_off_ptr = debug_sections[DEBUG_STR_OFFSETS].data; ++ str_off_ptr += str_offsets_base; ++ str_off_ptr += idx * 4; ++ ++ /* Switch rel reading... */ ++ REL *old_relptr = relptr; ++ REL *old_relend = relend; ++ setup_relbuf(dso, &debug_sections[DEBUG_STR_OFFSETS], &reltype); ++ ++ uint32_t str_off = do_read_32_relocated (str_off_ptr); ++ ++ relptr = old_relptr; ++ relend = old_relend; ++ return str_off; ++} ++ + struct abbrev_attr + { + unsigned int attr; +@@ -789,7 +860,12 @@ no_memory: + || form == DW_FORM_addrx1 + || form == DW_FORM_addrx2 + || form == DW_FORM_addrx3 +- || form == DW_FORM_addrx4))) ++ || form == DW_FORM_addrx4 ++ || form == DW_FORM_strx ++ || form == DW_FORM_strx1 ++ || form == DW_FORM_strx2 ++ || form == DW_FORM_strx3 ++ || form == DW_FORM_strx4))) + { + error (0, 0, "%s: Unknown DWARF DW_FORM_0x%x", dso->filename, + form); +@@ -1520,9 +1596,10 @@ edit_dwarf2_line (DSO *dso) + } + } + +-/* Record or adjust (according to phase) DW_FORM_strp or DW_FORM_line_strp. */ ++/* Record or adjust (according to phase) DW_FORM_strp or DW_FORM_line_strp. ++ Also handles DW_FORM_strx, but just for recording the (indexed) string. */ + static void +-edit_strp (DSO *dso, bool line_strp, unsigned char *ptr, int phase, ++edit_strp (DSO *dso, uint32_t form, unsigned char *ptr, int phase, + bool handled_strp) + { + unsigned char *ptr_orig = ptr; +@@ -1537,16 +1614,19 @@ edit_strp (DSO *dso, bool line_strp, unsigned char *ptr, int phase, + recorded. */ + if (! handled_strp) + { +- size_t idx = do_read_32_relocated (ptr); +- record_existing_string_entry_idx (line_strp, dso, idx); ++ size_t idx = do_read_str_form_relocated (dso, form, ptr); ++ record_existing_string_entry_idx (form == DW_FORM_line_strp, ++ dso, idx); + } + } +- else if (line_strp +- ? need_line_strp_update : need_strp_update) /* && phase == 1 */ ++ else if ((form == DW_FORM_strp ++ || form == DW_FORM_line_strp) /* DW_FORM_strx stays the same. */ ++ && (form == DW_FORM_line_strp ++ ? need_line_strp_update : need_strp_update)) /* && phase == 1 */ + { + struct stridxentry *entry; + size_t idx, new_idx; +- struct strings *strings = (line_strp ++ struct strings *strings = (form == DW_FORM_line_strp + ? &dso->debug_line_str : &dso->debug_str); + idx = do_read_32_relocated (ptr); + entry = string_find_entry (strings, idx); +@@ -1926,9 +2006,10 @@ read_dwarf5_line_entries (DSO *dso, unsigned char **ptrp, + + switch (form) + { ++ /* Note we don't expect DW_FORM_strx in the line table. */ + case DW_FORM_strp: + case DW_FORM_line_strp: +- edit_strp (dso, line_strp, *ptrp, phase, handled_strp); ++ edit_strp (dso, form, *ptrp, phase, handled_strp); + break; + } + +@@ -2110,11 +2191,12 @@ find_new_list_offs (struct debug_lines *lines, size_t idx) + + /* Read DW_FORM_strp or DW_FORM_line_strp collecting compilation directory. */ + static void +-edit_attributes_str_comp_dir (bool line_strp, DSO *dso, unsigned char **ptrp, ++edit_attributes_str_comp_dir (uint32_t form, DSO *dso, unsigned char **ptrp, + int phase, char **comp_dirp, bool *handled_strpp) + { + const char *dir; +- size_t idx = do_read_32_relocated (*ptrp); ++ size_t idx = do_read_str_form_relocated (dso, form, *ptrp); ++ bool line_strp = form == DW_FORM_line_strp; + /* In phase zero we collect the comp_dir. */ + if (phase == 0) + { +@@ -2245,20 +2327,29 @@ edit_attributes (DSO *dso, unsigned char *ptr, struct abbrev_tag *t, int phase) + } + } + } +- else if (form == DW_FORM_strp) +- edit_attributes_str_comp_dir (false /* line_strp */, dso, ++ else if (form == DW_FORM_strp ++ || form == DW_FORM_line_strp ++ || form == DW_FORM_strx ++ || form == DW_FORM_strx1 ++ || form == DW_FORM_strx2 ++ || form == DW_FORM_strx3 ++ || form == DW_FORM_strx4) ++ edit_attributes_str_comp_dir (form, dso, + &ptr, phase, &comp_dir, + &handled_strp); +- else if (form == DW_FORM_line_strp) +- edit_attributes_str_comp_dir (true /* line_strp */, dso, &ptr, +- phase, &comp_dir, &handled_strp); + } + else if ((t->tag == DW_TAG_compile_unit + || t->tag == DW_TAG_partial_unit) + && ((form == DW_FORM_strp + && debug_sections[DEBUG_STR].data) + || (form == DW_FORM_line_strp +- && debug_sections[DEBUG_LINE_STR].data)) ++ && debug_sections[DEBUG_LINE_STR].data) ++ || ((form == DW_FORM_strx ++ || form == DW_FORM_strx1 ++ || form == DW_FORM_strx2 ++ || form == DW_FORM_strx3 ++ || form == DW_FORM_strx4) ++ && debug_sections[DEBUG_STR_OFFSETS].data)) + && t->attr[i].attr == DW_AT_name) + { + bool line_strp = form == DW_FORM_line_strp; +@@ -2267,7 +2358,7 @@ edit_attributes (DSO *dso, unsigned char *ptr, struct abbrev_tag *t, int phase) + unit. If starting with / it is a full path name. + Note that we don't handle DW_FORM_string in this + case. */ +- size_t idx = do_read_32_relocated (ptr); ++ size_t idx = do_read_str_form_relocated (dso, form, ptr); + + /* In phase zero we will look for a comp_dir to use. */ + if (phase == 0) +@@ -2314,10 +2405,13 @@ edit_attributes (DSO *dso, unsigned char *ptr, struct abbrev_tag *t, int phase) + switch (form) + { + case DW_FORM_strp: +- edit_strp (dso, false /* line_strp */, ptr, phase, handled_strp); +- break; + case DW_FORM_line_strp: +- edit_strp (dso, true /* line_strp */, ptr, phase, handled_strp); ++ case DW_FORM_strx: ++ case DW_FORM_strx1: ++ case DW_FORM_strx2: ++ case DW_FORM_strx3: ++ case DW_FORM_strx4: ++ edit_strp (dso, form, ptr, phase, handled_strp); + break; + } + +@@ -2404,6 +2498,8 @@ edit_info (DSO *dso, int phase, struct debug_section *sec) + uint32_t value; + htab_t abbrev; + struct abbrev_tag tag, *t; ++ int i; ++ bool first; + + ptr = sec->data; + if (ptr == NULL) +@@ -2507,6 +2603,8 @@ edit_info (DSO *dso, int phase, struct debug_section *sec) + if (abbrev == NULL) + return 1; + ++ first = true; ++ str_offsets_base = 0; + while (ptr < endcu) + { + tag.entry = read_uleb128 (ptr); +@@ -2521,6 +2619,30 @@ edit_info (DSO *dso, int phase, struct debug_section *sec) + return 1; + } + ++ /* We need str_offsets_base before processing the CU. */ ++ if (first) ++ { ++ first = false; ++ if (cu_version >= 5) ++ { ++ uint32_t form; ++ unsigned char *fptr = ptr; ++ // We will read this DIE again, save and reset rel reading ++ REL *old_relptr = relptr; ++ for (i = 0; i < t->nattr; ++i) ++ { ++ form = t->attr[i].form; ++ if (t->attr[i].attr == DW_AT_str_offsets_base) ++ { ++ str_offsets_base = do_read_32_relocated (fptr); ++ break; ++ } ++ skip_form (dso, &form, &fptr); ++ } ++ // Reset the rel reading... ++ relptr = old_relptr; ++ } ++ } + ptr = edit_attributes (dso, ptr, t, phase); + if (ptr == NULL) + break; +@@ -2554,6 +2676,41 @@ edit_dwarf2_any_str (DSO *dso, struct strings *strings, debug_section *secp) + strings->str_buf = strdata->d_buf; + } + ++/* Rebuild .debug_str_offsets. */ ++static void ++update_str_offsets (DSO *dso) ++{ ++ unsigned char *ptr = debug_sections[DEBUG_STR_OFFSETS].data; ++ unsigned char *endp = ptr + debug_sections[DEBUG_STR_OFFSETS].size; ++ ++ while (ptr < endp) ++ { ++ /* Read header, unit_length, version and padding. */ ++ if (endp - ptr < 3 * 4) ++ break; ++ uint32_t unit_length = read_32 (ptr); ++ if (unit_length == 0xffffffff || endp - ptr < unit_length) ++ break; ++ unsigned char *endidxp = ptr + unit_length; ++ uint32_t version = read_32 (ptr); ++ if (version != 5) ++ break; ++ uint32_t padding = read_32 (ptr); ++ if (padding != 0) ++ break; ++ ++ while (ptr < endidxp) ++ { ++ struct stridxentry *entry; ++ size_t idx, new_idx; ++ idx = do_read_32_relocated (ptr); ++ entry = string_find_entry (&dso->debug_str, idx); ++ new_idx = strent_offset (entry->entry); ++ write_32_relocated (ptr, new_idx); ++ } ++ } ++} ++ + static int + edit_dwarf2 (DSO *dso) + { +@@ -2675,6 +2832,7 @@ edit_dwarf2 (DSO *dso) + if (dso->ehdr.e_ident[EI_DATA] == ELFDATA2LSB) + { + do_read_16 = buf_read_ule16; ++ do_read_24 = buf_read_ule24; + do_read_32 = buf_read_ule32; + do_write_16 = dwarf2_write_le16; + do_write_32 = dwarf2_write_le32; +@@ -2682,6 +2840,7 @@ edit_dwarf2 (DSO *dso) + else if (dso->ehdr.e_ident[EI_DATA] == ELFDATA2MSB) + { + do_read_16 = buf_read_ube16; ++ do_read_24 = buf_read_ube24; + do_read_32 = buf_read_ube32; + do_write_16 = dwarf2_write_be16; + do_write_32 = dwarf2_write_be32; +@@ -2997,6 +3156,15 @@ edit_dwarf2 (DSO *dso) + dirty_section (DEBUG_MACRO); + if (need_stmt_update || need_line_strp_update) + dirty_section (DEBUG_LINE); ++ if (need_strp_update && debug_sections[DEBUG_STR_OFFSETS].data != NULL) ++ { ++ setup_relbuf(dso, &debug_sections[DEBUG_STR_OFFSETS], &reltype); ++ rel_updated = false; ++ update_str_offsets (dso); ++ dirty_section (DEBUG_STR_OFFSETS); ++ if (rel_updated) ++ update_rela_data (dso, &debug_sections[DEBUG_STR_OFFSETS]); ++ } + + /* Update any relocations addends we might have touched. */ + if (info_rel_updated) +-- +2.42.0 + diff --git a/SOURCES/0002-scripts-find-debuginfo.in-Add-q-quiet.patch b/SOURCES/0002-scripts-find-debuginfo.in-Add-q-quiet.patch new file mode 100644 index 0000000..e2b0552 --- /dev/null +++ b/SOURCES/0002-scripts-find-debuginfo.in-Add-q-quiet.patch @@ -0,0 +1,116 @@ +From b8ac71d9f88202f00a32c5a8b3b4b93bb2fa110a Mon Sep 17 00:00:00 2001 +From: Prarit Bhargava +Date: Thu, 26 Jan 2023 16:08:57 -0500 +Subject: [PATCH] scripts/find-debuginfo.in: Add -q|--quiet + +Projects with a large number of compiled files end up with a large number +of 'extracting debug info from' messages in the build log. In the case of +the Fedora kernel these messages account for 8504 lines in the log, or 61% +of the entire log [1]. + +Removing these lines make the log easier to view and comprehend for some +projects, however, not all projects will want to silence these messages so +suppressing them must be optional. + +Add a -q|--quiet which allows users to silence the non-error output from +the script. + +[1] https://kojipkgs.fedoraproject.org//packages/kernel/6.2.0/0.rc5.20230123git2475bf0250de.38.fc38/data/logs/x86_64/build.log + +Signed-off-by: Prarit Bhargava +--- + scripts/find-debuginfo.in | 22 +++++++++++++++------- + 1 file changed, 15 insertions(+), 7 deletions(-) + +diff --git a/scripts/find-debuginfo.in b/scripts/find-debuginfo.in +index 8090c84..7dec3c3 100755 +--- a/scripts/find-debuginfo.in ++++ b/scripts/find-debuginfo.in +@@ -26,7 +26,7 @@ Usage: find-debuginfo [OPTION]... [builddir] + automagically generates debug info and file lists + + Options: +-[--strict-build-id] [-g] [-r] [-m] [-i] [-n] ++[--strict-build-id] [-g] [-r] [-m] [-i] [-n] [-q] + [--keep-section SECTION] [--remove-section SECTION] + [--g-libs] + [-j N] [--jobs N] +@@ -94,6 +94,8 @@ will be called /usr/debug/src/. This makes sure the debug source + dirs are unique between package version, release and achitecture (Use + --unique-debug-src-base "%{name}-%{VERSION}-%{RELEASE}.%{_arch}") + ++The -q or --quiet flag silences non-error output from the script. ++ + All file names in switches are relative to builddir ('.' if not given). + EOF + } +@@ -146,6 +148,9 @@ n_jobs=1 + # exit early on --version or --help + done=false + ++# silence non-error output ++quiet=false ++ + BUILDDIR=. + out=debugfiles.list + srcout= +@@ -239,6 +244,9 @@ while [ $# -gt 0 ]; do + srcout=$2 + shift + ;; ++ -q|--quiet) ++ quiet=true ++ ;; + --version) + echo "find-debuginfo @VERSION@" + done=true; +@@ -437,7 +445,7 @@ do_file() + get_debugfn "$f" + [ -f "${debugfn}" ] && return + +- echo "extracting debug info from $f" ++ $quiet || echo "extracting debug info from $f" + # See also cpio SOURCEFILE copy. Directories must match up. + debug_base_name="$RPM_BUILD_DIR" + debug_dest_name="/usr/src/debug" +@@ -513,7 +521,7 @@ do_file() + grep "^$inum " "$temp/linked" | while read inum linked; do + link=$debugfn + get_debugfn "$linked" +- echo "hard linked $link to $debugfn" ++ $quiet || echo "hard linked $link to $debugfn" + mkdir -p "$(dirname "$debugfn")" && ln -nf "$link" "$debugfn" + done + fi +@@ -576,7 +584,7 @@ if $run_dwz \ + && [ -d "${RPM_BUILD_ROOT}/usr/lib/debug" ]; then + readarray dwz_files < <(cd "${RPM_BUILD_ROOT}/usr/lib/debug"; find -type f -name \*.debug | LC_ALL=C sort) + if [ ${#dwz_files[@]} -gt 0 ]; then +- size_before=$(du -sk ${RPM_BUILD_ROOT}/usr/lib/debug | cut -f1) ++ $quiet || size_before=$(du -sk ${RPM_BUILD_ROOT}/usr/lib/debug | cut -f1) + dwz_multifile_name="${RPM_PACKAGE_NAME}-${RPM_PACKAGE_VERSION}-${RPM_PACKAGE_RELEASE}.${RPM_ARCH}" + dwz_multifile_suffix= + dwz_multifile_idx=0 +@@ -600,8 +608,8 @@ if $run_dwz \ + echo >&2 "*** ERROR: DWARF compression requested, but no dwz installed" + exit 2 + fi +- size_after=$(du -sk ${RPM_BUILD_ROOT}/usr/lib/debug | cut -f1) +- echo "original debug info size: ${size_before}kB, size after compression: ${size_after}kB" ++ $quiet || size_after=$(du -sk ${RPM_BUILD_ROOT}/usr/lib/debug | cut -f1) ++ $quiet || echo "original debug info size: ${size_before}kB, size after compression: ${size_after}kB" + # Remove .dwz directory if empty + rmdir "${RPM_BUILD_ROOT}/usr/lib/debug/.dwz" 2>/dev/null + +@@ -621,7 +629,7 @@ do + f=${f#$RPM_BUILD_ROOT} + t=${t#$RPM_BUILD_ROOT} + if [ -f "$debugdir$t" ]; then +- echo "symlinked /usr/lib/debug$t to /usr/lib/debug${f}.debug" ++ $quiet || echo "symlinked /usr/lib/debug$t to /usr/lib/debug${f}.debug" + debug_link "/usr/lib/debug$t" "${f}.debug" + fi + done +-- +2.39.1 + diff --git a/SOURCES/debugedit-5.0.tar.xz.sig b/SOURCES/debugedit-5.0.tar.xz.sig deleted file mode 100644 index ee8c7be7faa6fa8e41dd49af381755fae48fc91d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 310 zcmV-60m=S}0W$;u0SEvc79j)@c8ZpHS&$HV4KLsPSL4jA*_wC-0$~3@B>)Nu5d2r; z%&gg(csU6N|7oJ<+IM~{BVe4G`PRHX?9D}Pp|9lMKdnN|zg8u*|KSVveef(pJRt2& zrS$GJYd~R`-u#+Rx?k5XOF6j8QR@p(Kc?84el=P*KGbPaMl)~Rs_+D#eV9%N!4*Z& zxD_nC$|$jU5~DinRn+_IIP zt|(`9jTPCk_W4(y$;yge*Tbe0PMYFozLFm@TR#Ws?M=CLNGD?>+%trzE1%v0^|pA2 zXsL-c$^Y49?;mnxq0|~S?yzDkh~5c+*#ah84GRy1;DWutV_BZ - 5.0-5 +- Add 0001-debugedit-Add-support-for-.debug_str_offsets-DW_FORM.patch + +* Tue Mar 28 2023 Mark Wielaard - 5.0-4 +- Add 0002-scripts-find-debuginfo.in-Add-q-quiet.patch + * Mon Aug 09 2021 Mohan Boddu - 5.0-3 - Rebuilt for IMA sigs, glibc 2.34, aarch64 flags Related: rhbz#1991688