Allow .__*_asynccancel functions names as well.
[kopensolaris-gnu/glibc.git] / linuxthreads / tst-cancel-wrappers.sh
1 #! /bin/sh
2 # Test whether all cancelable functions are cancelable.
3 # Copyright (C) 2002, 2003 Free Software Foundation, Inc.
4 # This file is part of the GNU C Library.
5 # Contributed by Jakub Jelinek <jakub@redhat.com>, 2002.
6
7 # The GNU C Library is free software; you can redistribute it and/or
8 # modify it under the terms of the GNU Lesser General Public
9 # License as published by the Free Software Foundation; either
10 # version 2.1 of the License, or (at your option) any later version.
11
12 # The GNU C Library is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 # Lesser General Public License for more details.
16
17 # You should have received a copy of the GNU Lesser General Public
18 # License along with the GNU C Library; if not, write to the Free
19 # Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
20 # 02111-1307 USA.
21
22 while [ $# -gt 0 ]; do
23   ( nm -P $1; echo 'end[end]:' ) | gawk ' BEGIN {
24 C["accept"]=1
25 C["close"]=1
26 C["connect"]=1
27 C["creat"]=1
28 C["fcntl"]=1
29 C["fsync"]=1
30 C["llseek"]=1
31 C["lseek"]=1
32 C["msgrcv"]=1
33 C["msgsnd"]=1
34 C["msync"]=1
35 C["nanosleep"]=1
36 C["open"]=1
37 C["open64"]=1
38 C["pause"]=1
39 C["poll"]=1
40 C["pread"]=1
41 C["pread64"]=1
42 C["pselect"]=1
43 C["pwrite"]=1
44 C["pwrite64"]=1
45 C["read"]=1
46 C["readv"]=1
47 C["recv"]=1
48 C["recvfrom"]=1
49 C["recvmsg"]=1
50 C["select"]=1
51 C["send"]=1
52 C["sendmsg"]=1
53 C["sendto"]=1
54 C["sigpause"]=1
55 C["sigsuspend"]=1
56 C["sigwait"]=1
57 C["sigwaitinfo"]=1
58 C["system"]=1
59 C["tcdrain"]=1
60 C["wait"]=1
61 C["waitid"]=1
62 C["waitpid"]=1
63 C["write"]=1
64 C["writev"]=1
65 C["__xpg_sigpause"]=1
66 }
67 /:$/ {
68   if (seen)
69     {
70       if (!seen_enable || !seen_disable)
71         {
72           printf "in '$1'(%s) %s'\''s cancellation missing\n", object, seen
73           ret = 1
74         }
75     }
76   seen=""
77   seen_enable=""
78   seen_disable=""
79   object=gensub(/^.*\[(.*)\]:$/,"\\1","",$0)
80   next
81 }
82 {
83   if (C[$1] && $2 ~ /^[TW]$/)
84     seen=$1
85   else if ($1 ~ /^([.]|)__(libc|pthread)_enable_asynccancel$/ && $2 == "U")
86     seen_enable=1
87   else if ($1 ~ /^([.]|)__(libc|pthread)_disable_asynccancel$/ && $2 == "U")
88     seen_disable=1
89 }
90 END {
91   exit ret
92 }' || exit
93   shift
94 done