]>
Commit | Line | Data |
---|---|---|
48d0341c | 1 | #!/bin/sh |
211d90c5 | 2 | # Test whether all cancelable functions are cancelable. |
04277e02 | 3 | # Copyright (C) 2002-2019 Free Software Foundation, Inc. |
f077a4a9 UD |
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 | |
59ba27a6 PE |
18 | # License along with the GNU C Library; if not, see |
19 | # <http://www.gnu.org/licenses/>. | |
f077a4a9 | 20 | |
aba75984 | 21 | NM="$1"; shift |
f077a4a9 | 22 | while [ $# -gt 0 ]; do |
aba75984 | 23 | ( $NM -P $1; echo 'end[end]:' ) | gawk ' BEGIN { |
f077a4a9 UD |
24 | C["accept"]=1 |
25 | C["close"]=1 | |
26 | C["connect"]=1 | |
27 | C["creat"]=1 | |
28 | C["fcntl"]=1 | |
aa75f64c | 29 | C["fdatasync"]=1 |
f077a4a9 | 30 | C["fsync"]=1 |
f077a4a9 UD |
31 | C["msgrcv"]=1 |
32 | C["msgsnd"]=1 | |
33 | C["msync"]=1 | |
34 | C["nanosleep"]=1 | |
35 | C["open"]=1 | |
36 | C["open64"]=1 | |
37 | C["pause"]=1 | |
38 | C["poll"]=1 | |
39 | C["pread"]=1 | |
40 | C["pread64"]=1 | |
41 | C["pselect"]=1 | |
42 | C["pwrite"]=1 | |
43 | C["pwrite64"]=1 | |
44 | C["read"]=1 | |
45 | C["readv"]=1 | |
46 | C["recv"]=1 | |
47 | C["recvfrom"]=1 | |
48 | C["recvmsg"]=1 | |
49 | C["select"]=1 | |
50 | C["send"]=1 | |
51 | C["sendmsg"]=1 | |
52 | C["sendto"]=1 | |
53 | C["sigpause"]=1 | |
54 | C["sigsuspend"]=1 | |
55 | C["sigwait"]=1 | |
56 | C["sigwaitinfo"]=1 | |
f077a4a9 UD |
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 | { | |
52f3d213 | 68 | if (!seen_enable || !seen_disable) |
f077a4a9 UD |
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="" | |
d6d20de8 | 77 | object=gensub(/^.*\[(.*)\]:$/, "\\1", 1, $0) |
f077a4a9 UD |
78 | next |
79 | } | |
80 | { | |
81 | if (C[$1] && $2 ~ /^[TW]$/) | |
82 | seen=$1 | |
211d90c5 | 83 | else if ($1 ~ /^([.]|)__(libc|pthread)_enable_asynccancel$/ && $2 == "U") |
f077a4a9 | 84 | seen_enable=1 |
211d90c5 | 85 | else if ($1 ~ /^([.]|)__(libc|pthread)_disable_asynccancel$/ && $2 == "U") |
f077a4a9 UD |
86 | seen_disable=1 |
87 | } | |
88 | END { | |
89 | exit ret | |
90 | }' || exit | |
91 | shift | |
92 | done |