From 3e9be17709ab089d4650a2e3e42a9b92d7286b62 Mon Sep 17 00:00:00 2001 From: MSVSphere Packaging Team Date: Fri, 22 Sep 2023 16:15:35 +0300 Subject: [PATCH] import debugedit-5.0-4.el9 --- .debugedit.metadata | 3 + .gitignore | 3 + ...o-directory-entry-in-.debug_line-DWA.patch | 130 ++++++++++++++++++ ...cripts-find-debuginfo.in-Add-q-quiet.patch | 116 ++++++++++++++++ SPECS/debugedit.spec | 121 ++++++++++++++++ 5 files changed, 373 insertions(+) create mode 100644 .debugedit.metadata create mode 100644 .gitignore create mode 100644 SOURCES/0001-tests-Handle-zero-directory-entry-in-.debug_line-DWA.patch create mode 100644 SOURCES/0002-scripts-find-debuginfo.in-Add-q-quiet.patch create mode 100644 SPECS/debugedit.spec diff --git a/.debugedit.metadata b/.debugedit.metadata new file mode 100644 index 0000000..6e8cf87 --- /dev/null +++ b/.debugedit.metadata @@ -0,0 +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 new file mode 100644 index 0000000..2e43dad --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +SOURCES/debugedit-5.0.tar.xz +SOURCES/debugedit-5.0.tar.xz.sig +SOURCES/gpgkey-5C1D1AA44BE649DE760A.gpg diff --git a/SOURCES/0001-tests-Handle-zero-directory-entry-in-.debug_line-DWA.patch b/SOURCES/0001-tests-Handle-zero-directory-entry-in-.debug_line-DWA.patch new file mode 100644 index 0000000..2cadab2 --- /dev/null +++ b/SOURCES/0001-tests-Handle-zero-directory-entry-in-.debug_line-DWA.patch @@ -0,0 +1,130 @@ +From ae27211cbbfb63a0ad3c141cd1310d7f583ec40e Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Fri, 30 Jul 2021 18:09:46 +0200 +Subject: [PATCH] tests: Handle zero directory entry in .debug_line DWARF5 + debugedit.at + +We were skipping the zero directory entry, because it was always +the same as the directory entry at position one. But that isn't +true anymore with gcc 11.2.1. There the zero dir entry is unique. +Fix the debugedit.at .debug_line testcases using DWARF5 to also +include dir entry zero. + +Signed-off-by: Mark Wielaard +--- + configure.ac | 14 ++++++++++++++ + tests/atlocal.in | 1 + + tests/debugedit.at | 18 ++++++++++++------ + 3 files changed, 27 insertions(+), 6 deletions(-) + +diff --git a/configure.ac b/configure.ac +index e5c9230..6a53365 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -87,6 +87,20 @@ CFLAGS="$save_CFLAGS" + GDWARF_5_FLAG=$ac_cv_gdwarf_5 + AC_SUBST([GDWARF_5_FLAG]) + ++AC_CACHE_CHECK([whether -gdwarf-5 produced DWARF5 .debug_line], ac_cv_dwarf_5_debugline, [dnl ++save_CFLAGS="$CFLAGS" ++CFLAGS="-gdwarf-5" ++AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int i=0;]],[[/* empty main */]])], ++ [if readelf --debug-dump=line conftest.o 2>&1 | \ ++ grep "DWARF Version:" 2>&1 | grep "5" > /dev/null 2>&1; \ ++ then ac_cv_dwarf_5_debugline=yes; \ ++ else ac_cv_dwarf_5_debugline=no; fi], ++ ac_cv_dwarf_5_debugline=no) ++CFLAGS="$save_CFLAGS" ++]) ++DWARF_5_DEBUGLINE=$ac_cv_dwarf_5_debugline ++AC_SUBST([DWARF_5_DEBUGLINE]) ++ + AC_CACHE_CHECK([whether gcc supports -gz=none], ac_cv_gz_none, [dnl + save_CFLAGS="$CFLAGS" + CFLAGS="-gz=none" +diff --git a/tests/atlocal.in b/tests/atlocal.in +index 8399f8d..d916301 100644 +--- a/tests/atlocal.in ++++ b/tests/atlocal.in +@@ -13,3 +13,4 @@ READELF="@READELF@" + + GDWARF_5_FLAG=@GDWARF_5_FLAG@ + GZ_NONE_FLAG=@GZ_NONE_FLAG@ ++DWARF_5_DEBUGLINE=@DWARF_5_DEBUGLINE@ +diff --git a/tests/debugedit.at b/tests/debugedit.at +index 0311d26..725e68e 100644 +--- a/tests/debugedit.at ++++ b/tests/debugedit.at +@@ -488,10 +488,12 @@ AT_CLEANUP + AT_SETUP([debugedit .debug_line objects DWARF5]) + AT_KEYWORDS([debuginfo] [debugedit]) + AT_SKIP_IF([test "$GDWARF_5_FLAG" = "no"]) ++AT_SKIP_IF([test "$DWARF_5_DEBUGLINE" = "no"]) + DEBUGEDIT_SETUP([-gdwarf-5]) + + AT_DATA([expout], + [foo/bar/baz ++foo/bar/baz/subdir_bar + foo/bar/baz/subdir_headers + ]) + +@@ -500,8 +502,8 @@ AT_CHECK([[debugedit -b $(pwd) -d /foo/bar/baz ./subdir_bar/bar.o]]) + AT_CHECK([[debugedit -b $(pwd) -d /foo/bar/baz ./baz.o]]) + AT_CHECK([[ + readelf --debug-dump=line foo.o subdir_bar/bar.o baz.o \ +- | grep -A5 "The Directory Table" | grep "^ [123]" \ +- | cut -f2- -d/ | grep ^foo/ | sort ++ | grep -A5 "The Directory Table" | grep "^ [0123]" \ ++ | cut -f2- -d/ | grep ^foo/ | sort -u + ]],[0],[expout]) + + AT_CLEANUP +@@ -535,18 +537,20 @@ AT_CLEANUP + AT_SETUP([debugedit .debug_line partial DWARF5]) + AT_KEYWORDS([debuginfo] [debugedit]) + AT_SKIP_IF([test "$GDWARF_5_FLAG" = "no"]) ++AT_SKIP_IF([test "$DWARF_5_DEBUGLINE" = "no"]) + DEBUGEDIT_SETUP([-gdwarf-5]) + + AT_DATA([expout], + [foo/bar/baz ++foo/bar/baz/subdir_bar + foo/bar/baz/subdir_headers + ]) + + AT_CHECK([[debugedit -b $(pwd) -d /foo/bar/baz ./foobarbaz.part.o]]) + AT_CHECK([[ + readelf --debug-dump=line ./foobarbaz.part.o \ +- | grep -A5 "The Directory Table" | grep "^ [123]" \ +- | cut -f2- -d/ | grep ^foo/ | sort ++ | grep -A5 "The Directory Table" | grep "^ [0123]" \ ++ | cut -f2- -d/ | grep ^foo/ | sort -u + ]],[0],[expout]) + + AT_CLEANUP +@@ -580,18 +584,20 @@ AT_CLEANUP + AT_SETUP([debugedit .debug_line exe DWARF5]) + AT_KEYWORDS([debuginfo] [debugedit]) + AT_SKIP_IF([test "$GDWARF_5_FLAG" = "no"]) ++AT_SKIP_IF([test "$DWARF_5_DEBUGLINE" = "no"]) + DEBUGEDIT_SETUP([-gdwarf-5]) + + AT_DATA([expout], + [foo/bar/baz ++foo/bar/baz/subdir_bar + foo/bar/baz/subdir_headers + ]) + + AT_CHECK([[debugedit -b $(pwd) -d /foo/bar/baz ./foobarbaz.exe]]) + AT_CHECK([[ + readelf --debug-dump=line ./foobarbaz.exe \ +- | grep -A5 "The Directory Table" | grep "^ [123]" \ +- | cut -f2- -d/ | grep ^foo/ | sort ++ | grep -A5 "The Directory Table" | grep "^ [0123]" \ ++ | cut -f2- -d/ | grep ^foo/ | sort -u + ]],[0],[expout]) + + AT_CLEANUP +-- +2.27.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/SPECS/debugedit.spec b/SPECS/debugedit.spec new file mode 100644 index 0000000..fb035d7 --- /dev/null +++ b/SPECS/debugedit.spec @@ -0,0 +1,121 @@ +Name: debugedit +Version: 5.0 +Release: 4%{?dist} +Summary: Tools for debuginfo creation +License: GPLv3+ and GPLv2+ and LGPLv2+ +URL: https://sourceware.org/debugedit/ +Source0: https://sourceware.org/pub/debugedit/%{version}/%{name}-%{version}.tar.xz +Source1: https://sourceware.org/pub/debugedit/%{version}/%{name}-%{version}.tar.xz.sig +Source2: gpgkey-5C1D1AA44BE649DE760A.gpg + +BuildRequires: make gcc +BuildRequires: pkgconfig(libelf) +BuildRequires: pkgconfig(libdw) +BuildRequires: help2man +BuildRequires: gnupg2 + +# For the testsuite. +BuildRequires: autoconf +BuildRequires: automake + +# The find-debuginfo.sh script has a couple of tools it needs at runtime. +# For strip_to_debug, eu-strip +Requires: elfutils +# For add_minidebug, readelf, awk, nm, sort, comm, objcopy, xz +Requires: binutils, gawk, coreutils, xz +# For find and xargs +Requires: findutils +# For do_file, gdb_add_index +# We only need gdb-add-index, so suggest gdb-minimal (full gdb is also ok) +Requires: /usr/bin/gdb-add-index +Suggests: gdb-minimal +# For run_job, sed +Requires: sed +# For dwz +Requires: dwz +# For append_uniq, grep +Requires: grep + +%global _hardened_build 1 + +Patch1: 0001-tests-Handle-zero-directory-entry-in-.debug_line-DWA.patch +Patch2: 0002-scripts-find-debuginfo.in-Add-q-quiet.patch + +%description +The debugedit project provides programs and scripts for creating +debuginfo and source file distributions, collect build-ids and rewrite +source paths in DWARF data for debugging, tracing and profiling. + +It is based on code originally from the rpm project plus libiberty and +binutils. It depends on the elfutils libelf and libdw libraries to +read and write ELF files, DWARF data and build-ids. + +%prep +%{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}' +%autosetup -p1 + +%build +autoreconf -f -v -i +%configure +%make_build + +%install +%make_install +# Temp symlink to make sure things don't break. +cd %{buildroot}%{_bindir} +ln -s find-debuginfo find-debuginfo.sh + +%check +# The testsuite should be zero fail. +# It uses its own CFLAGS and LDFLAGS settings. +sed -i 's/^\(C\|LD\)FLAGS=.*/\1FLAGS=""/' tests/atlocal +make check %{?_smp_mflags} + +%files +%license COPYING COPYING3 COPYING.LIB +%doc README +%{_bindir}/debugedit +%{_bindir}/sepdebugcrcfix +%{_bindir}/find-debuginfo +%{_bindir}/find-debuginfo.sh +%{_mandir}/man1/debugedit.1* +%{_mandir}/man1/sepdebugcrcfix.1* +%{_mandir}/man1/find-debuginfo.1* + +%changelog +* Fri Sep 22 2023 MSVSphere Packaging Team - 5.0-4 +- Rebuilt for MSVSphere 9.3 beta + +* 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 + +* Tue Aug 3 2021 Mark Wielaard - 5.0-2 +- Add testsuite fix for GCC 11.2.1 + +* Mon Jul 26 2021 Mark Wielaard - 5.0-1 +- Upgrade to upstream 5.0 release. + - Removes find-debuginfo .sh suffix. + - This release still has a find-debuginfo.sh -> find-debuginfo symlink. + +* Wed May 5 2021 Mark Wielaard - 0.2-1 +- Update to upstream 0.2 pre-release. Adds documentation. + +* Wed Apr 28 2021 Mark Wielaard - 0.1-5 +- Add dist to Release. Use file dependency for /usr/bin/gdb-add-index. + +* Tue Apr 27 2021 Mark Wielaard - 0.1-4 +- Use numbered Sources and https. + +* Mon Apr 26 2021 Mark Wielaard - 0.1-3 +- Fix some rpmlint issues, add comments, add license and doc, + gpg verification, use pkgconfig BuildRequires, enable _hardened_build + +* Mon Mar 29 2021 Panu Matilainen +- Add pile of missing runtime utility dependencies + +* Tue Mar 23 2021 Panu Matilainen +- Initial packaging