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.
This commit is contained in:
Greg McGary 2000-08-17 07:38:02 +00:00
parent 9e25f6e29b
commit e64911d1d6
14 changed files with 100 additions and 73 deletions

View file

@ -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.

View file

@ -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

View file

@ -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

View file

@ -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)

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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)

View file

@ -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>.*//'`; \\'; \\"

View file

@ -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)

View file

@ -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)

View file

@ -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

View file

@ -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)

View file

@ -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)