* [COMMITTED v3] Add basic find-debuginfo script tests
@ 2025-06-20 20:31 Mark Wielaard
0 siblings, 0 replies; only message in thread
From: Mark Wielaard @ 2025-06-20 20:31 UTC (permalink / raw)
To: debugedit
Cc: Frank Ch. Eigler, Martin Cermak, Guinevere Larsen, Mark Wielaard
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: Add 5 basic variants of find-debuginfo test.
Signed-off-by: Mark Wielaard <mark@klomp.org>
---
V3 Merges with tests/find-debuginfo.at from the ar work by Frank.
- Add some extra comments
- Removed duplicated AT_TESTED
configure.ac | 13 ++
tests/atlocal.in | 1 +
tests/find-debuginfo.at | 323 +++++++++++++++++++++++++++++++++++++++-
3 files changed, 332 insertions(+), 5 deletions(-)
diff --git a/configure.ac b/configure.ac
index 47771d4ca807..5b8f96149fa3 100644
*** a/configure.ac
--- b/configure.ac
***************
*** 126,131 ****
--- 126,144 ----
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/atlocal.in b/tests/atlocal.in
index 2f2ff4a80646..51feadbef691 100644
*** a/tests/atlocal.in
--- b/tests/atlocal.in
***************
*** 17,20 ****
--- 17,21 ----
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
index a0c098823867..5552ce17fe58 100644
*** a/tests/find-debuginfo.at
--- b/tests/find-debuginfo.at
***************
*** 1,6 ****
! # debugedit.at: Tests for the find-debuginfo tool
#
# Copyright (C) 2025 Red Hat Inc.
#
# 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
--- 1,7 ----
! # 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
***************
*** 18,24 ****
--- 19,28 ----
# Recommended usage for verbose logging to the console:
# make check TESTSUITEFLAGS=-v
+ # Tests for scripts/find-debuginfo.in
AT_BANNER([find-debuginfo])
+
+ # Show which find-debuginfo script we are testing
AT_TESTED([find-debuginfo])
m4_define([BUILDO],[[
***************
*** 29,36 ****
]])
AT_SETUP([find-debuginfo help])
! AT_KEYWORDS([find-debuginfo] [find-debuginfo])
AT_CHECK([find-debuginfo --help],[0],[ignore],[ignore])
AT_CLEANUP
--- 33,41 ----
]])
+ # 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
***************
*** 60,68 ****
# expect original source tree refs
AT_CHECK([$READELF --debug-dump=line subdir_build/dupes.a | grep `pwd`], [0], [stdout], [ignore])
- # (which is not everpresent)
- AT_TESTED([find-debuginfo])
-
# run conversion, under bash -x tracing for fuller testing log
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 \
bash -x `type -p find-debuginfo` -S sourcefiles.list -v ${PWD}/subdir_build]], [0], [stdout], [ignore])
--- 65,70 ----
***************
*** 79,83 ****
--- 81,396 ----
# no traces of old source tree
AT_CHECK([$READELF --debug-dump=line subdir_build/dupes.a | grep `pwd`], [1], [stdout], [stderr])
+ AT_CLEANUP
+
+ # 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 ..
+ ]])
+ # 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
--
2.49.0
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2025-06-20 20:33 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-06-20 20:31 [COMMITTED v3] Add basic find-debuginfo script tests Mark Wielaard
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).