]> ruderich.org/simon Gitweb - coloredstderr/coloredstderr.git/blob - tests/test_symbols.sh
bb01ea481a456eda2b7c586050e0de28cedb75fe
[coloredstderr/coloredstderr.git] / tests / test_symbols.sh
1 #!/bin/sh
2
3 # Copyright (C) 2013  Simon Ruderich
4 #
5 # This program is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation, either version 3 of the License, or
8 # (at your option) any later version.
9 #
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 # GNU General Public License for more details.
14 #
15 # You should have received a copy of the GNU General Public License
16 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
17
18
19 test "x$srcdir" = x && srcdir=.
20 . "$srcdir/lib.sh"
21
22 # Check if all hooked functions are actually available in the binary.
23 symbols=
24 symbols="$symbols write fwrite"
25 symbols="$symbols fputs fputc _IO_putc putchar puts"
26 symbols="$symbols printf fprintf vprintf vfprintf"
27 symbols="$symbols __printf_chk __fprintf_chk __vprintf_chk __vfprintf_chk"
28 symbols="$symbols fwrite_unlocked fputs_unlocked fputc_unlocked putc_unlocked putchar_unlocked"
29 symbols="$symbols perror"
30 if test -x "$builddir/example_error"; then
31     symbols="$symbols error error_at_line"
32 fi
33 symbols="$symbols dup dup2 dup3 fcntl close fclose"
34 if test -x "$builddir/example_vfork"; then
35     symbols="$symbols vfork"
36 fi
37 symbols="$symbols execve execl execlp execle execv execvp"
38
39 output="output-$$"
40 nm -g -P "$library" > "$output"
41 for x in $symbols; do
42     grep "^$x T " "$output" >/dev/null 2>&1 || die "symbol $x missing"
43 done
44 rm "$output"