diff options
-rw-r--r-- | ChangeLog | 51 | ||||
-rw-r--r-- | Makeconfig | 5 | ||||
-rw-r--r-- | crypt/Makefile | 11 | ||||
-rw-r--r-- | linuxthreads/Makefile | 31 | ||||
-rw-r--r-- | math/Makefile | 14 | ||||
-rw-r--r-- | misc/Makefile | 4 | ||||
-rw-r--r-- | rt/Makefile | 21 | ||||
-rw-r--r-- | sysdeps/generic/bp-checks.h | 14 | ||||
-rw-r--r-- | sysdeps/unix/make-syscalls.sh | 8 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/ia64/sigaction.c | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/ia64/sigprocmask.c | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/shmctl.c | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sigprocmask.c | 6 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c | 2 |
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) |