]> git.ipfire.org Git - thirdparty/elfutils.git/commitdiff
Make sure to always build with build-ids.
authorMark Wielaard <mark@klomp.org>
Fri, 6 Dec 2019 16:20:00 +0000 (17:20 +0100)
committerMark Wielaard <mark@klomp.org>
Wed, 11 Dec 2019 13:22:15 +0000 (14:22 +0100)
We really need build-ids for various things.  If the system compiler
doesn't generate build-ids warn and generate them anyway for both the
binaries and the tests.

Signed-off-by: Mark Wielaard <mark@klomp.org>
ChangeLog
configure.ac
tests/ChangeLog
tests/run-debuginfod-find.sh

index 0e2296226cc63bd00caddbfe16ab04a800123719..ed5f5866f727173f937dfb7f9465b58a51a5ce87 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2019-12-06  Mark Wielaard  <mark@klomp.org>
+
+       * configure.ac: Add ac_cv_buildid check.
+
 2019-11-26  Mark Wielaard  <mark@klomp.org>
 
        * configure.ac: Set version to 0.178.
index 5a2dc373ea6698a4e8fbd568e08d2f77956db671..36a6b6c2d42715b81ca0b41d654444f01b79647f 100644 (file)
@@ -197,6 +197,15 @@ if test "$ac_cv_zdefs" = "yes"; then
        dso_LDFLAGS="$dso_LDFLAGS $ZDEFS_LDFLAGS"
 fi
 
+# We really want build-ids. Warn and force generating them if gcc was
+# configure without --enable-linker-build-id
+AC_CACHE_CHECK([whether the compiler generates build-ids], ac_cv_buildid, [dnl
+AC_LINK_IFELSE([AC_LANG_PROGRAM()],[ac_cv_buildid=yes; readelf -n conftest$EXEEXT | grep -q NT_GNU_BUILD_ID || ac_cv_buildid=no],AC_MSG_FAILURE([unexpected compile failure]))])
+if test "$ac_cv_buildid" = "no"; then
+       AC_MSG_WARN([compiler doesn't generate build-id by default])
+       LDFLAGS="$LDFLAGS -Wl,--build-id"
+fi
+
 ZRELRO_LDFLAGS="-Wl,-z,relro"
 AC_CACHE_CHECK([whether gcc supports $ZRELRO_LDFLAGS], ac_cv_zrelro, [dnl
 save_LDFLAGS="$LDFLAGS"
index ffa4ef51f08d9cde02380c0143ee3a992d13e984..ce67ce555bffa0ce97839a5a296dd73fb61b1a7e 100644 (file)
@@ -1,3 +1,7 @@
+2019-12-06  Mark Wielaard  <mark@klomp.org>
+
+       * run-debuginfod-find.sh: Force -Wl,--build-id.
+
 2019-12-05  Mark Wielaard  <mark@klomp.org>
 
        * run-findinfod-find.sh: Run strip under testrun.
index 6f92fbf119e0ae3b60786c3d003c1f6003471e2f..6533996a56d3d891f0345d26fdb13d0171476175 100755 (executable)
@@ -101,7 +101,7 @@ export DEBUGINFOD_TIMEOUT=10
 # cannot find it without debuginfod.
 echo "int main() { return 0; }" > ${PWD}/prog.c
 tempfiles prog.c
-gcc -g -o prog ${PWD}/prog.c
+gcc -Wl,--build-id -g -o prog ${PWD}/prog.c
 testrun ${abs_top_builddir}/src/strip -g -f prog.debug ${PWD}/prog
 BUILDID=`env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../src/readelf \
           -a prog | grep 'Build ID' | cut -d ' ' -f 7`
@@ -138,7 +138,7 @@ cmp $filename  ${PWD}/prog.c
 # Build another, non-stripped binary
 echo "int main() { return 0; }" > ${PWD}/prog2.c
 tempfiles prog2.c
-gcc -g -o prog2 ${PWD}/prog2.c
+gcc -Wl,--build-id -g -o prog2 ${PWD}/prog2.c
 BUILDID2=`env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../src/readelf \
           -a prog2 | grep 'Build ID' | cut -d ' ' -f 7`