tests/test_symbols.sh: Add.
authorSimon Ruderich <simon@ruderich.org>
Thu, 13 Jun 2013 00:32:27 +0000 (02:32 +0200)
committerSimon Ruderich <simon@ruderich.org>
Thu, 13 Jun 2013 00:32:27 +0000 (02:32 +0200)
tests/Makefile.am
tests/test_symbols.sh [new file with mode: 0755]

index fa33764e54ec1400bb1c4e7837bfc887d598939e..a42be2356ec66ce15a98bd3df860af9850c0ad0d 100644 (file)
@@ -2,7 +2,8 @@ TESTS = test_example.sh \
         test_exec.sh \
         test_noforce.sh \
         test_redirects.sh \
-        test_simple.sh
+        test_simple.sh \
+        test_symbols.sh
 check_PROGRAMS = example example_exec
 example_SOURCES = example.c
 example_exec_SOURCES = example_exec.c
diff --git a/tests/test_symbols.sh b/tests/test_symbols.sh
new file mode 100755 (executable)
index 0000000..bb01ea4
--- /dev/null
@@ -0,0 +1,44 @@
+#!/bin/sh
+
+# Copyright (C) 2013  Simon Ruderich
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+test "x$srcdir" = x && srcdir=.
+. "$srcdir/lib.sh"
+
+# Check if all hooked functions are actually available in the binary.
+symbols=
+symbols="$symbols write fwrite"
+symbols="$symbols fputs fputc _IO_putc putchar puts"
+symbols="$symbols printf fprintf vprintf vfprintf"
+symbols="$symbols __printf_chk __fprintf_chk __vprintf_chk __vfprintf_chk"
+symbols="$symbols fwrite_unlocked fputs_unlocked fputc_unlocked putc_unlocked putchar_unlocked"
+symbols="$symbols perror"
+if test -x "$builddir/example_error"; then
+    symbols="$symbols error error_at_line"
+fi
+symbols="$symbols dup dup2 dup3 fcntl close fclose"
+if test -x "$builddir/example_vfork"; then
+    symbols="$symbols vfork"
+fi
+symbols="$symbols execve execl execlp execle execv execvp"
+
+output="output-$$"
+nm -g -P "$library" > "$output"
+for x in $symbols; do
+    grep "^$x T " "$output" >/dev/null 2>&1 || die "symbol $x missing"
+done
+rm "$output"