Behdad Esfahbod | 4508789 | 2012-06-08 21:32:43 -0400 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | |
| 3 | LC_ALL=C |
| 4 | export LC_ALL |
| 5 | |
| 6 | test -z "$srcdir" && srcdir=. |
| 7 | stat=0 |
| 8 | |
| 9 | |
| 10 | if which objdump 2>/dev/null >/dev/null; then |
| 11 | : |
| 12 | else |
| 13 | echo "check-static-inits.sh: 'objdump' not found; skipping test" |
| 14 | exit 77 |
| 15 | fi |
| 16 | |
Behdad Esfahbod | 6d9a329 | 2012-08-08 14:48:41 -0400 | [diff] [blame] | 17 | OBJS=.libs/*.o |
| 18 | if 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 |
| 21 | fi |
| 22 | |
Behdad Esfahbod | 4508789 | 2012-06-08 21:32:43 -0400 | [diff] [blame] | 23 | echo "Checking that no object file has static initializers" |
Behdad Esfahbod | 6d9a329 | 2012-08-08 14:48:41 -0400 | [diff] [blame] | 24 | for obj in $OBJS; do |
Behdad Esfahbod | 2272318 | 2014-10-01 11:56:07 -0400 | [diff] [blame] | 25 | if objdump -t "$obj" | grep '[.][cd]tors' | grep -v '\<00*\>'; then |
Behdad Esfahbod | b695a3d | 2014-10-01 11:55:14 -0400 | [diff] [blame] | 26 | echo "Ouch, $obj has static initializers/finalizers" |
Behdad Esfahbod | 4508789 | 2012-06-08 21:32:43 -0400 | [diff] [blame] | 27 | stat=1 |
| 28 | fi |
| 29 | done |
| 30 | |
Behdad Esfahbod | d59e28e | 2012-08-28 19:08:36 -0400 | [diff] [blame] | 31 | echo "Checking that no object file has lazy static C++ constructors/destructors or other such stuff" |
Behdad Esfahbod | 6d9a329 | 2012-08-08 14:48:41 -0400 | [diff] [blame] | 32 | for obj in $OBJS; do |
Behdad Esfahbod | 75ec6d0 | 2014-04-09 16:33:32 -0700 | [diff] [blame] | 33 | if objdump -t "$obj" | grep '__cxa_'; then |
Behdad Esfahbod | d59e28e | 2012-08-28 19:08:36 -0400 | [diff] [blame] | 34 | echo "Ouch, $obj has lazy static C++ constructors/destructors or other such stuff" |
Behdad Esfahbod | 4508789 | 2012-06-08 21:32:43 -0400 | [diff] [blame] | 35 | stat=1 |
| 36 | fi |
| 37 | done |
| 38 | |
| 39 | exit $stat |