diff --git a/debugedit-5.0.tar.xz b/debugedit-5.0.tar.xz new file mode 100644 index 0000000..2d55407 Binary files /dev/null and b/debugedit-5.0.tar.xz differ diff --git a/debugedit-5.0.tar.xz.sig b/debugedit-5.0.tar.xz.sig new file mode 100644 index 0000000..ee8c7be Binary files /dev/null and b/debugedit-5.0.tar.xz.sig differ diff --git a/debugedit.spec b/debugedit.spec new file mode 100644 index 0000000..6c19387 --- /dev/null +++ b/debugedit.spec @@ -0,0 +1,59 @@ +Name: debugedit +Version: 5.0 +Release: 1 +Summary: Tools for debuginfo creation +License: GPL-2.0-or-later and LGPL-2.1-only and GPL-3.0-only +Group: Applications +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 + +BuildRequires: help2man gnupg2 elfutils-devel make gcc autoconf automake +BuildRequires: pkgconfig(libelf) +BuildRequires: pkgconfig(libdw) + +Requires: binutils gawk coreutils xz elfutils findutils +Requires: /usr/bin/gdb-add-index +Suggests: gdb-minimal +Requires: sed dwz grep + +Patch0: tests-Handle-zero-directory-entry-in-.debug_line-DWA.patch + +%description +Debugedit 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. + +%prep +%autosetup -p1 + +%build +autoreconf -f -v -i +%configure +%make_build + +%install +%make_install +cd %{buildroot}%{_bindir} +ln -s find-debuginfo find-debuginfo.sh + +%check +sed -i 's/^\(C\|LD\)FLAGS=.*/\1FLAGS=""/' tests/atlocal +make check %{?_smp_mflags} + +%clean + +%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 +* Sat Dec 25 2021 renhongxun +- init package diff --git a/tests-Handle-zero-directory-entry-in-.debug_line-DWA.patch b/tests-Handle-zero-directory-entry-in-.debug_line-DWA.patch new file mode 100644 index 0000000..2cadab2 --- /dev/null +++ b/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 +