Toshaan Bharvani
11 months ago
commit
0fc747cd22
4 changed files with 364 additions and 0 deletions
@ -0,0 +1,130 @@
@@ -0,0 +1,130 @@
|
||||
From ae27211cbbfb63a0ad3c141cd1310d7f583ec40e Mon Sep 17 00:00:00 2001 |
||||
From: Mark Wielaard <mark@klomp.org> |
||||
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 <mark@klomp.org> |
||||
--- |
||||
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 |
||||
|
@ -0,0 +1,116 @@
@@ -0,0 +1,116 @@
|
||||
From b8ac71d9f88202f00a32c5a8b3b4b93bb2fa110a Mon Sep 17 00:00:00 2001 |
||||
From: Prarit Bhargava <prarit@redhat.com> |
||||
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 <prarit@redhat.com> |
||||
--- |
||||
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/<BASE>. 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 |
||||
|
Binary file not shown.
@ -0,0 +1,118 @@
@@ -0,0 +1,118 @@
|
||||
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 |
||||
* Tue Mar 28 2023 Mark Wielaard <mjw@redhat.com> - 5.0-4 |
||||
- Add 0002-scripts-find-debuginfo.in-Add-q-quiet.patch |
||||
|
||||
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 5.0-3 |
||||
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags |
||||
Related: rhbz#1991688 |
||||
|
||||
* Tue Aug 3 2021 Mark Wielaard <mjw@redhat.com> - 5.0-2 |
||||
- Add testsuite fix for GCC 11.2.1 |
||||
|
||||
* Mon Jul 26 2021 Mark Wielaard <mjw@redhat.com> - 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 <mjw@fedoraproject.org> - 0.2-1 |
||||
- Update to upstream 0.2 pre-release. Adds documentation. |
||||
|
||||
* Wed Apr 28 2021 Mark Wielaard <mjw@fedoraproject.org> - 0.1-5 |
||||
- Add dist to Release. Use file dependency for /usr/bin/gdb-add-index. |
||||
|
||||
* Tue Apr 27 2021 Mark Wielaard <mjw@fedoraproject.org> - 0.1-4 |
||||
- Use numbered Sources and https. |
||||
|
||||
* Mon Apr 26 2021 Mark Wielaard <mjw@fedoraproject.org> - 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 <pmatilai@redhat.com> |
||||
- Add pile of missing runtime utility dependencies |
||||
|
||||
* Tue Mar 23 2021 Panu Matilainen <pmatilai@redhat.com> |
||||
- Initial packaging |
Loading…
Reference in new issue