aboutsummaryrefslogtreecommitdiff
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 0957f32..46d945c 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 5064152..5a0e4d6 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 5328530..91a7121 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 55174d4..e60e2dc 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 2c868d0..86a99e1 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 bde7a96..e64451f 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 f2c80fa..2be7de3 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 f7defa4..01acf9f 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 628522b..728c1e7 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 0cf65ba..d7c8210 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 293a327..f0b5d32 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 3b2809a..8ff911b 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 7590071..0043bca 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 cb0b275..0e46e99 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)