diff --git a/src/Makefile.am b/src/Makefile.am index 344cc573b..98c6cd575 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -190,8 +190,9 @@ indic_LDADD = libharfbuzz.la $(HBLIBS) dist_check_SCRIPTS = \ check-c-linkage-decls.sh \ check-header-guards.sh \ - check-internal-symbols.sh \ check-includes.sh \ + check-internal-symbols.sh \ + check-static-inits.sh \ $(NULL) if HAVE_ICU diff --git a/src/check-static-inits.sh b/src/check-static-inits.sh new file mode 100755 index 000000000..eb04a55be --- /dev/null +++ b/src/check-static-inits.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +LC_ALL=C +export LC_ALL + +test -z "$srcdir" && srcdir=. +stat=0 + + +if which objdump 2>/dev/null >/dev/null; then + : +else + echo "check-static-inits.sh: 'objdump' not found; skipping test" + exit 77 +fi + +echo "Checking that no object file has static initializers" +for obj in .libs/*.o; do + if objdump -t "$obj" | grep '[.]ctors'; then + echo "Ouch, $obj has static initializers" + stat=1 + fi +done + +echo "Checking that no object file has lazy static C++ constructors/destructors" +for obj in .libs/*.o; do + if objdump -t "$obj" | grep '__c'; then + echo "Ouch, $obj has lazy static C++ constructors/destructors" + stat=1 + fi +done + +exit $stat