]>
Commit | Line | Data |
---|---|---|
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["msgrcv"]=1 | |
31 | C["msgsnd"]=1 | |
32 | C["msync"]=1 | |
33 | C["nanosleep"]=1 | |
34 | C["open"]=1 | |
35 | C["open64"]=1 | |
36 | C["pause"]=1 | |
37 | C["poll"]=1 | |
38 | C["pread"]=1 | |
39 | C["pread64"]=1 | |
40 | C["pselect"]=1 | |
41 | C["pwrite"]=1 | |
42 | C["pwrite64"]=1 | |
43 | C["read"]=1 | |
44 | C["readv"]=1 | |
45 | C["recv"]=1 | |
46 | C["recvfrom"]=1 | |
47 | C["recvmsg"]=1 | |
48 | C["select"]=1 | |
49 | C["send"]=1 | |
50 | C["sendmsg"]=1 | |
51 | C["sendto"]=1 | |
52 | C["sigpause"]=1 | |
53 | C["sigsuspend"]=1 | |
54 | C["sigwait"]=1 | |
55 | C["sigwaitinfo"]=1 | |
56 | C["system"]=1 | |
57 | C["tcdrain"]=1 | |
58 | C["wait"]=1 | |
59 | C["waitid"]=1 | |
60 | C["waitpid"]=1 | |
61 | C["write"]=1 | |
62 | C["writev"]=1 | |
63 | C["__xpg_sigpause"]=1 | |
64 | } | |
65 | /:$/ { | |
66 | if (seen) | |
67 | { | |
68 | if (!seen_enable || !seen_disable) | |
69 | { | |
70 | printf "in '$1'(%s) %s'\''s cancellation missing\n", object, seen | |
71 | ret = 1 | |
72 | } | |
73 | } | |
74 | seen="" | |
75 | seen_enable="" | |
76 | seen_disable="" | |
77 | object=gensub(/^.*\[(.*)\]:$/,"\\1","",$0) | |
78 | next | |
79 | } | |
80 | { | |
81 | if (C[$1] && $2 ~ /^[TW]$/) | |
82 | seen=$1 | |
83 | else if ($1 ~ /^([.]|)__(libc|pthread)_enable_asynccancel$/ && $2 == "U") | |
84 | seen_enable=1 | |
85 | else if ($1 ~ /^([.]|)__(libc|pthread)_disable_asynccancel$/ && $2 == "U") | |
86 | seen_disable=1 | |
87 | } | |
88 | END { | |
89 | exit ret | |
90 | }' || exit | |
91 | shift | |
92 | done |