[COMMITTED] tests: Old binutils readelf doesn't handle compressed debugsections

Mark Wielaard mark@klomp.org
Tue Oct 29 00:51:52 GMT 2024


Older versions don't cope correctly with compressed debug sections
https://sourceware.org/bugzilla/show_bug.cgi?id=23919
It is difficult to do a feature check for this, so just do a version
check.
---
 configure.ac       | 19 +++++++++++++++++++
 tests/atlocal.in   |  1 +
 tests/debugedit.at |  5 +++++
 3 files changed, 25 insertions(+)

diff --git a/configure.ac b/configure.ac
index 96922267b7fe..180c59931cf6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -162,6 +162,25 @@ else
 fi
 AC_SUBST([DEBUG_MACRO_FLAG])
 
+# We really need binutils readelf version 2.31 or higher
+# Older versions don't cope correctly with compressed debug sections
+# https://sourceware.org/bugzilla/show_bug.cgi?id=23919
+# It is difficult to do a feature check for this, so just do a version check.
+READELF_STRING=$($READELF --version | head -1)
+# The double [[ and ]] is because of configure.ac being an m4 script.
+READELF_REGEXP='s/GNU readelf[[a-zA-Z() _-]]*\([[1-9]]\)\.\([[0-9]]*\).*/\1\2/'
+READELF_VER=$(echo "$READELF_STRING" | sed -e "$READELF_REGEXP")
+AC_CACHE_CHECK([readelf version for compress tests], ac_cv_readelf_ver, [dnl
+ac_cv_readelf_ver="$READELF_VER"
+])
+if test "$READELF_VER" -ge "231"; then
+  READELF_VERSION_OK="yes"
+else
+  AC_MSG_WARN([$READELF_STRING ($READELF_VER) cannot do compression tests])
+  READELF_VERSION_OK="no"
+fi
+AC_SUBST([READELF_VERSION_OK])
+
 # And generate the output files.
 AC_CONFIG_FILES([Makefile])
 AC_OUTPUT
diff --git a/tests/atlocal.in b/tests/atlocal.in
index d3364d3e9e58..9da28786ba26 100644
--- a/tests/atlocal.in
+++ b/tests/atlocal.in
@@ -10,6 +10,7 @@ CFLAGS=""
 LD="@LD@"
 LDFLAGS=""
 READELF="@READELF@"
+READELF_VERSION_OK="@READELF_VERSION_OK@"
 
 GDWARF_5_FLAG=@GDWARF_5_FLAG@
 GZ_NONE_FLAG=@GZ_NONE_FLAG@
diff --git a/tests/debugedit.at b/tests/debugedit.at
index b125e627546d..8e69c0e60e8a 100644
--- a/tests/debugedit.at
+++ b/tests/debugedit.at
@@ -97,6 +97,7 @@ AT_CLEANUP
 AT_SETUP([debugedit executable (compressed)])
 AT_KEYWORDS([debuginfo] [debugedit])
 AT_SKIP_IF([test -z "$GZ_ZLIB_FLAG"])
+AT_SKIP_IF([test "$READELF_VERSION_OK" = "no"])
 DEBUGEDIT_SETUP([], [$GZ_ZLIB_FLAG])
 
 AT_CHECK([[./foobarbaz.exe]])
@@ -349,6 +350,7 @@ AT_CLEANUP
 AT_SETUP([debugedit .debug_info objects (compressed)])
 AT_KEYWORDS([debuginfo] [debugedit])
 AT_SKIP_IF([test -z "$GZ_ZLIB_FLAG"])
+AT_SKIP_IF([test "$READELF_VERSION_OK" = "no"])
 DEBUGEDIT_SETUP([], [$GZ_ZLIB_FLAG])
 
 AT_DATA([expout],
@@ -396,6 +398,7 @@ AT_CLEANUP
 AT_SETUP([debugedit .debug_info partial (compressed)])
 AT_KEYWORDS([debuginfo] [debugedit])
 AT_SKIP_IF([test -z "$GZ_ZLIB_FLAG"])
+AT_SKIP_IF([test "$READELF_VERSION_OK" = "no"])
 DEBUGEDIT_SETUP([], [$GZ_ZLIB_FLAG])
 
 AT_DATA([expout],
@@ -438,6 +441,7 @@ AT_CLEANUP
 AT_SETUP([debugedit .debug_info exe (compressed)])
 AT_KEYWORDS([debuginfo] [debugedit])
 AT_SKIP_IF([test -z "$GZ_ZLIB_FLAG"])
+AT_SKIP_IF([test "$READELF_VERSION_OK" = "no"])
 DEBUGEDIT_SETUP([], [$GZ_ZLIB_FLAG])
 
 AT_DATA([expout],
@@ -813,6 +817,7 @@ AT_CLEANUP
 AT_SETUP([debugedit .debug_macro exe (compressed)])
 AT_KEYWORDS([debuginfo] [debugedit])
 AT_SKIP_IF([test -z "$GZ_ZLIB_FLAG"])
+AT_SKIP_IF([test "$READELF_VERSION_OK" = "no"])
 DEBUGEDIT_SETUP([$DEBUG_MACRO_FLAG], [$GZ_ZLIB_FLAG])
 
 # We expect 3 for each compile unit.
-- 
2.47.0



More information about the Debugedit mailing list