about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog51
-rw-r--r--Makeconfig5
-rw-r--r--crypt/Makefile11
-rw-r--r--linuxthreads/Makefile31
-rw-r--r--math/Makefile14
-rw-r--r--misc/Makefile4
-rw-r--r--rt/Makefile21
-rw-r--r--sysdeps/generic/bp-checks.h14
-rw-r--r--sysdeps/unix/make-syscalls.sh8
-rw-r--r--sysdeps/unix/sysv/linux/ia64/sigaction.c2
-rw-r--r--sysdeps/unix/sysv/linux/ia64/sigprocmask.c2
-rw-r--r--sysdeps/unix/sysv/linux/shmctl.c2
-rw-r--r--sysdeps/unix/sysv/linux/sigprocmask.c6
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c2
14 files changed, 100 insertions, 73 deletions
diff --git a/ChangeLog b/ChangeLog
index 0957f32b60..46d945ccf1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,54 @@
+2000-08-17  Greg McGary  <greg@mcgary.org>
+
+	* Makeconfig (link-extra-libs-bounded): Strip `-bp' suffix
+	from test program name when constructing suffix for $(LDLIBS-*).
+	(bounded-thread-library): New variable.
+	* crypt/Makefile
+	[build-shared, build-static] (libcrypt-dep): Remove variable.
+	($(addprefix $(objpfx),$(tests))): Consolidate individual dependencies.
+	[build-bounded] ($(tests:%=$(objpfx)%-bp)): Add dependencies.
+	* linuxthreads/Makefile (libpthread, librt): Remove variables.
+	(librt-tests): Add variable.  (tests): Use it.
+	[build-shared, build-static]
+	($(addprefix $(objpfx),$(tests)), $(addprefix $(objpfx),$(librt-tests))):
+	Consolidate individual dependencies.
+	[build-bounded]
+	($(tests:%=$(objpfx)%-bp), $(librt-tests:%=$(objpfx)%-bp)):
+	Add dependencies.
+	* math/Makefile (LDLIBS-*): Remove variables (they are redundant).
+	[build-bounded] ($(tests:%=$(objpfx)%-bp)): Add dependencies.
+	* misc/Makefile
+	[build-bounded] ($(objpfx)tst-tsearch-bp): Add dependencies.
+	* rt/Makefile
+	[build-shared, build-static]
+	($(addprefix $(objpfx),$(tests))): Consolidate individual dependencies.
+	[build-bounded] ($(tests:%=$(objpfx)%-bp)): Add dependencies.
+
+2000-08-17  Greg McGary  <greg@mcgary.org>
+
+	* sysdeps/generic/bp-checks.h: s/\(CHECK\w+\)opt/\1_NULL_OK/
+	* sysdeps/unix/make-syscalls.sh: Likewise.
+	* sysdeps/unix/sysv/linux/shmctl.c: Likewise.
+	* sysdeps/unix/sysv/linux/sigprocmask.c: Likewise.
+	* sysdeps/unix/sysv/linux/ia64/sigaction.c: Likewise.
+	* sysdeps/unix/sysv/linux/ia64/sigprocmask.c: Likewise.
+	* sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c: Likewise.
+
+2000-08-17  Greg McGary  <greg@mcgary.org>
+
+	* sysdeps/i386/fpu/s_frexp.S: Check bounds.
+	Wrap extern symbols in BP_SYM ().
+	* sysdeps/i386/fpu/s_frexpf.S: Likewise.
+	* sysdeps/i386/fpu/s_frexpl.S: Likewise.
+	* sysdeps/i386/fpu/s_remquo.S: Likewise.
+	* sysdeps/i386/fpu/s_remquof.S: Likewise.
+	* sysdeps/i386/fpu/s_remquol.S: Likewise.
+	* sysdeps/i386/fpu/s_sincos.S: Likewise.
+	* sysdeps/i386/fpu/s_sincosf.S: Likewise.
+	* sysdeps/i386/fpu/s_sincosl.S: Likewise.
+	* sysdeps/unix/sysv/linux/i386/clone.S: Likewise.
+	* sysdeps/unix/sysv/linux/i386/mmap64.S: Likewise.
+
 2000-08-16  Andreas Schwab  <schwab@suse.de>
 
 	* sysdeps/m68k/fpu/fegetexcept.c: New file.
diff --git a/Makeconfig b/Makeconfig
index 5064152366..5a0e4d6b16 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -471,7 +471,7 @@ link-extra-libs-static = $(link-extra-libs)
 endif
 endif
 link-libc-bounded = $(common-objpfx)libc_b.a $(gnulib) $(common-objpfx)libc_b.a
-link-extra-libs-bounded = $(foreach lib,$(LDLIBS-$(@F)),$(common-objpfx)$(lib)_b.a)
+link-extra-libs-bounded = $(foreach lib,$(LDLIBS-$(@F:%-bp=%)),$(common-objpfx)$(lib)_b.a)
 
 ifndef gnulib
 gnulib := -lgcc
@@ -653,7 +653,7 @@ ifeq (yes,$(build-bounded))
 # and thus aid debugging, since after all, BPs are a debugging tool.
 object-suffixes += .ob
 CPPFLAGS-.ob = -fbounded-pointers $(pic-default)
-CFLAGS-.ob = -g -O2 -fno-optimize-sibling-calls
+CFLAGS-.ob = -g -O2 -fno-optimize-sibling-calls -fno-strict-aliasing
 libtype.ob = lib%_b.a
 endif
 
@@ -793,6 +793,7 @@ endif # build-shared
 ifneq (,$(findstring linuxthreads,$(add-ons)))
 shared-thread-library = $(common-objpfx)linuxthreads/libpthread.so
 static-thread-library = $(common-objpfx)linuxthreads/libpthread.a
+bounded-thread-library = $(common-objpfx)linuxthreads/libpthread_b.a
 have-thread-library = yes
 rpath-dirs += linuxthreads
 endif
diff --git a/crypt/Makefile b/crypt/Makefile
index 532853069b..91a712109c 100644
--- a/crypt/Makefile
+++ b/crypt/Makefile
@@ -46,14 +46,13 @@ $(objpfx)md5test: $(objpfx)md5.o
 include ../Rules
 
 ifeq (yes,$(build-shared))
-libcrypt-dep = $(objpfx)libcrypt.so
+$(addprefix $(objpfx),$(tests)): $(objpfx)libcrypt.so
 else
-libcrypt-dep = $(objpfx)libcrypt.a
+$(addprefix $(objpfx),$(tests)): $(objpfx)libcrypt.a
+endif
+ifeq (yes,$(build-bounded))
+$(tests:%=$(objpfx)%-bp): $(objpfx)libcrypt_b.a
 endif
-
-$(objpfx)cert: $(libcrypt-dep)
-$(objpfx)md5c-test: $(libcrypt-dep)
-
 
 # Depend on libc.so so a DT_NEEDED is generated in the shared objects.
 # This ensures they will load libc.so for needed symbols if loaded by
diff --git a/linuxthreads/Makefile b/linuxthreads/Makefile
index 55174d4099..e60e2dc253 100644
--- a/linuxthreads/Makefile
+++ b/linuxthreads/Makefile
@@ -41,7 +41,9 @@ nodelete-yes = -Wl,--enable-new-dtags,-z,nodelete
 LDFLAGS-pthread.so = $(nodelete-$(have-z-nodelete))
 
 vpath %.c Examples
-tests = ex1 ex2 ex3 ex4 ex5 ex6 ex7 ex8 ex9 ex10 ex11 ex12 joinrace tststack
+
+librt-tests = ex10 ex11
+tests = ex1 ex2 ex3 ex4 ex5 ex6 ex7 ex8 ex9 $(librt-tests) ex12 joinrace tststack
 
 include ../Rules
 
@@ -58,24 +60,13 @@ $(objpfx)libpthread.so: $(common-objpfx)libc.so
 
 # Make sure we link with the thread library.
 ifeq ($(build-shared),yes)
-libpthread = $(objpfx)libpthread.so
-librt = $(common-objpfx)rt/librt.so
+$(addprefix $(objpfx),$(tests)): $(objpfx)libpthread.so
+$(addprefix $(objpfx),$(librt-tests)): $(common-objpfx)rt/librt.so
 else
-libpthread = $(objpfx)libpthread.a
-librt = $(common-objpfx)rt/librt.a
+$(addprefix $(objpfx),$(tests)): $(objpfx)libpthread.a
+$(addprefix $(objpfx),$(librt-tests)): $(common-objpfx)rt/librt.a
+endif
+ifeq ($(build-bounded),yes)
+$(tests:%=$(objpfx)%-bp): $(objpfx)libpthread_b.a
+$(librt-tests:%=$(objpfx)%-bp): $(common-objpfx)rt/librt_b.a
 endif
-
-$(objpfx)ex1: $(libpthread)
-$(objpfx)ex2: $(libpthread)
-$(objpfx)ex3: $(libpthread)
-$(objpfx)ex4: $(libpthread)
-$(objpfx)ex5: $(libpthread)
-$(objpfx)ex6: $(libpthread)
-$(objpfx)ex7: $(libpthread)
-$(objpfx)ex8: $(libpthread)
-$(objpfx)ex9: $(libpthread)
-$(objpfx)ex10: $(libpthread) $(librt)
-$(objpfx)ex11: $(libpthread) $(librt)
-$(objpfx)ex12: $(libpthread)
-$(objpfx)joinrace: $(libpthread)
-$(objpfx)tststack: $(libpthread)
diff --git a/math/Makefile b/math/Makefile
index 2c868d0eeb..86a99e1b03 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -119,17 +119,6 @@ CFLAGS-test-ldouble.c = -fno-inline -ffloat-store
 CFLAGS-test-ifloat.c = -U__LIBC_INTERNAL_MATH_INLINES -D__FAST_MATH__
 CFLAGS-test-idouble.c = -U__LIBC_INTERNAL_MATH_INLINES -D__FAST_MATH__
 CFLAGS-test-ildoubl.c = -U__LIBC_INTERNAL_MATH_INLINES -D__FAST_MATH__
-LDLIBS-test-ifloat = math/libm
-LDLIBS-test-idouble = math/libm
-LDLIBS-test-ildoubl = math/libm
-LDLIBS-test-float = math/libm
-LDLIBS-test-double = math/libm
-LDLIBS-test-ldouble = math/libm
-LDLIBS-test-matherr = math/libm
-LDLIBS-test-reduce = math/libm
-LDLIBS-atest-exp = math/libm
-LDLIBS-atest-sincos = math/libm
-LDLIBS-atest-exp2 = math/libm
 
 distribute += libm-test.inc gen-libm-test.pl README.libm-test
 
@@ -180,6 +169,9 @@ $(addprefix $(objpfx),$(tests)): $(objpfx)libm.so$(libm.so-version)
 else
 $(addprefix $(objpfx),$(tests)): $(objpfx)libm.a
 endif
+ifeq ($(build-bounded),yes)
+$(tests:%=$(objpfx)%-bp): $(objpfx)libm_b.a
+endif
 
 ifeq ($(build-static),yes)
 o = .o
diff --git a/misc/Makefile b/misc/Makefile
index bde7a96b63..e64451fe22 100644
--- a/misc/Makefile
+++ b/misc/Makefile
@@ -84,3 +84,7 @@ $(objpfx)tst-tsearch: $(common-objpfx)math/libm.so$(libm.so-version)
 else
 $(objpfx)tst-tsearch: $(common-objpfx)math/libm.a
 endif
+
+ifeq ($(build-bounded),yes)
+$(objpfx)tst-tsearch-bp: $(common-objpfx)math/libm_b.a
+endif
diff --git a/rt/Makefile b/rt/Makefile
index f2c80fa8ad..2be7de381d 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -56,21 +56,10 @@ include ../Rules
 $(objpfx)librt.so: $(common-objpfx)libc.so $(shared-thread-library)
 
 ifeq (yes,$(build-shared))
-$(objpfx)tst-aio: $(objpfx)librt.so $(shared-thread-library)
-$(objpfx)tst-aio2: $(objpfx)librt.so $(shared-thread-library)
-$(objpfx)tst-aio3: $(objpfx)librt.so $(shared-thread-library)
-$(objpfx)tst-aio4: $(objpfx)librt.so $(shared-thread-library)
-$(objpfx)tst-aio5: $(objpfx)librt.so $(shared-thread-library)
-$(objpfx)tst-aio64: $(objpfx)librt.so $(shared-thread-library)
-$(objpfx)tst-clock: $(objpfx)librt.so $(shared-thread-library)
-$(objpfx)tst-shm: $(objpfx)librt.so $(shared-thread-library)
+$(addprefix $(objpfx),$(tests)): $(objpfx)librt.so $(shared-thread-library)
 else
-$(objpfx)tst-aio: $(objpfx)librt.a $(static-thread-library)
-$(objpfx)tst-aio2: $(objpfx)librt.a $(static-thread-library)
-$(objpfx)tst-aio3: $(objpfx)librt.a $(static-thread-library)
-$(objpfx)tst-aio4: $(objpfx)librt.a $(static-thread-library)
-$(objpfx)tst-aio5: $(objpfx)librt.a $(static-thread-library)
-$(objpfx)tst-aio64: $(objpfx)librt.a $(static-thread-library)
-$(objpfx)tst-clock: $(objpfx)librt.a $(static-thread-library)
-$(objpfx)tst-shm: $(objpfx)librt.a $(static-thread-library)
+$(addprefix $(objpfx),$(tests)): $(objpfx)librt.a $(static-thread-library)
+endif
+ifeq (yes,$(build-bounded))
+$(tests:%=$(objpfx)%-bp): $(objpfx)librt_b.a $(bounded-thread-library)
 endif
diff --git a/sysdeps/generic/bp-checks.h b/sysdeps/generic/bp-checks.h
index f7defa417c..01acf9f4ae 100644
--- a/sysdeps/generic/bp-checks.h
+++ b/sysdeps/generic/bp-checks.h
@@ -57,22 +57,22 @@ extern void *__unbounded __ubp_memchr (const void *__unbounded, int, unsigned);
 /* Check bounds of a pointer seated to an array of N objects.  */
 # define CHECK_N(ARG, N) _CHECK_N ((ARG), (N), 1)
 /* Same as CHECK_N, but tolerate ARG == NULL.  */
-# define CHECK_Nopt(ARG, N) _CHECK_N ((ARG), (N), __ptrvalue (ARG))
+# define CHECK_N_NULL_OK(ARG, N) _CHECK_N ((ARG), (N), __ptrvalue (ARG))
 
 /* Check bounds of a pointer seated to a single object.  */
 # define CHECK_1(ARG) CHECK_N ((ARG), 1)
 /* Same as CHECK_1, but tolerate ARG == NULL.  */
-# define CHECK_1opt(ARG) CHECK_Nopt ((ARG), 1)
+# define CHECK_1_NULL_OK(ARG) CHECK_N_NULL_OK ((ARG), 1)
 
 /* Check for NUL-terminator within string's bounds.  */
 # define CHECK_STRING(ARG) _CHECK_STRING ((ARG), 1)
 /* Same as CHECK_STRING, but tolerate ARG == NULL.  */
-# define CHECK_STRINGopt(ARG) _CHECK_STRING ((ARG), __ptrvalue (ARG))
+# define CHECK_STRING_NULL_OK(ARG) _CHECK_STRING ((ARG), __ptrvalue (ARG))
 
 /* Check bounds of signal syscall args with type sigset_t.  */
 # define CHECK_SIGSET(SET) CHECK_N ((SET), _NSIG / (8 * sizeof *(SET)))
 /* Same as CHECK_SIGSET, but tolerate SET == NULL.  */
-# define CHECK_SIGSETopt(SET) CHECK_Nopt ((SET), _NSIG / (8 * sizeof *(SET)))
+# define CHECK_SIGSET_NULL_OK(SET) CHECK_N_NULL_OK ((SET), _NSIG / (8 * sizeof *(SET)))
 
 # if defined (_IOC_SIZESHIFT) && defined (_IOC_SIZEBITS)
 /* Extract the size of the ioctl data and check its bounds.  */
@@ -105,12 +105,12 @@ extern void *__unbounded __ubp_memchr (const void *__unbounded, int, unsigned);
 # define CHECK_BOUNDS_LOW(ARG) (ARG)
 # define CHECK_BOUNDS_HIGH(ARG) (ARG)
 # define CHECK_1(ARG) (ARG)
-# define CHECK_1opt(ARG) (ARG)
+# define CHECK_1_NULL_OK(ARG) (ARG)
 # define CHECK_N(ARG, N) (ARG)
-# define CHECK_Nopt(ARG, N) (ARG)
+# define CHECK_N_NULL_OK(ARG, N) (ARG)
 # define CHECK_STRING(ARG) (ARG)
 # define CHECK_SIGSET(SET) (SET)
-# define CHECK_SIGSETopt(SET) (SET)
+# define CHECK_SIGSET_NULL_OK(SET) (SET)
 # define CHECK_IOCTL(ARG, CMD) (ARG)
 # define CHECK_FCNTL(ARG, CMD) (ARG)
 # define BOUNDED_N(PTR, N) (PTR)
diff --git a/sysdeps/unix/make-syscalls.sh b/sysdeps/unix/make-syscalls.sh
index 628522b2c6..728c1e7471 100644
--- a/sysdeps/unix/make-syscalls.sh
+++ b/sysdeps/unix/make-syscalls.sh
@@ -257,15 +257,15 @@ shared-only-routines += $file
 	    sed -e 's/<\(a[1-9]\)>/__ptrvalue (\1a)/g' \
 		-e 's/<\(b[1-9]\)>, <\(n[1-9]\)>/CHECK_N (\1a, \2a), \2a/g' \
 		-e 's/<\(b[1-9]\)>, <\(N[1-9]\)>/CHECK_N (\1a, *CHECK_1 (\2a)), __ptrvalue (\2a)/g' \
-		-e 's/<\(B[1-9]\)>, <\(n[1-9]\)>/CHECK_Nopt (\1a, \2a), \2a/g' \
-		-e 's/<\(B[1-9]\)>, <\(N[1-9]\)>/CHECK_Nopt (\1a, *CHECK_1 (\2a)), __ptrvalue (\2a)/g' \
+		-e 's/<\(B[1-9]\)>, <\(n[1-9]\)>/CHECK_N_NULL_OK (\1a, \2a), \2a/g' \
+		-e 's/<\(B[1-9]\)>, <\(N[1-9]\)>/CHECK_N_NULL_OK (\1a, *CHECK_1 (\2a)), __ptrvalue (\2a)/g' \
 		-e 's/<\(f[1-9]\)>/CHECK_N (\1a, 2)/g' \
 		-e 's/<\(i[1-9]\)>, <\(F[1-9]\)>/\1a, CHECK_FCNTL (\2a, \1a)/g' \
 		-e 's/<\(i[1-9]\)>, <\(I[1-9]\)>/\1a, CHECK_IOCTL (\2a, \1a)/g' \
 		-e 's/<\(p[1-9]\)>/CHECK_1 (\1a)/g' \
-		-e 's/<\([PW][1-9]\)>/CHECK_1opt (\1a)/g' \
+		-e 's/<\([PW][1-9]\)>/CHECK_1_NULL_OK (\1a)/g' \
 		-e 's/<\(s[1-9]\)>/CHECK_STRING (\1a)/g' \
-		-e 's/<\(S[1-9]\)>/CHECK_STRINGopt (\1a)/g' \
+		-e 's/<\(S[1-9]\)>/CHECK_STRING_NULL_OK (\1a)/g' \
 		-e 's/<\([ivn][1-9]\)>/\1a/g'`)`echo $rtn $args |
 	    sed -e 's/<b0>.*<\(n[1-9]\)>.*/, \1a)/' \
 		-e 's/<.0>.*//'`; \\'; \\"
diff --git a/sysdeps/unix/sysv/linux/ia64/sigaction.c b/sysdeps/unix/sysv/linux/ia64/sigaction.c
index 0cf65ba5f5..d7c82106bb 100644
--- a/sysdeps/unix/sysv/linux/ia64/sigaction.c
+++ b/sysdeps/unix/sysv/linux/ia64/sigaction.c
@@ -47,7 +47,7 @@ __libc_sigaction (sig, act, oact)
   /* XXX The size argument hopefully will have to be changed to the
      real size of the user-level sigset_t.  */
   return INLINE_SYSCALL (rt_sigaction, 4, sig,
-			 CHECK_1opt (act), CHECK_1opt (oact), _NSIG / 8);
+			 CHECK_1_NULL_OK (act), CHECK_1_NULL_OK (oact), _NSIG / 8);
 }
 
 weak_alias (__libc_sigaction, __sigaction)
diff --git a/sysdeps/unix/sysv/linux/ia64/sigprocmask.c b/sysdeps/unix/sysv/linux/ia64/sigprocmask.c
index 293a32797c..f0b5d32c78 100644
--- a/sysdeps/unix/sysv/linux/ia64/sigprocmask.c
+++ b/sysdeps/unix/sysv/linux/ia64/sigprocmask.c
@@ -43,6 +43,6 @@ __sigprocmask (how, set, oset)
   /* XXX The size argument hopefully will have to be changed to the
      real size of the user-level sigset_t.  */
   return INLINE_SYSCALL (rt_sigprocmask, 4, how, CHECK_SIGSET (set),
-			 CHECK_SIGSETopt (oset), _NSIG / 8);
+			 CHECK_SIGSET_NULL_OK (oset), _NSIG / 8);
 }
 weak_alias (__sigprocmask, sigprocmask)
diff --git a/sysdeps/unix/sysv/linux/shmctl.c b/sysdeps/unix/sysv/linux/shmctl.c
index 3b2809ac5d..8ff911bca8 100644
--- a/sysdeps/unix/sysv/linux/shmctl.c
+++ b/sysdeps/unix/sysv/linux/shmctl.c
@@ -65,7 +65,7 @@ int
 __old_shmctl (int shmid, int cmd, struct __old_shmid_ds *buf)
 {
   return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid,
-			 cmd, 0, CHECK_1opt (buf));
+			 cmd, 0, CHECK_1_NULL_OK (buf));
 }
 compat_symbol (libc, __old_shmctl, shmctl, GLIBC_2_0);
 #endif
diff --git a/sysdeps/unix/sysv/linux/sigprocmask.c b/sysdeps/unix/sysv/linux/sigprocmask.c
index 7590071eea..0043bca971 100644
--- a/sysdeps/unix/sysv/linux/sigprocmask.c
+++ b/sysdeps/unix/sysv/linux/sigprocmask.c
@@ -46,7 +46,7 @@ __sigprocmask (how, set, oset)
 {
 #if __ASSUME_REALTIME_SIGNALS > 0
   return INLINE_SYSCALL (rt_sigprocmask, 4, how, CHECK_SIGSET (set),
-			 CHECK_SIGSETopt (oset), _NSIG / 8);
+			 CHECK_SIGSET_NULL_OK (oset), _NSIG / 8);
 #else
 # ifdef __NR_rt_sigprocmask
   /* First try the RT signals.  */
@@ -56,7 +56,7 @@ __sigprocmask (how, set, oset)
 	 real size of the user-level sigset_t.  */
       int saved_errno = errno;
       int result = INLINE_SYSCALL (rt_sigprocmask, 4, how, CHECK_SIGSET (set),
-				   CHECK_SIGSETopt (oset), _NSIG / 8);
+				   CHECK_SIGSET_NULL_OK (oset), _NSIG / 8);
 
       if (result >= 0 || errno != ENOSYS)
 	return result;
@@ -67,7 +67,7 @@ __sigprocmask (how, set, oset)
 # endif
 
   return INLINE_SYSCALL (sigprocmask, 3, how,
-			 CHECK_SIGSET (set), CHECK_SIGSETopt (oset));
+			 CHECK_SIGSET (set), CHECK_SIGSET_NULL_OK (oset));
 #endif
 }
 weak_alias (__sigprocmask, sigprocmask)
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c b/sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c
index cb0b275f1c..0e46e990d8 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c
@@ -37,6 +37,6 @@ __sigprocmask (how, set, oset)
   /* XXX The size argument hopefully will have to be changed to the
      real size of the user-level sigset_t.  */
   return INLINE_SYSCALL (rt_sigprocmask, 4, how, CHECK_SIGSET (set),
-			 CHECK_SIGSETopt (oset), _NSIG / 8);
+			 CHECK_SIGSET_NULL_OK (oset), _NSIG / 8);
 }
 weak_alias (__sigprocmask, sigprocmask)