X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=tests%2Ftest_symbols.sh;fp=tests%2Ftest_symbols.sh;h=bb01ea481a456eda2b7c586050e0de28cedb75fe;hb=d8be625da928025e96417c1b62f3336251204cef;hp=0000000000000000000000000000000000000000;hpb=5e8be10581980ed8b9feafac9f6166c0849dbd72;p=coloredstderr%2Fcoloredstderr.git diff --git a/tests/test_symbols.sh b/tests/test_symbols.sh new file mode 100755 index 0000000..bb01ea4 --- /dev/null +++ b/tests/test_symbols.sh @@ -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 . + + +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"