1#!/bin/sh 2 3LC_ALL=C 4export LC_ALL 5 6test -z "$srcdir" && srcdir=. 7test -z "$libs" && libs=.libs 8stat=0 9 10if which objdump 2>/dev/null >/dev/null; then 11 : 12else 13 echo "check-static-inits.sh: 'objdump' not found; skipping test" 14 exit 77 15fi 16 17OBJS=$libs/*.o 18if test "x`echo $OBJS`" = "x$OBJS" 2>/dev/null >/dev/null; then 19 echo "check-static-inits.sh: object files not found; skipping test" 20 exit 77 21fi 22 23echo "Checking that no object file has static initializers" 24for obj in $OBJS; do 25 if objdump -t "$obj" | grep '[.][cd]tors' | grep -v '\<00*\>'; then 26 echo "Ouch, $obj has static initializers/finalizers" 27 stat=1 28 fi 29done 30 31echo "Checking that no object file has lazy static C++ constructors/destructors or other such stuff" 32for obj in $OBJS; do 33 if objdump -t "$obj" | grep -q '__cxa_' && ! objdump -t "$obj" | grep -q __ubsan_handle; then 34 objdump -t "$obj" | grep '__cxa_' 35 echo "Ouch, $obj has lazy static C++ constructors/destructors or other such stuff" 36 stat=1 37 fi 38done 39 40exit $stat 41