[PATCH libevdev 4/5] Hook up nm to check for leaking symbols in the static library
Peter Hutterer
peter.hutterer at who-t.net
Tue Aug 19 03:24:02 PDT 2014
We ignore anything that starts with an underscore, anything that starts with
libevdev and main (since we test the test-static-link binary) and a couple of
gcov-related functions. This should catch any functions we accidentally
export.
Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
configure.ac | 17 ++++++++++++++---
test/Makefile.am | 22 +++++++++++++++++++++-
2 files changed, 35 insertions(+), 4 deletions(-)
diff --git a/configure.ac b/configure.ac
index 4781434..bb4bbbb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -125,6 +125,16 @@ AC_MSG_RESULT([$enable_gcov])
AM_PATH_PYTHON([2.6])
+# nm to check for leaking symbols in the static library
+AC_PATH_PROG(NM, [nm])
+AM_CONDITIONAL(HAVE_NM, [test "x$NM" != "x"])
+if test "x$NM" == "x"; then
+ AC_MSG_WARN([nm not found - skipping symbol leak test])
+ have_nm="no"
+else
+ have_nm="yes"
+fi
+
AC_CONFIG_FILES([Makefile
libevdev/Makefile
doc/Makefile
@@ -136,7 +146,8 @@ AC_CONFIG_FILES([Makefile
AC_OUTPUT
AC_MSG_RESULT([
- Build documentation ${have_doxygen}
- Build unit-tests ${HAVE_CHECK}
- Enable profiling ${enable_gcov}
+ Build documentation ${have_doxygen}
+ Build unit-tests ${HAVE_CHECK}
+ Enable profiling ${enable_gcov}
+ Static library symbol check ${have_nm}
])
diff --git a/test/Makefile.am b/test/Makefile.am
index 992ce4f..0781d72 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -119,6 +119,26 @@ endif
clean-local: gcov-clean
rm -f *.gcno *.gcda
+if HAVE_NM
+# Hack to check for leaking symbols in the static library.
+# See https://bugs.freedesktop.org/show_bug.cgi?id=82785
+# Note the spaces in the expressions! After the first grep, each line
+# is " T symbol_name"
+static-symbol-leaks: test-static-link
+ $(AM_V_GEN)(\
+ $(NM) --extern-only $(builddir)/test-static-link | \
+ grep -o -e " T .*" | \
+ grep -v -e " main$$" \
+ -e " atexit" \
+ -e " *gcov.*" \
+ -e " _.*" \
+ -e " libevdev_*" && \
+ echo "Leaking symbols found" && \
+ exit 1 || exit 0 \
+ )
+
+check_local_deps += static-symbol-leaks
+endif
+
check-local: $(check_local_deps)
-
endif
--
1.9.3
More information about the Input-tools
mailing list