5.1-8 - Add 0001-Add-basic-find-debuginfo-script-tests.patch
Resolves: #RHEL-98664 Add find-debuginfo.at testcases to debugedit [rhel-10]
This commit is contained in:
parent
db8e7fbb4c
commit
a48cbb385f
434
0001-Add-basic-find-debuginfo-script-tests.patch
Normal file
434
0001-Add-basic-find-debuginfo-script-tests.patch
Normal file
@ -0,0 +1,434 @@
|
||||
From f1cdc73f78a2f9b6499b4a5462485a873d9620af Mon Sep 17 00:00:00 2001
|
||||
From: Mark Wielaard <mark@klomp.org>
|
||||
Date: Thu, 12 Jun 2025 23:27:50 +0200
|
||||
Subject: [PATCH] Add basic find-debuginfo script tests
|
||||
|
||||
Covers basic find-debuginfo script functionality. Checks .debug files
|
||||
are generated by eu-strip, .gnu_debugdata is generated, .gdb_index is
|
||||
added by gdb-add-index, dwz multi file is created and all debugsources
|
||||
are found, also does parallel runs. Skips dwz testing if .debug_addr
|
||||
is generated (since dwz currently doesn't handle that).
|
||||
|
||||
* configure.ac: Check whether -gdwarf-5 produced DWARF5 .debug_addr.
|
||||
* tests/atlocal.in: Add DWARF_5_DEBUGADDR.
|
||||
* tests/Makefile.am (TESTSUITE_AT): Add find-debuginfo.at.
|
||||
* tests/testsuite.at: m4_include find-debuginfo.at.
|
||||
* tests/find-debuginfo.at: New test file.
|
||||
|
||||
Signed-off-by: Mark Wielaard <mark@klomp.org>
|
||||
---
|
||||
configure.ac | 13 ++
|
||||
tests/Makefile.am | 3 +-
|
||||
tests/atlocal.in | 1 +
|
||||
tests/find-debuginfo.at | 341 ++++++++++++++++++++++++++++++++++++++++
|
||||
tests/testsuite.at | 1 +
|
||||
5 files changed, 358 insertions(+), 1 deletion(-)
|
||||
create mode 100644 tests/find-debuginfo.at
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index ad4d70c63995..e48fa828c9db 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -125,6 +125,19 @@ CFLAGS="$save_CFLAGS"
|
||||
DWARF_5_DEBUGLINE=$ac_cv_dwarf_5_debugline
|
||||
AC_SUBST([DWARF_5_DEBUGLINE])
|
||||
|
||||
+AC_CACHE_CHECK([whether -gdwarf-5 produced DWARF5 .debug_addr], ac_cv_dwarf_5_debugaddr, [dnl
|
||||
+save_CFLAGS="$CFLAGS"
|
||||
+CFLAGS="-gdwarf-5"
|
||||
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int i=0;]],[[/* empty main */]])],
|
||||
+ [if $READELF -S conftest.o 2>&1 | grep -F ".debug_addr" > /dev/null 2>&1; \
|
||||
+ then ac_cv_dwarf_5_debugaddr=yes; \
|
||||
+ else ac_cv_dwarf_5_debugaddr=no; fi],
|
||||
+ ac_cv_dwarf_5_debugaddr=no)
|
||||
+CFLAGS="$save_CFLAGS"
|
||||
+])
|
||||
+DWARF_5_DEBUGADDR=$ac_cv_dwarf_5_debugaddr
|
||||
+AC_SUBST([DWARF_5_DEBUGADDR])
|
||||
+
|
||||
AC_CACHE_CHECK([whether gcc supports -gz=none], ac_cv_gz_none, [dnl
|
||||
save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="-gz=none"
|
||||
diff --git a/tests/Makefile.am b/tests/Makefile.am
|
||||
index b1d39f4ac1fc..7fab084f31f2 100644
|
||||
--- a/tests/Makefile.am
|
||||
+++ b/tests/Makefile.am
|
||||
@@ -32,7 +32,8 @@ $(srcdir)/package.m4: $(top_srcdir)/configure.ac
|
||||
# The tests
|
||||
TESTSUITE_AT = \
|
||||
testsuite.at \
|
||||
- debugedit.at
|
||||
+ debugedit.at \
|
||||
+ find-debuginfo.at
|
||||
|
||||
# Some source files that are needed by the tests
|
||||
EXTRA_DIST += data/SOURCES/foo.c \
|
||||
diff --git a/tests/atlocal.in b/tests/atlocal.in
|
||||
index 9da28786ba26..e9bd31fe3f13 100644
|
||||
--- a/tests/atlocal.in
|
||||
+++ b/tests/atlocal.in
|
||||
@@ -16,4 +16,5 @@ GDWARF_5_FLAG=@GDWARF_5_FLAG@
|
||||
GZ_NONE_FLAG=@GZ_NONE_FLAG@
|
||||
GZ_ZLIB_FLAG=@GZ_ZLIB_FLAG@
|
||||
DWARF_5_DEBUGLINE=@DWARF_5_DEBUGLINE@
|
||||
+DWARF_5_DEBUGADDR=@DWARF_5_DEBUGADDR@
|
||||
DEBUG_MACRO_FLAG=@DEBUG_MACRO_FLAG@
|
||||
diff --git a/tests/find-debuginfo.at b/tests/find-debuginfo.at
|
||||
new file mode 100644
|
||||
index 000000000000..d6f6ae9ee07a
|
||||
--- /dev/null
|
||||
+++ b/tests/find-debuginfo.at
|
||||
@@ -0,0 +1,341 @@
|
||||
+# find-debuginfo.at: Tests for the find-debuginfo script
|
||||
+#
|
||||
+# Copyright (C) 2025 Red Hat Inc.
|
||||
+# Copyright (C) 2025 Mark J. Wielaard <mark@klomp.org>
|
||||
+#
|
||||
+# This program is free software; you can redistribute it and/or modify
|
||||
+# it under the terms of the GNU General Public License as published by
|
||||
+# the Free Software Foundation; either version 2 of the License, or
|
||||
+# (at your option) any later version.
|
||||
+#
|
||||
+# This program is distributed in the hope that it will be useful,
|
||||
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+# GNU General Public License for more details.
|
||||
+#
|
||||
+# You should have received a copy of the GNU General Public License
|
||||
+# along with this program; if not, see see <http://www.gnu.org/licenses/>.
|
||||
+
|
||||
+# Tests for scripts/find-debuginfo.in
|
||||
+AT_BANNER([find-debuginfo])
|
||||
+
|
||||
+# Show which find-debuginfo script we are testing
|
||||
+AT_TESTED([find-debuginfo])
|
||||
+
|
||||
+# Helper to create some test binaries
|
||||
+m4_define([FIND_DEBUGINFO_PKG_BUILD_SETUP],[[
|
||||
+mkdir subdir_build
|
||||
+cp "${abs_srcdir}"/data/SOURCES/foo.c subdir_build
|
||||
+cp "${abs_srcdir}"/data/SOURCES/bar.c subdir_build
|
||||
+cp "${abs_srcdir}"/data/SOURCES/foobar.h subdir_build
|
||||
+cp "${abs_srcdir}"/data/SOURCES/baz.c subdir_build
|
||||
+cd subdir_build
|
||||
+# Three almost identical binaries
|
||||
+# so dwz has something to put into the alt file
|
||||
+$CC $CFLAGS -g3 -I. -o foo foo.c bar.c baz.c
|
||||
+$CC $CFLAGS -g3 -I. -o bar bar.c baz.c foo.c
|
||||
+$CC $CFLAGS -g3 -I. -o baz baz.c foo.c bar.c
|
||||
+cd ..
|
||||
+]])
|
||||
+
|
||||
+# Check find-debuginfo --help doesn't crash and burn
|
||||
+AT_SETUP([find-debuginfo help])
|
||||
+AT_KEYWORDS([find-debuginfo] [help])
|
||||
+AT_CHECK([find-debuginfo --help],[0],[ignore],[ignore])
|
||||
+AT_CLEANUP
|
||||
+
|
||||
+# Run find-debuginfo on a small build without any fancy options
|
||||
+AT_SETUP([find-debuginfo sources])
|
||||
+AT_KEYWORDS([find-debuginfo] [sources])
|
||||
+FIND_DEBUGINFO_PKG_BUILD_SETUP
|
||||
+# Sanity check the binaries have debug sections
|
||||
+AT_CHECK([$READELF -S subdir_build/foo | grep debug_], [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S subdir_build/bar | grep debug_], [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S subdir_build/baz | grep debug_], [0], [ignore], [])
|
||||
+# We need to set some environment variables for running find-debuginfo
|
||||
+# normally set by rpmbuild.
|
||||
+#
|
||||
+# run debugedit and collect source files for binaries in subdir_build
|
||||
+AT_CHECK([env RPM_BUILD_DIR=${PWD} \
|
||||
+ RPM_BUILD_ROOT=${PWD} \
|
||||
+ RPM_PACKAGE_NAME=pkg \
|
||||
+ RPM_PACKAGE_VERSION=ver \
|
||||
+ RPM_PACKAGE_RELEASE=rel \
|
||||
+ RPM_ARCH=arch \
|
||||
+ find-debuginfo ${PWD}/subdir_build],
|
||||
+ [0], [stdout], [])
|
||||
+# Make sure all three binaries are processed
|
||||
+AT_CHECK([grep "Extracting debug info from 3 files" stdout], [0], [ignore], [])
|
||||
+# debug sections should have been removed
|
||||
+AT_CHECK([$READELF -S subdir_build/foo | grep debug_], [1], [ignore], [])
|
||||
+AT_CHECK([$READELF -S subdir_build/bar | grep debug_], [1], [ignore], [])
|
||||
+AT_CHECK([$READELF -S subdir_build/baz | grep debug_], [1], [ignore], [])
|
||||
+# Now there are .debug files with those .debug_ sections
|
||||
+AT_CHECK([$READELF -S usr/lib/debug/subdir_build/foo.debug | grep debug_],
|
||||
+ [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S usr/lib/debug/subdir_build/bar.debug | grep debug_],
|
||||
+ [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S usr/lib/debug/subdir_build/baz.debug | grep debug_],
|
||||
+ [0], [ignore], [])
|
||||
+# Check all sources are listed in debugsources.list
|
||||
+AT_DATA([expout],
|
||||
+[subdir_build/
|
||||
+subdir_build/bar.c
|
||||
+subdir_build/baz.c
|
||||
+subdir_build/foo.c
|
||||
+subdir_build/foobar.h
|
||||
+])
|
||||
+AT_CHECK([cat subdir_build/debugsources.list | tr '\0' '\n' | sort -u],
|
||||
+ [0], [expout], [])
|
||||
+AT_CLEANUP
|
||||
+
|
||||
+# Run find-debuginfo on a small build and check all parts ran
|
||||
+AT_SETUP([find-debuginfo sources debugdata gdb-index])
|
||||
+AT_KEYWORDS([find-debuginfo] [sources] [debugdata] [gdb-index])
|
||||
+FIND_DEBUGINFO_PKG_BUILD_SETUP
|
||||
+# Sanity check the binaries have debug sections
|
||||
+AT_CHECK([$READELF -S subdir_build/foo | grep debug_], [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S subdir_build/bar | grep debug_], [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S subdir_build/baz | grep debug_], [0], [ignore], [])
|
||||
+# We need to set some environment variables for running find-debuginfo
|
||||
+# normally set by rpmbuild.
|
||||
+#
|
||||
+# generate .gnu_debugdata (-m), .gdb_index (-i) for binaries in subdir_build.
|
||||
+AT_CHECK([env RPM_BUILD_DIR=${PWD} \
|
||||
+ RPM_BUILD_ROOT=${PWD} \
|
||||
+ RPM_PACKAGE_NAME=pkg \
|
||||
+ RPM_PACKAGE_VERSION=ver \
|
||||
+ RPM_PACKAGE_RELEASE=rel \
|
||||
+ RPM_ARCH=arch \
|
||||
+ find-debuginfo -m -i ${PWD}/subdir_build],
|
||||
+ [0], [stdout], [])
|
||||
+# Make sure all three binaries are processed
|
||||
+AT_CHECK([grep "Extracting debug info from 3 files" stdout], [0], [ignore], [])
|
||||
+# debug sections should have been removed
|
||||
+AT_CHECK([$READELF -S subdir_build/foo | grep debug_], [1], [ignore], [])
|
||||
+AT_CHECK([$READELF -S subdir_build/bar | grep debug_], [1], [ignore], [])
|
||||
+AT_CHECK([$READELF -S subdir_build/baz | grep debug_], [1], [ignore], [])
|
||||
+# But they now have a .gnu_debugdata section
|
||||
+AT_CHECK([$READELF -S subdir_build/foo | grep gnu_debugdata],
|
||||
+ [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S subdir_build/bar | grep gnu_debugdata],
|
||||
+ [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S subdir_build/baz | grep gnu_debugdata],
|
||||
+ [0], [ignore], [])
|
||||
+# There are .debug files with those .debug_ sections
|
||||
+AT_CHECK([$READELF -S usr/lib/debug/subdir_build/foo.debug | grep debug_],
|
||||
+ [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S usr/lib/debug/subdir_build/bar.debug | grep debug_],
|
||||
+ [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S usr/lib/debug/subdir_build/baz.debug | grep debug_],
|
||||
+ [0], [ignore], [])
|
||||
+# The .debug files should also have a .gdb_index sections
|
||||
+AT_CHECK([$READELF -S usr/lib/debug/subdir_build/foo.debug | grep gdb_index],
|
||||
+ [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S usr/lib/debug/subdir_build/bar.debug | grep gdb_index],
|
||||
+ [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S usr/lib/debug/subdir_build/baz.debug | grep gdb_index],
|
||||
+ [0], [ignore], [])
|
||||
+# Check all sources are listed in debugsources.list
|
||||
+AT_DATA([expout],
|
||||
+[subdir_build/
|
||||
+subdir_build/bar.c
|
||||
+subdir_build/baz.c
|
||||
+subdir_build/foo.c
|
||||
+subdir_build/foobar.h
|
||||
+])
|
||||
+AT_CHECK([cat subdir_build/debugsources.list | tr '\0' '\n' | sort -u],
|
||||
+ [0], [expout], [])
|
||||
+AT_CLEANUP
|
||||
+
|
||||
+# Run find-debuginfo on a small build and check all parts ran
|
||||
+# Same as above but run in parallel (-j)
|
||||
+AT_SETUP([find-debuginfo sources debugdata gdb-index jobs])
|
||||
+AT_KEYWORDS([find-debuginfo] [sources] [debugdata] [gdb-index] [jobs])
|
||||
+FIND_DEBUGINFO_PKG_BUILD_SETUP
|
||||
+# Sanity check the binaries have debug sections
|
||||
+AT_CHECK([$READELF -S subdir_build/foo | grep debug_], [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S subdir_build/bar | grep debug_], [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S subdir_build/baz | grep debug_], [0], [ignore], [])
|
||||
+# We need to set some environment variables for running find-debuginfo
|
||||
+# normally set by rpmbuild.
|
||||
+#
|
||||
+# generate .gnu_debugdata (-m), .gdb_index (-i) for binaries in subdir_build.
|
||||
+AT_CHECK([env RPM_BUILD_DIR=${PWD} \
|
||||
+ RPM_BUILD_ROOT=${PWD} \
|
||||
+ RPM_PACKAGE_NAME=pkg \
|
||||
+ RPM_PACKAGE_VERSION=ver \
|
||||
+ RPM_PACKAGE_RELEASE=rel \
|
||||
+ RPM_ARCH=arch \
|
||||
+ find-debuginfo -m -i -j6 ${PWD}/subdir_build],
|
||||
+ [0], [stdout], [])
|
||||
+# Make sure all three binaries are processed
|
||||
+AT_CHECK([grep "Extracting debug info from 3 files" stdout], [0], [ignore], [])
|
||||
+# debug sections should have been removed
|
||||
+AT_CHECK([$READELF -S subdir_build/foo | grep debug_], [1], [ignore], [])
|
||||
+AT_CHECK([$READELF -S subdir_build/bar | grep debug_], [1], [ignore], [])
|
||||
+AT_CHECK([$READELF -S subdir_build/baz | grep debug_], [1], [ignore], [])
|
||||
+# But they now have a .gnu_debugdata section
|
||||
+AT_CHECK([$READELF -S subdir_build/foo | grep gnu_debugdata],
|
||||
+ [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S subdir_build/bar | grep gnu_debugdata],
|
||||
+ [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S subdir_build/baz | grep gnu_debugdata],
|
||||
+ [0], [ignore], [])
|
||||
+# There are .debug files with those .debug_ sections
|
||||
+AT_CHECK([$READELF -S usr/lib/debug/subdir_build/foo.debug | grep debug_],
|
||||
+ [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S usr/lib/debug/subdir_build/bar.debug | grep debug_],
|
||||
+ [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S usr/lib/debug/subdir_build/baz.debug | grep debug_],
|
||||
+ [0], [ignore], [])
|
||||
+# The .debug files should also have a .gdb_index sections
|
||||
+AT_CHECK([$READELF -S usr/lib/debug/subdir_build/foo.debug | grep gdb_index],
|
||||
+ [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S usr/lib/debug/subdir_build/bar.debug | grep gdb_index],
|
||||
+ [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S usr/lib/debug/subdir_build/baz.debug | grep gdb_index],
|
||||
+ [0], [ignore], [])
|
||||
+# Check all sources are listed in debugsources.list
|
||||
+AT_DATA([expout],
|
||||
+[subdir_build/
|
||||
+subdir_build/bar.c
|
||||
+subdir_build/baz.c
|
||||
+subdir_build/foo.c
|
||||
+subdir_build/foobar.h
|
||||
+])
|
||||
+AT_CHECK([cat subdir_build/debugsources.list | tr '\0' '\n' | sort -u],
|
||||
+ [0], [expout], [])
|
||||
+AT_CLEANUP
|
||||
+
|
||||
+# Run find-debuginfo on a small build and check all parts ran
|
||||
+# Same as above, but now with dwz (but without -j)
|
||||
+AT_SETUP([find-debuginfo sources debugdata gdb-index dwz])
|
||||
+AT_KEYWORDS([find-debuginfo] [sources] [debugdata] [gdb-index] [dwz])
|
||||
+# At the moment dwz doesn't support .debug_addr
|
||||
+AT_SKIP_IF([test "$DWARF_5_DEBUGADDR" = "yes"])
|
||||
+FIND_DEBUGINFO_PKG_BUILD_SETUP
|
||||
+# Sanity check the binaries have debug sections
|
||||
+AT_CHECK([$READELF -S subdir_build/foo | grep debug_], [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S subdir_build/bar | grep debug_], [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S subdir_build/baz | grep debug_], [0], [ignore], [])
|
||||
+# We need to set some environment variables for running find-debuginfo
|
||||
+# normally set by rpmbuild.
|
||||
+#
|
||||
+# generate .gnu_debugdata (-m), .gdb_index (-i) and run dwz (--run-dwz)
|
||||
+# for binaries in subdir_build.
|
||||
+AT_CHECK([env RPM_BUILD_DIR=${PWD} \
|
||||
+ RPM_BUILD_ROOT=${PWD} \
|
||||
+ RPM_PACKAGE_NAME=pkg \
|
||||
+ RPM_PACKAGE_VERSION=ver \
|
||||
+ RPM_PACKAGE_RELEASE=rel \
|
||||
+ RPM_ARCH=arch \
|
||||
+ find-debuginfo -m -i --run-dwz ${PWD}/subdir_build],
|
||||
+ [0], [stdout], [])
|
||||
+# Make sure all three binaries are processed
|
||||
+AT_CHECK([grep "Extracting debug info from 3 files" stdout], [0], [ignore], [])
|
||||
+AT_CHECK([grep "DWARF-compressing 3 files" stdout], [0], [ignore], [])
|
||||
+# debug sections should have been removed
|
||||
+AT_CHECK([$READELF -S subdir_build/foo | grep debug_], [1], [ignore], [])
|
||||
+AT_CHECK([$READELF -S subdir_build/bar | grep debug_], [1], [ignore], [])
|
||||
+AT_CHECK([$READELF -S subdir_build/baz | grep debug_], [1], [ignore], [])
|
||||
+# But they now have a .gnu_debugdata section
|
||||
+AT_CHECK([$READELF -S subdir_build/foo | grep gnu_debugdata],
|
||||
+ [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S subdir_build/bar | grep gnu_debugdata],
|
||||
+ [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S subdir_build/baz | grep gnu_debugdata],
|
||||
+ [0], [ignore], [])
|
||||
+# There are .debug files with those .debug_ sections
|
||||
+AT_CHECK([$READELF -S usr/lib/debug/subdir_build/foo.debug | grep debug_],
|
||||
+ [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S usr/lib/debug/subdir_build/bar.debug | grep debug_],
|
||||
+ [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S usr/lib/debug/subdir_build/baz.debug | grep debug_],
|
||||
+ [0], [ignore], [])
|
||||
+# The .debug files should also have a .gdb_index sections
|
||||
+AT_CHECK([$READELF -S usr/lib/debug/subdir_build/foo.debug | grep gdb_index],
|
||||
+ [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S usr/lib/debug/subdir_build/bar.debug | grep gdb_index],
|
||||
+ [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S usr/lib/debug/subdir_build/baz.debug | grep gdb_index],
|
||||
+ [0], [ignore], [])
|
||||
+# There should also be a dwz multi file now
|
||||
+AT_CHECK([test -f usr/lib/debug/.dwz/pkg-ver-rel.arch], [0], [], [])
|
||||
+# Check all sources are listed in debugsources.list
|
||||
+AT_DATA([expout],
|
||||
+[subdir_build/
|
||||
+subdir_build/bar.c
|
||||
+subdir_build/baz.c
|
||||
+subdir_build/foo.c
|
||||
+subdir_build/foobar.h
|
||||
+])
|
||||
+AT_CHECK([cat subdir_build/debugsources.list | tr '\0' '\n' | sort -u],
|
||||
+ [0], [expout], [])
|
||||
+AT_CLEANUP
|
||||
+
|
||||
+# Run find-debuginfo on a small build and check all parts ran
|
||||
+# Same as above plus doing -j jobs
|
||||
+AT_SETUP([find-debuginfo sources debugdata gdb-index dwz jobs])
|
||||
+AT_KEYWORDS([find-debuginfo] [sources] [debugdata] [gdb-index] [dwz] [jobs])
|
||||
+# At the moment dwz doesn't support .debug_addr
|
||||
+AT_SKIP_IF([test "$DWARF_5_DEBUGADDR" = "yes"])
|
||||
+FIND_DEBUGINFO_PKG_BUILD_SETUP
|
||||
+# Sanity check the binaries have debug sections
|
||||
+AT_CHECK([$READELF -S subdir_build/foo | grep debug_], [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S subdir_build/bar | grep debug_], [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S subdir_build/baz | grep debug_], [0], [ignore], [])
|
||||
+# We need to set some environment variables for running find-debuginfo
|
||||
+# normally set by rpmbuild.
|
||||
+#
|
||||
+# generate .gnu_debugdata (-m), .gdb_index (-i) and run dwz (--run-dwz)
|
||||
+# in parallel (-j6) for binaries in subdir_build.
|
||||
+AT_CHECK([env RPM_BUILD_DIR=${PWD} \
|
||||
+ RPM_BUILD_ROOT=${PWD} \
|
||||
+ RPM_PACKAGE_NAME=pkg \
|
||||
+ RPM_PACKAGE_VERSION=ver \
|
||||
+ RPM_PACKAGE_RELEASE=rel \
|
||||
+ RPM_ARCH=arch \
|
||||
+ find-debuginfo -m -i --run-dwz -j6 ${PWD}/subdir_build],
|
||||
+ [0], [stdout], [])
|
||||
+# Make sure all three binaries are processed
|
||||
+AT_CHECK([grep "Extracting debug info from 3 files" stdout], [0], [ignore], [])
|
||||
+AT_CHECK([grep "DWARF-compressing 3 files" stdout], [0], [ignore], [])
|
||||
+# debug sections should have been removed
|
||||
+AT_CHECK([$READELF -S subdir_build/foo | grep debug_], [1], [ignore], [])
|
||||
+AT_CHECK([$READELF -S subdir_build/bar | grep debug_], [1], [ignore], [])
|
||||
+AT_CHECK([$READELF -S subdir_build/baz | grep debug_], [1], [ignore], [])
|
||||
+# But they now have a .gnu_debugdata section
|
||||
+AT_CHECK([$READELF -S subdir_build/foo | grep gnu_debugdata],
|
||||
+ [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S subdir_build/bar | grep gnu_debugdata],
|
||||
+ [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S subdir_build/baz | grep gnu_debugdata],
|
||||
+ [0], [ignore], [])
|
||||
+# There are .debug files with those .debug_ sections
|
||||
+AT_CHECK([$READELF -S usr/lib/debug/subdir_build/foo.debug | grep debug_],
|
||||
+ [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S usr/lib/debug/subdir_build/bar.debug | grep debug_],
|
||||
+ [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S usr/lib/debug/subdir_build/baz.debug | grep debug_],
|
||||
+ [0], [ignore], [])
|
||||
+# The .debug files should also have a .gdb_index sections
|
||||
+AT_CHECK([$READELF -S usr/lib/debug/subdir_build/foo.debug | grep gdb_index],
|
||||
+ [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S usr/lib/debug/subdir_build/bar.debug | grep gdb_index],
|
||||
+ [0], [ignore], [])
|
||||
+AT_CHECK([$READELF -S usr/lib/debug/subdir_build/baz.debug | grep gdb_index],
|
||||
+ [0], [ignore], [])
|
||||
+# There should also be a dwz multi file now
|
||||
+AT_CHECK([test -f usr/lib/debug/.dwz/pkg-ver-rel.arch], [0], [], [])
|
||||
+# Check all sources are listed in debugsources.list
|
||||
+AT_DATA([expout],
|
||||
+[subdir_build/
|
||||
+subdir_build/bar.c
|
||||
+subdir_build/baz.c
|
||||
+subdir_build/foo.c
|
||||
+subdir_build/foobar.h
|
||||
+])
|
||||
+AT_CHECK([cat subdir_build/debugsources.list | tr '\0' '\n' | sort -u],
|
||||
+ [0], [expout], [])
|
||||
+AT_CLEANUP
|
||||
diff --git a/tests/testsuite.at b/tests/testsuite.at
|
||||
index baf7ca2c81c6..d7027f0039d5 100644
|
||||
--- a/tests/testsuite.at
|
||||
+++ b/tests/testsuite.at
|
||||
@@ -10,3 +10,4 @@ AT_INIT
|
||||
AT_TESTED([debugedit])
|
||||
|
||||
m4_include([debugedit.at])
|
||||
+m4_include([find-debuginfo.at])
|
||||
--
|
||||
2.49.0
|
||||
|
@ -1,6 +1,6 @@
|
||||
Name: debugedit
|
||||
Version: 5.1
|
||||
Release: 7%{?dist}
|
||||
Release: 8%{?dist}
|
||||
Summary: Tools and scripts for creating debuginfo and source file distributions, collect build-ids and rewrite source paths in DWARF data for debugging, tracing and profiling.
|
||||
License: GPL-3.0-or-later AND GPL-2.0-or-later AND LGPL-2.0-or-later
|
||||
URL: https://sourceware.org/debugedit/
|
||||
@ -51,6 +51,7 @@ Patch2: 0001-find-debuginfo-Fix-skip_mini-.gnu_debugdata-handling.patch
|
||||
patch3: 0001-find-debuginfo-Make-return-from-do_file-explicit.patch
|
||||
patch4: debugedit-5.1-binutils-tools-override.patch
|
||||
patch5: 0001-debugedit-Handle-unused-.debug_str_offsets-entries.patch
|
||||
patch6: 0001-Add-basic-find-debuginfo-script-tests.patch
|
||||
|
||||
%description
|
||||
The debugedit project provides programs and scripts for creating
|
||||
@ -92,6 +93,9 @@ make check %{?_smp_mflags}
|
||||
%{_mandir}/man1/find-debuginfo.1*
|
||||
|
||||
%changelog
|
||||
* Fri Jun 20 2025 Mark Wielaard <mjw@redhat.com> - 5.1-8
|
||||
- Add 0001-Add-basic-find-debuginfo-script-tests.patch
|
||||
|
||||
* Fri Apr 11 2025 Mark Wielaard <mjw@redhat.com> - 5.1-7
|
||||
- Add 0001-debugedit-Handle-unused-.debug_str_offsets-entries.patch
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user