diff options
author | jasone <jasone@FreeBSD.org> | 2000-04-26 23:25:58 +0000 |
---|---|---|
committer | jasone <jasone@FreeBSD.org> | 2000-04-26 23:25:58 +0000 |
commit | 83086c2885ba48701d022b15e141f643e957cf7c (patch) | |
tree | 4a040f84b99c42fbba14b3fcc957ca5a9f74898d /lib/libc_r | |
parent | dcf0db55cc801b71bbfc598d90288814b35f9c84 (diff) | |
download | FreeBSD-src-83086c2885ba48701d022b15e141f643e957cf7c.zip FreeBSD-src-83086c2885ba48701d022b15e141f643e957cf7c.tar.gz |
Add test to detect propagation of cancellation points within libc_r.
Diffstat (limited to 'lib/libc_r')
-rw-r--r-- | lib/libc_r/test/Makefile | 2 | ||||
-rwxr-xr-x | lib/libc_r/test/propagate_s.pl | 74 |
2 files changed, 75 insertions, 1 deletions
diff --git a/lib/libc_r/test/Makefile b/lib/libc_r/test/Makefile index 7b8bf1f..db2f046 100644 --- a/lib/libc_r/test/Makefile +++ b/lib/libc_r/test/Makefile @@ -20,7 +20,7 @@ BTESTS := hello_b.c PDTESTS := # Sequence mode tests written in perl. -PSTESTS := +PSTESTS := propagate_s.pl # Munge the file lists to their final executable names (strip the .c). CDTESTS := $(CDTESTS:R) diff --git a/lib/libc_r/test/propagate_s.pl b/lib/libc_r/test/propagate_s.pl new file mode 100755 index 0000000..9cd5fb0 --- /dev/null +++ b/lib/libc_r/test/propagate_s.pl @@ -0,0 +1,74 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2000 Jason Evans <jasone@freebsd.org>. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice(s), this list of conditions and the following disclaimer as +# the first lines of this file unmodified other than the possible +# addition of one or more copyright notices. +# 2. Redistributions in binary form must reproduce the above copyright +# notice(s), this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +########################################################################### +# +# Verify that no cancellation points are propagated inside of libc_r. +# +# $FreeBSD$ +# + +@CPOINTS = ("aio_suspend", "close", "creat", "fcntl", "fsync", "mq_receive", + "mq_send", "msync", "nanosleep", "open", "pause", + "pthread_cond_timedwait", "pthread_cond_wait", "pthread_join", + "pthread_testcancel", "read", "sem_wait", "sigsuspend", + "sigtimedwait", "sigwait", "sigwaitinfo", "sleep", "system", + "tcdrain", "wait", "waitpid", "write"); + +print "1..1\n"; + +$cpoints = join '\|', @CPOINTS; +$regexp = "\" U \\(" . $cpoints . "\\\)\$\""; + +`nm -a /usr/lib/libc.a |grep $regexp >propagate_s.out`; +if (!open (NMOUT, "<./propagate_s.out")) +{ + print "not ok 1\n"; +} +else +{ + $propagations = 0; + + while (<NMOUT>) + { + $propagations++; + print "$_\n"; + } + if ($propagations != 0) + { + print "$propagations propagation(s)\n"; + print "not ok 1\n"; + } + else + { + print "ok 1\n"; + } + close NMOUT; + unlink "propagate_s.out"; +} |