Optimize for kernels which are known to have the vfork syscall.
[glibc/pb-stable.git] / nptl / tst-cancel-wrappers.sh
blob4561c02ae8766a5c5b255c188d74500b342758bf
1 #! /bin/sh
2 # Test whether all cancellable functions are cancellable.
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.
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.
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.
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.
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
67 /:$/ {
68 if (seen)
70 if (!seen_enable || !seen_disable)
72 printf "in '$1'(%s) %s'\''s cancellation missing\n", object, seen
73 ret = 1
76 seen=""
77 seen_enable=""
78 seen_disable=""
79 object=gensub(/^.*\[(.*)\]:$/,"\\1","",$0)
80 next
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
90 END {
91 exit ret
92 }' || exit
93 shift
94 done