mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-22 21:10:07 +00:00
2145f8b51d
Since asynchronous cancellation was removed from system by
commit c4dd57c300
Author: Ondřej Bílka <neleai@seznam.cz>
Date: Tue Jan 14 16:07:50 2014 +0100
Do not enable asynchronous cancellation in system. Fixes bug 14782.
We needlessly enabled thread cancellation before it was necessary.
As
only call that needs to be guarded is waitpid which is cancellation
point we could remove cancellation altogether.
we shouldn't check asynchronous cancellation on system.
[BZ #14782]
* tst-cancel-wrappers.sh: Remove system.
93 lines
2.0 KiB
Bash
93 lines
2.0 KiB
Bash
#! /bin/sh
|
|
# Test whether all cancelable functions are cancelable.
|
|
# Copyright (C) 2002-2014 Free Software Foundation, Inc.
|
|
# This file is part of the GNU C Library.
|
|
# Contributed by Jakub Jelinek <jakub@redhat.com>, 2002.
|
|
|
|
# The GNU C Library is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU Lesser General Public
|
|
# License as published by the Free Software Foundation; either
|
|
# version 2.1 of the License, or (at your option) any later version.
|
|
|
|
# The GNU C Library is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
# Lesser General Public License for more details.
|
|
|
|
# You should have received a copy of the GNU Lesser General Public
|
|
# License along with the GNU C Library; if not, see
|
|
# <http://www.gnu.org/licenses/>.
|
|
|
|
NM="$1"; shift
|
|
while [ $# -gt 0 ]; do
|
|
( $NM -P $1; echo 'end[end]:' ) | gawk ' BEGIN {
|
|
C["accept"]=1
|
|
C["close"]=1
|
|
C["connect"]=1
|
|
C["creat"]=1
|
|
C["fcntl"]=1
|
|
C["fdatasync"]=1
|
|
C["fsync"]=1
|
|
C["msgrcv"]=1
|
|
C["msgsnd"]=1
|
|
C["msync"]=1
|
|
C["nanosleep"]=1
|
|
C["open"]=1
|
|
C["open64"]=1
|
|
C["pause"]=1
|
|
C["poll"]=1
|
|
C["pread"]=1
|
|
C["pread64"]=1
|
|
C["pselect"]=1
|
|
C["pwrite"]=1
|
|
C["pwrite64"]=1
|
|
C["read"]=1
|
|
C["readv"]=1
|
|
C["recv"]=1
|
|
C["recvfrom"]=1
|
|
C["recvmsg"]=1
|
|
C["select"]=1
|
|
C["send"]=1
|
|
C["sendmsg"]=1
|
|
C["sendto"]=1
|
|
C["sigpause"]=1
|
|
C["sigsuspend"]=1
|
|
C["sigwait"]=1
|
|
C["sigwaitinfo"]=1
|
|
C["tcdrain"]=1
|
|
C["wait"]=1
|
|
C["waitid"]=1
|
|
C["waitpid"]=1
|
|
C["write"]=1
|
|
C["writev"]=1
|
|
C["__xpg_sigpause"]=1
|
|
}
|
|
/:$/ {
|
|
if (seen)
|
|
{
|
|
if (!seen_enable || !seen_disable)
|
|
{
|
|
printf "in '$1'(%s) %s'\''s cancellation missing\n", object, seen
|
|
ret = 1
|
|
}
|
|
}
|
|
seen=""
|
|
seen_enable=""
|
|
seen_disable=""
|
|
object=gensub(/^.*\[(.*)\]:$/,"\\1","",$0)
|
|
next
|
|
}
|
|
{
|
|
if (C[$1] && $2 ~ /^[TW]$/)
|
|
seen=$1
|
|
else if ($1 ~ /^([.]|)__(libc|pthread)_enable_asynccancel$/ && $2 == "U")
|
|
seen_enable=1
|
|
else if ($1 ~ /^([.]|)__(libc|pthread)_disable_asynccancel$/ && $2 == "U")
|
|
seen_disable=1
|
|
}
|
|
END {
|
|
exit ret
|
|
}' || exit
|
|
shift
|
|
done
|