diff options
author | joseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d> | 2013-03-03 17:10:55 +0000 |
---|---|---|
committer | joseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d> | 2013-03-03 17:10:55 +0000 |
commit | d15f124ff59606604c0243ee19cd67bc99ecd09f (patch) | |
tree | f0b18e431b15b797d5f5dc980928cd1a26b8f74a /libc/sysdeps/unix/sysv/linux | |
parent | c1078e9067234e88d5c1ca8af18ae67b64141d66 (diff) | |
download | eglibc2-d15f124ff59606604c0243ee19cd67bc99ecd09f.tar.gz |
Merge changes between r22241 and r22552 from /fsf/trunk.
git-svn-id: svn://svn.eglibc.org/trunk@22553 7b3dc134-2b1b-0410-93df-9e9f96275f8d
Diffstat (limited to 'libc/sysdeps/unix/sysv/linux')
120 files changed, 259 insertions, 633 deletions
diff --git a/libc/sysdeps/unix/sysv/linux/aio_sigqueue.c b/libc/sysdeps/unix/sysv/linux/aio_sigqueue.c index 1cd5802d7..9af05e86a 100644 --- a/libc/sysdeps/unix/sysv/linux/aio_sigqueue.c +++ b/libc/sysdeps/unix/sysv/linux/aio_sigqueue.c @@ -47,8 +47,7 @@ __aio_sigqueue (sig, val, caller_pid) info.si_uid = getuid (); info.si_value = val; - return INLINE_SYSCALL (rt_sigqueueinfo, 3, info.si_pid, - sig, __ptrvalue (&info)); + return INLINE_SYSCALL (rt_sigqueueinfo, 3, info.si_pid, sig, &info); } #else # include <rt/aio_sigqueue.c> diff --git a/libc/sysdeps/unix/sysv/linux/dl-sysdep.c b/libc/sysdeps/unix/sysv/linux/dl-sysdep.c index a4ca119d8..e80cb8d9f 100644 --- a/libc/sysdeps/unix/sysv/linux/dl-sysdep.c +++ b/libc/sysdeps/unix/sysv/linux/dl-sysdep.c @@ -43,7 +43,7 @@ int attribute_hidden _dl_discover_osversion (void) { -#if (defined NEED_DL_SYSINFO || defined NEED_DL_SYSINFO_DSO) && defined SHARED +#if defined NEED_DL_SYSINFO_DSO && defined SHARED if (GLRO(dl_sysinfo_map) != NULL) { /* If the kernel-supplied DSO contains a note indicating the kernel's diff --git a/libc/sysdeps/unix/sysv/linux/execve.c b/libc/sysdeps/unix/sysv/linux/execve.c index 4aae3b430..5ee5ecbe5 100644 --- a/libc/sysdeps/unix/sysv/linux/execve.c +++ b/libc/sysdeps/unix/sysv/linux/execve.c @@ -21,7 +21,8 @@ #include <sysdep.h> #include <alloca.h> #include <sys/syscall.h> -#include <bp-checks.h> + +/* Consider moving to syscalls.list. */ int __execve (file, argv, envp) @@ -29,34 +30,6 @@ __execve (file, argv, envp) char *const argv[]; char *const envp[]; { -#if __BOUNDED_POINTERS__ - { - char *const *v; - int i; - char *__unbounded *__unbounded ubp_argv; - char *__unbounded *__unbounded ubp_envp; - char *__unbounded *__unbounded ubp_v; - - for (v = argv; *v; v++) - ; - i = v - argv + 1; - ubp_argv = (char *__unbounded *__unbounded) alloca (sizeof (*ubp_argv) * i); - for (v = argv, ubp_v = ubp_argv; --i; v++, ubp_v++) - *ubp_v = CHECK_STRING (*v); - *ubp_v = 0; - - for (v = envp; *v; v++) - ; - i = v - envp + 1; - ubp_envp = (char *__unbounded *__unbounded) alloca (sizeof (*ubp_envp) * i); - for (v = envp, ubp_v = ubp_envp; --i; v++, ubp_v++) - *ubp_v = CHECK_STRING (*v); - *ubp_v = 0; - - return INLINE_SYSCALL (execve, 3, CHECK_STRING (file), ubp_argv, ubp_envp); - } -#else return INLINE_SYSCALL (execve, 3, file, argv, envp); -#endif } weak_alias (__execve, execve) diff --git a/libc/sysdeps/unix/sysv/linux/fips-private.h b/libc/sysdeps/unix/sysv/linux/fips-private.h index ceae4891c..271dca3e5 100644 --- a/libc/sysdeps/unix/sysv/linux/fips-private.h +++ b/libc/sysdeps/unix/sysv/linux/fips-private.h @@ -29,7 +29,7 @@ /* Return true if FIPS mode is enabled. See sysdeps/generic/fips-private.h for more information. */ -static inline bool +static bool fips_enabled_p (void) { static enum diff --git a/libc/sysdeps/unix/sysv/linux/fxstat.c b/libc/sysdeps/unix/sysv/linux/fxstat.c index d2dd10910..3623fdf1c 100644 --- a/libc/sysdeps/unix/sysv/linux/fxstat.c +++ b/libc/sysdeps/unix/sysv/linux/fxstat.c @@ -28,7 +28,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <xstatconv.h> @@ -37,7 +36,7 @@ int __fxstat (int vers, int fd, struct stat *buf) { if (vers == _STAT_VER_KERNEL) - return INLINE_SYSCALL (fstat, 2, fd, CHECK_1 ((struct kernel_stat *) buf)); + return INLINE_SYSCALL (fstat, 2, fd, (struct kernel_stat *) buf); #ifdef STAT_IS_KERNEL_STAT errno = EINVAL; @@ -46,7 +45,7 @@ __fxstat (int vers, int fd, struct stat *buf) struct kernel_stat kbuf; int result; - result = INLINE_SYSCALL (fstat, 2, fd, __ptrvalue (&kbuf)); + result = INLINE_SYSCALL (fstat, 2, fd, &kbuf); if (result == 0) result = __xstat_conv (vers, &kbuf, buf); diff --git a/libc/sysdeps/unix/sysv/linux/fxstat64.c b/libc/sysdeps/unix/sysv/linux/fxstat64.c index a13beeba5..3cb1c3503 100644 --- a/libc/sysdeps/unix/sysv/linux/fxstat64.c +++ b/libc/sysdeps/unix/sysv/linux/fxstat64.c @@ -23,7 +23,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -33,7 +32,7 @@ int ___fxstat64 (int vers, int fd, struct stat64 *buf) { int result; - result = INLINE_SYSCALL (fstat64, 2, fd, CHECK_1 (buf)); + result = INLINE_SYSCALL (fstat64, 2, fd, buf); #if defined _HAVE_STAT64___ST_INO && __ASSUME_ST_INO_64_BIT == 0 if (__builtin_expect (!result, 1) && buf->__st_ino != (__ino_t) buf->st_ino) buf->st_ino = buf->__st_ino; diff --git a/libc/sysdeps/unix/sysv/linux/fxstatat.c b/libc/sysdeps/unix/sysv/linux/fxstatat.c index 1cb4acfd2..b8bd8a5c1 100644 --- a/libc/sysdeps/unix/sysv/linux/fxstatat.c +++ b/libc/sysdeps/unix/sysv/linux/fxstatat.c @@ -29,7 +29,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> #include <xstatconv.h> @@ -109,11 +108,11 @@ __fxstatat (int vers, int fd, const char *file, struct stat *st, int flag) if (vers == _STAT_VER_KERNEL) { if (flag & AT_SYMLINK_NOFOLLOW) - result = INTERNAL_SYSCALL (lstat, err, 2, CHECK_STRING (file), - CHECK_1 ((struct kernel_stat *) st)); + result = INTERNAL_SYSCALL (lstat, err, 2, file, + (struct kernel_stat *) st); else - result = INTERNAL_SYSCALL (stat, err, 2, CHECK_STRING (file), - CHECK_1 ((struct kernel_stat *) st)); + result = INTERNAL_SYSCALL (stat, err, 2, file, + (struct kernel_stat *) st); if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1)) return result; @@ -126,11 +125,9 @@ __fxstatat (int vers, int fd, const char *file, struct stat *st, int flag) } #else if (flag & AT_SYMLINK_NOFOLLOW) - result = INTERNAL_SYSCALL (lstat, err, 2, CHECK_STRING (file), - __ptrvalue (&kst)); + result = INTERNAL_SYSCALL (lstat, err, 2, file, &kst); else - result = INTERNAL_SYSCALL (stat, err, 2, CHECK_STRING (file), - __ptrvalue (&kst)); + result = INTERNAL_SYSCALL (stat, err, 2, file, &kst); if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1)) return __xstat_conv (vers, &kst, st); diff --git a/libc/sysdeps/unix/sysv/linux/fxstatat64.c b/libc/sysdeps/unix/sysv/linux/fxstatat64.c index 4837b733e..abd39ea90 100644 --- a/libc/sysdeps/unix/sysv/linux/fxstatat64.c +++ b/libc/sysdeps/unix/sysv/linux/fxstatat64.c @@ -25,7 +25,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -99,11 +98,9 @@ __fxstatat64 (int vers, int fd, const char *file, struct stat64 *st, int flag) } if (flag & AT_SYMLINK_NOFOLLOW) - result = INTERNAL_SYSCALL (lstat64, err, 2, CHECK_STRING (file), - CHECK_1 (st)); + result = INTERNAL_SYSCALL (lstat64, err, 2, file, st); else - result = INTERNAL_SYSCALL (stat64, err, 2, CHECK_STRING (file), - CHECK_1 (st)); + result = INTERNAL_SYSCALL (stat64, err, 2, file, st); if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1)) { # if defined _HAVE_STAT64___ST_INO && __ASSUME_ST_INO_64_BIT == 0 diff --git a/libc/sysdeps/unix/sysv/linux/gai_sigqueue.c b/libc/sysdeps/unix/sysv/linux/gai_sigqueue.c index 5097dc730..5c8cb4498 100644 --- a/libc/sysdeps/unix/sysv/linux/gai_sigqueue.c +++ b/libc/sysdeps/unix/sysv/linux/gai_sigqueue.c @@ -47,8 +47,7 @@ __gai_sigqueue (sig, val, caller_pid) info.si_uid = __getuid (); info.si_value = val; - return INLINE_SYSCALL (rt_sigqueueinfo, 3, info.si_pid, - sig, __ptrvalue (&info)); + return INLINE_SYSCALL (rt_sigqueueinfo, 3, info.si_pid, sig, &info); } #else # include <resolv/gai_sigqueue.c> diff --git a/libc/sysdeps/unix/sysv/linux/getcwd.c b/libc/sysdeps/unix/sysv/linux/getcwd.c index 72fb0c96a..212b6b7a2 100644 --- a/libc/sysdeps/unix/sysv/linux/getcwd.c +++ b/libc/sysdeps/unix/sysv/linux/getcwd.c @@ -26,7 +26,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -78,7 +77,7 @@ __getcwd (char *buf, size_t size) int retval; - retval = INLINE_SYSCALL (getcwd, 2, CHECK_STRING (path), alloc_size); + retval = INLINE_SYSCALL (getcwd, 2, path, alloc_size); if (retval >= 0) { #ifndef NO_ALLOCATION diff --git a/libc/sysdeps/unix/sysv/linux/getdents.c b/libc/sysdeps/unix/sysv/linux/getdents.c index eebdee8ec..2d588a602 100644 --- a/libc/sysdeps/unix/sysv/linux/getdents.c +++ b/libc/sysdeps/unix/sysv/linux/getdents.c @@ -28,7 +28,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <linux/posix_types.h> @@ -109,7 +108,7 @@ __GETDENTS (int fd, char *buf, size_t nbytes) && (offsetof (struct kernel_dirent, d_reclen) == offsetof (struct dirent, d_reclen))) { - retval = INLINE_SYSCALL (getdents, 3, fd, CHECK_N(buf, nbytes), nbytes); + retval = INLINE_SYSCALL (getdents, 3, fd, buf, nbytes); /* The kernel added the d_type value after the name. Change this now. */ @@ -158,8 +157,7 @@ __GETDENTS (int fd, char *buf, size_t nbytes) - offsetof (DIRENT_TYPE, d_name); kbuf = __alloca(kbytes); } - retval = INLINE_SYSCALL (getdents64, 3, fd, CHECK_N(kbuf, kbytes), - kbytes); + retval = INLINE_SYSCALL (getdents64, 3, fd, kbuf, kbytes); # ifndef __ASSUME_GETDENTS64_SYSCALL if (retval != -1 || (errno != EINVAL && errno != ENOSYS)) # endif @@ -255,8 +253,7 @@ __GETDENTS (int fd, char *buf, size_t nbytes) skdp = kdp = __alloca (red_nbytes); - retval = INLINE_SYSCALL (getdents, 3, fd, - CHECK_N ((char *) kdp, red_nbytes), red_nbytes); + retval = INLINE_SYSCALL (getdents, 3, fd, (char *) kdp, red_nbytes); if (retval == -1) return -1; diff --git a/libc/sysdeps/unix/sysv/linux/i386/bp-thunks.h b/libc/sysdeps/unix/sysv/linux/i386/bp-thunks.h deleted file mode 100644 index 59a42ddef..000000000 --- a/libc/sysdeps/unix/sysv/linux/i386/bp-thunks.h +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef __ASSEMBLER__ -# include <sysdeps/generic/bp-thunks.h> -# include <sys/vm86.h> -#endif diff --git a/libc/sysdeps/unix/sysv/linux/i386/brk.c b/libc/sysdeps/unix/sysv/linux/i386/brk.c index eea4e02b0..880542a61 100644 --- a/libc/sysdeps/unix/sysv/linux/i386/brk.c +++ b/libc/sysdeps/unix/sysv/linux/i386/brk.c @@ -20,8 +20,6 @@ #include <unistd.h> #include <sysdep.h> -#include <bp-checks.h> - /* This must be initialized data because commons can't have aliases. */ void *__curbrk = 0; @@ -33,11 +31,10 @@ weak_alias (__curbrk, ___brk_addr) int __brk (void *addr) { - void *__unbounded newbrk; + void *newbrk; INTERNAL_SYSCALL_DECL (err); - newbrk = (void *__unbounded) INTERNAL_SYSCALL (brk, err, 1, - __ptrvalue (addr)); + newbrk = (void *) INTERNAL_SYSCALL (brk, err, 1, addr); __curbrk = newbrk; diff --git a/libc/sysdeps/unix/sysv/linux/i386/chown.c b/libc/sysdeps/unix/sysv/linux/i386/chown.c index bb6d7009c..94f294007 100644 --- a/libc/sysdeps/unix/sysv/linux/i386/chown.c +++ b/libc/sysdeps/unix/sysv/linux/i386/chown.c @@ -21,7 +21,6 @@ #include <sysdep.h> #include <sys/syscall.h> #include <shlib-compat.h> -#include <bp-checks.h> #include <linux/posix_types.h> @@ -45,7 +44,7 @@ extern int __real_chown (const char *__file, uid_t __owner, gid_t __group); int __real_chown (const char *file, uid_t owner, gid_t group) { - return INLINE_SYSCALL (chown32, 3, CHECK_STRING (file), owner, group); + return INLINE_SYSCALL (chown32, 3, file, owner, group); } diff --git a/libc/sysdeps/unix/sysv/linux/i386/clone.S b/libc/sysdeps/unix/sysv/linux/i386/clone.S index 4df18c8be..dbd65d8da 100644 --- a/libc/sysdeps/unix/sysv/linux/i386/clone.S +++ b/libc/sysdeps/unix/sysv/linux/i386/clone.S @@ -23,20 +23,18 @@ #define _ERRNO_H 1 #include <bits/errno.h> #include <asm-syntax.h> -#include <bp-sym.h> -#include <bp-asm.h> /* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg, pid_t *ptid, struct user_desc *tls, pid_t *ctid); */ -#define PARMS LINKAGE /* no space for saved regs */ +#define PARMS 4 /* no space for saved regs */ #define FUNC PARMS #define STACK FUNC+4 -#define FLAGS STACK+PTR_SIZE +#define FLAGS STACK+4 #define ARG FLAGS+4 -#define PTID ARG+PTR_SIZE -#define TLS PTID+PTR_SIZE -#define CTID TLS+PTR_SIZE +#define PTID ARG+4 +#define TLS PTID+4 +#define CTID TLS+4 #define __NR_clone 120 #define SYS_clone 120 @@ -45,7 +43,7 @@ #define CLONE_THREAD 0x00010000 .text -ENTRY (BP_SYM (__clone)) +ENTRY (__clone) /* Sanity check arguments. */ movl $-EINVAL,%eax movl FUNC(%esp),%ecx /* no NULL function pointers */ @@ -156,6 +154,6 @@ L(nomoregetpid): cfi_endproc; cfi_startproc -PSEUDO_END (BP_SYM (__clone)) +PSEUDO_END (__clone) -weak_alias (BP_SYM (__clone), BP_SYM (clone)) +weak_alias (__clone, clone) diff --git a/libc/sysdeps/unix/sysv/linux/i386/fchownat.c b/libc/sysdeps/unix/sysv/linux/i386/fchownat.c index 8dab70022..4a8288b37 100644 --- a/libc/sysdeps/unix/sysv/linux/i386/fchownat.c +++ b/libc/sysdeps/unix/sysv/linux/i386/fchownat.c @@ -24,7 +24,6 @@ #include <sysdep.h> #include <sys/syscall.h> #include <shlib-compat.h> -#include <bp-checks.h> #include <linux/posix_types.h> #include <kernel-features.h> @@ -86,11 +85,9 @@ fchownat (int fd, const char *file, uid_t owner, gid_t group, int flag) INTERNAL_SYSCALL_DECL (err); if (flag & AT_SYMLINK_NOFOLLOW) - result = INTERNAL_SYSCALL (lchown32, err, 3, CHECK_STRING (file), owner, - group); + result = INTERNAL_SYSCALL (lchown32, err, 3, file, owner, group); else - result = INTERNAL_SYSCALL (chown32, err, 3, CHECK_STRING (file), owner, - group); + result = INTERNAL_SYSCALL (chown32, err, 3, file, owner, group); if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (result, err), 0)) { diff --git a/libc/sysdeps/unix/sysv/linux/i386/fxstat.c b/libc/sysdeps/unix/sysv/linux/i386/fxstat.c index 0ab94f53d..4f34a4cef 100644 --- a/libc/sysdeps/unix/sysv/linux/i386/fxstat.c +++ b/libc/sysdeps/unix/sysv/linux/i386/fxstat.c @@ -27,7 +27,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -40,12 +39,12 @@ __fxstat (int vers, int fd, struct stat *buf) int result; if (vers == _STAT_VER_KERNEL) - return INLINE_SYSCALL (fstat, 2, fd, CHECK_1 ((struct kernel_stat *) buf)); + return INLINE_SYSCALL (fstat, 2, fd, (struct kernel_stat *) buf); { struct stat64 buf64; - result = INLINE_SYSCALL (fstat64, 2, fd, __ptrvalue (&buf64)); + result = INLINE_SYSCALL (fstat64, 2, fd, &buf64); if (result == 0) result = __xstat32_conv (vers, &buf64, buf); return result; diff --git a/libc/sysdeps/unix/sysv/linux/i386/fxstatat.c b/libc/sysdeps/unix/sysv/linux/i386/fxstatat.c index 866a6bc55..7ecbbe089 100644 --- a/libc/sysdeps/unix/sysv/linux/i386/fxstatat.c +++ b/libc/sysdeps/unix/sysv/linux/i386/fxstatat.c @@ -29,7 +29,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -102,20 +101,18 @@ __fxstatat (int vers, int fd, const char *file, struct stat *st, int flag) if (vers == _STAT_VER_KERNEL) { if (flag & AT_SYMLINK_NOFOLLOW) - result = INTERNAL_SYSCALL (lstat, err, 2, CHECK_STRING (file), - CHECK_1 ((struct kernel_stat *) st)); + result = INTERNAL_SYSCALL (lstat, err, 2, file, + (struct kernel_stat *) st); else - result = INTERNAL_SYSCALL (stat, err, 2, CHECK_STRING (file), - CHECK_1 ((struct kernel_stat *) st)); + result = INTERNAL_SYSCALL (stat, err, 2, file, + (struct kernel_stat *) st); goto out; } if (flag & AT_SYMLINK_NOFOLLOW) - result = INTERNAL_SYSCALL (lstat64, err, 2, CHECK_STRING (file), - __ptrvalue (&st64)); + result = INTERNAL_SYSCALL (lstat64, err, 2, file, &st64); else - result = INTERNAL_SYSCALL (stat64, err, 2, CHECK_STRING (file), - __ptrvalue (&st64)); + result = INTERNAL_SYSCALL (stat64, err, 2, file, &st64); if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1)) return __xstat32_conv (vers, &st64, st); diff --git a/libc/sysdeps/unix/sysv/linux/i386/getgroups.c b/libc/sysdeps/unix/sysv/linux/i386/getgroups.c index c7e44fd03..7d85f8f39 100644 --- a/libc/sysdeps/unix/sysv/linux/i386/getgroups.c +++ b/libc/sysdeps/unix/sysv/linux/i386/getgroups.c @@ -22,7 +22,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <linux/posix_types.h> @@ -34,7 +33,7 @@ int __getgroups (int n, gid_t *groups) { - return INLINE_SYSCALL (getgroups32, 2, n, CHECK_N (groups, n)); + return INLINE_SYSCALL (getgroups32, 2, n, groups); } weak_alias (__getgroups, getgroups) diff --git a/libc/sysdeps/unix/sysv/linux/i386/getresgid.c b/libc/sysdeps/unix/sysv/linux/i386/getresgid.c index e0b6999dd..bdc3b82b6 100644 --- a/libc/sysdeps/unix/sysv/linux/i386/getresgid.c +++ b/libc/sysdeps/unix/sysv/linux/i386/getresgid.c @@ -23,15 +23,13 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> /* Consider moving to syscalls.list. */ int __getresgid (gid_t *rgid, gid_t *egid, gid_t *sgid) { - return INLINE_SYSCALL (getresgid32, 3, CHECK_1 (rgid), - CHECK_1 (egid), CHECK_1 (sgid)); + return INLINE_SYSCALL (getresgid32, 3, rgid, egid, sgid); } libc_hidden_def (__getresgid) weak_alias (__getresgid, getresgid) diff --git a/libc/sysdeps/unix/sysv/linux/i386/getresuid.c b/libc/sysdeps/unix/sysv/linux/i386/getresuid.c index 5a06ad68d..49b330284 100644 --- a/libc/sysdeps/unix/sysv/linux/i386/getresuid.c +++ b/libc/sysdeps/unix/sysv/linux/i386/getresuid.c @@ -23,15 +23,13 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> /* Consider moving to syscalls.list. */ int __getresuid (uid_t *ruid, uid_t *euid, uid_t *suid) { - return INLINE_SYSCALL (getresuid32, 3, CHECK_1 (ruid), - CHECK_1 (euid), CHECK_1 (suid)); + return INLINE_SYSCALL (getresuid32, 3, ruid, euid, suid); } libc_hidden_def (__getresuid) weak_alias (__getresuid, getresuid) diff --git a/libc/sysdeps/unix/sysv/linux/i386/lchown.c b/libc/sysdeps/unix/sysv/linux/i386/lchown.c index 9357df4b4..0b7073c14 100644 --- a/libc/sysdeps/unix/sysv/linux/i386/lchown.c +++ b/libc/sysdeps/unix/sysv/linux/i386/lchown.c @@ -20,7 +20,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <linux/posix_types.h> @@ -29,7 +28,7 @@ int __lchown (const char *file, uid_t owner, gid_t group) { - return INLINE_SYSCALL (lchown32, 3, CHECK_STRING (file), owner, group); + return INLINE_SYSCALL (lchown32, 3, file, owner, group); } weak_alias (__lchown, lchown) diff --git a/libc/sysdeps/unix/sysv/linux/i386/lxstat.c b/libc/sysdeps/unix/sysv/linux/i386/lxstat.c index a3d42d49f..8e595b1b5 100644 --- a/libc/sysdeps/unix/sysv/linux/i386/lxstat.c +++ b/libc/sysdeps/unix/sysv/linux/i386/lxstat.c @@ -27,7 +27,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -41,12 +40,12 @@ __lxstat (int vers, const char *name, struct stat *buf) int result; if (vers == _STAT_VER_KERNEL) - return INLINE_SYSCALL (lstat, 2, CHECK_STRING (name), CHECK_1 ((struct kernel_stat *) buf)); + return INLINE_SYSCALL (lstat, 2, name, (struct kernel_stat *) buf); { struct stat64 buf64; - result = INLINE_SYSCALL (lstat64, 2, CHECK_STRING (name), __ptrvalue (&buf64)); + result = INLINE_SYSCALL (lstat64, 2, name, &buf64); if (result == 0) result = __xstat32_conv (vers, &buf64, buf); return result; diff --git a/libc/sysdeps/unix/sysv/linux/i386/mmap64.S b/libc/sysdeps/unix/sysv/linux/i386/mmap64.S index 4f9c7856f..31a0f6782 100644 --- a/libc/sysdeps/unix/sysv/linux/i386/mmap64.S +++ b/libc/sysdeps/unix/sysv/linux/i386/mmap64.S @@ -16,8 +16,6 @@ <http://www.gnu.org/licenses/>. */ #include <sysdep.h> -#include <bp-sym.h> -#include <bp-asm.h> #include <kernel-features.h> @@ -25,9 +23,9 @@ #define ENOSYS 38 #define SVRSP 16 /* saved register space */ -#define PARMS LINKAGE+SVRSP /* space for 4 saved regs */ +#define PARMS 4+SVRSP /* space for 4 saved regs */ #define ADDR PARMS -#define LEN ADDR+PTR_SIZE +#define LEN ADDR+4 #define PROT LEN+4 #define FLAGS PROT+4 #define FD FLAGS+4 @@ -35,7 +33,7 @@ #define OFFHI OFFLO+4 .text -ENTRY (BP_SYM (__mmap64)) +ENTRY (__mmap64) /* Save registers. */ pushl %ebp @@ -115,6 +113,6 @@ L(einval): movl $-EINVAL, %eax jmp SYSCALL_ERROR_LABEL -PSEUDO_END (BP_SYM (__mmap64)) +PSEUDO_END (__mmap64) -weak_alias (BP_SYM (__mmap64), BP_SYM (mmap64)) +weak_alias (__mmap64, mmap64) diff --git a/libc/sysdeps/unix/sysv/linux/i386/msgctl.c b/libc/sysdeps/unix/sysv/linux/i386/msgctl.c index 37cfcb6fc..e0af4e3e9 100644 --- a/libc/sysdeps/unix/sysv/linux/i386/msgctl.c +++ b/libc/sysdeps/unix/sysv/linux/i386/msgctl.c @@ -23,20 +23,19 @@ #include <sysdep.h> #include <string.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <shlib-compat.h> struct __old_msqid_ds { struct __old_ipc_perm msg_perm; /* structure describing operation permission */ - struct msg *__unbounded __msg_first; /* pointer to first message on queue */ - struct msg *__unbounded __msg_last; /* pointer to last message on queue */ + struct msg *__msg_first; /* pointer to first message on queue */ + struct msg *__msg_last; /* pointer to last message on queue */ __time_t msg_stime; /* time of last msgsnd command */ __time_t msg_rtime; /* time of last msgrcv command */ __time_t msg_ctime; /* time of last change */ - struct wait_queue *__unbounded __wwait; /* ??? */ - struct wait_queue *__unbounded __rwait; /* ??? */ + struct wait_queue *__wwait; /* ??? */ + struct wait_queue *__rwait; /* ??? */ unsigned short int __msg_cbytes; /* current number of bytes on queue */ unsigned short int msg_qnum; /* number of messages currently on queue */ unsigned short int msg_qbytes; /* max number of bytes allowed on queue */ @@ -56,8 +55,7 @@ int attribute_compat_text_section __old_msgctl (int msqid, int cmd, struct __old_msqid_ds *buf) { - return INLINE_SYSCALL (ipc, 5, IPCOP_msgctl, - msqid, cmd, 0, CHECK_1 (buf)); + return INLINE_SYSCALL (ipc, 5, IPCOP_msgctl, msqid, cmd, 0, buf); } compat_symbol (libc, __old_msgctl, msgctl, GLIBC_2_0); #endif @@ -66,7 +64,7 @@ int __new_msgctl (int msqid, int cmd, struct msqid_ds *buf) { return INLINE_SYSCALL (ipc, 5, IPCOP_msgctl, - msqid, cmd | __IPC_64, 0, CHECK_1 (buf)); + msqid, cmd | __IPC_64, 0, buf); } versioned_symbol (libc, __new_msgctl, msgctl, GLIBC_2_2); diff --git a/libc/sysdeps/unix/sysv/linux/i386/nptl/libc.abilist b/libc/sysdeps/unix/sysv/linux/i386/nptl/libc.abilist index 67d592959..3cb314ddf 100644 --- a/libc/sysdeps/unix/sysv/linux/i386/nptl/libc.abilist +++ b/libc/sysdeps/unix/sysv/linux/i386/nptl/libc.abilist @@ -1819,6 +1819,9 @@ GLIBC_2.17 clock_nanosleep F clock_settime F secure_getenv F +GLIBC_2.18 + GLIBC_2.18 A + __cxa_thread_atexit_impl F GLIBC_2.2 GLIBC_2.2 A _IO_adjust_wcolumn F diff --git a/libc/sysdeps/unix/sysv/linux/i386/posix_fadvise64.S b/libc/sysdeps/unix/sysv/linux/i386/posix_fadvise64.S index 5f9de9d80..6c42c610f 100644 --- a/libc/sysdeps/unix/sysv/linux/i386/posix_fadvise64.S +++ b/libc/sysdeps/unix/sysv/linux/i386/posix_fadvise64.S @@ -16,15 +16,13 @@ <http://www.gnu.org/licenses/>. */ #include <sysdep.h> -#include <bp-sym.h> -#include <bp-asm.h> #define EINVAL 22 #define ENOSYS 38 #define EOVERFLOW 75 #define SVRSP 16 /* saved register space */ -#define PARMS LINKAGE+SVRSP /* space for 4 saved regs */ +#define PARMS 4+SVRSP /* space for 4 saved regs */ #define FD PARMS #define OFFLO FD+4 #define OFFHI OFFLO+4 @@ -33,7 +31,7 @@ #define FLAGS LENHI+4 .text -ENTRY (BP_SYM (__posix_fadvise64_l64)) +ENTRY (__posix_fadvise64_l64) /* Save registers. */ pushl %ebp @@ -81,7 +79,7 @@ ENTRY (BP_SYM (__posix_fadvise64_l64)) /* Successful; return the syscall's value. */ ret -END (BP_SYM (__posix_fadvise64_l64)) +END (__posix_fadvise64_l64) .section .text.compat, "ax" ENTRY (__posix_fadvise64_l32) diff --git a/libc/sysdeps/unix/sysv/linux/i386/semctl.c b/libc/sysdeps/unix/sysv/linux/i386/semctl.c index f3299eace..67e75a1c7 100644 --- a/libc/sysdeps/unix/sysv/linux/i386/semctl.c +++ b/libc/sysdeps/unix/sysv/linux/i386/semctl.c @@ -49,9 +49,6 @@ union semun struct __old_semid_ds *__old_buf; }; -#include <bp-checks.h> -#include <bp-semctl.h> /* definition of CHECK_SEMCTL needs union semum */ - /* Return identifier for array of NSEMS semaphores associated with KEY. */ #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2) @@ -75,7 +72,7 @@ __old_semctl (int semid, int semnum, int cmd, ...) va_end (ap); return INLINE_SYSCALL (ipc, 5, IPCOP_semctl, semid, semnum, cmd, - CHECK_SEMCTL (&arg, semid, cmd)); + &arg); } compat_symbol (libc, __old_semctl, semctl, GLIBC_2_0); #endif @@ -94,7 +91,7 @@ __new_semctl (int semid, int semnum, int cmd, ...) va_end (ap); return INLINE_SYSCALL (ipc, 5, IPCOP_semctl, semid, semnum, cmd | __IPC_64, - CHECK_SEMCTL (&arg, semid, cmd | __IPC_64)); + &arg); } versioned_symbol (libc, __new_semctl, semctl, GLIBC_2_2); diff --git a/libc/sysdeps/unix/sysv/linux/i386/semtimedop.S b/libc/sysdeps/unix/sysv/linux/i386/semtimedop.S index 01250f65e..35eb4a872 100644 --- a/libc/sysdeps/unix/sysv/linux/i386/semtimedop.S +++ b/libc/sysdeps/unix/sysv/linux/i386/semtimedop.S @@ -21,14 +21,14 @@ #define SYSOP_semtimedop 4 #define SVRSP 12 /* saved register space */ -#define PARMS LINKAGE+SVRSP /* space for 3 saved regs */ +#define PARMS 4+SVRSP /* space for 3 saved regs */ #define SEMID PARMS #define SOPS SEMID+4 -#define NSOPS SOPS+PTR_SIZE +#define NSOPS SOPS+4 #define TIMEOUT NSOPS+4 .text -ENTRY (BP_SYM (semtimedop)) +ENTRY (semtimedop) pushl %ebp cfi_adjust_cfa_offset (4) @@ -70,4 +70,4 @@ ENTRY (BP_SYM (semtimedop)) #ifdef PIC .align 4 #endif -PSEUDO_END (BP_SYM (semtimedop)) +PSEUDO_END (semtimedop) diff --git a/libc/sysdeps/unix/sysv/linux/i386/setgroups.c b/libc/sysdeps/unix/sysv/linux/i386/setgroups.c index c0895a19b..701ce6ee7 100644 --- a/libc/sysdeps/unix/sysv/linux/i386/setgroups.c +++ b/libc/sysdeps/unix/sysv/linux/i386/setgroups.c @@ -22,7 +22,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <setxid.h> #include <linux/posix_types.h> @@ -33,6 +32,6 @@ int setgroups (size_t n, const gid_t *groups) { - return INLINE_SETXID_SYSCALL (setgroups32, 2, n, CHECK_N (groups, n)); + return INLINE_SETXID_SYSCALL (setgroups32, 2, n, groups); } libc_hidden_def (setgroups) diff --git a/libc/sysdeps/unix/sysv/linux/i386/setrlimit.c b/libc/sysdeps/unix/sysv/linux/i386/setrlimit.c index cc1184710..0fe31e19d 100644 --- a/libc/sysdeps/unix/sysv/linux/i386/setrlimit.c +++ b/libc/sysdeps/unix/sysv/linux/i386/setrlimit.c @@ -22,17 +22,16 @@ #include <sysdep.h> #include <sys/syscall.h> #include <shlib-compat.h> -#include <bp-checks.h> extern int __new_setrlimit (enum __rlimit_resource resource, - const struct rlimit *__unboundedrlimits); + const struct rlimit *rlimits); /* Consider moving to syscalls.list. */ int __new_setrlimit (enum __rlimit_resource resource, const struct rlimit *rlimits) { - return INLINE_SYSCALL (setrlimit, 2, resource, CHECK_1 (rlimits)); + return INLINE_SYSCALL (setrlimit, 2, resource, rlimits); } weak_alias (__new_setrlimit, __setrlimit); diff --git a/libc/sysdeps/unix/sysv/linux/i386/shmctl.c b/libc/sysdeps/unix/sysv/linux/i386/shmctl.c index 15f055d84..8459dff32 100644 --- a/libc/sysdeps/unix/sysv/linux/i386/shmctl.c +++ b/libc/sysdeps/unix/sysv/linux/i386/shmctl.c @@ -24,7 +24,6 @@ #include <string.h> #include <sys/syscall.h> #include <bits/wordsize.h> -#include <bp-checks.h> #include <shlib-compat.h> @@ -39,8 +38,8 @@ struct __old_shmid_ds __ipc_pid_t shm_lpid; /* pid of last shmop */ unsigned short int shm_nattch; /* number of current attaches */ unsigned short int __shm_npages; /* size of segment (pages) */ - unsigned long int *__unbounded __shm_pages; /* array of ptrs to frames -> SHMMAX */ - struct vm_area_struct *__unbounded __attaches; /* descriptors for attaches */ + unsigned long int *__shm_pages; /* array of ptrs to frames -> SHMMAX */ + struct vm_area_struct *__attaches; /* descriptors for attaches */ }; struct __old_shminfo @@ -63,8 +62,7 @@ int attribute_compat_text_section __old_shmctl (int shmid, int cmd, struct __old_shmid_ds *buf) { - return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, - shmid, cmd, 0, CHECK_1 (buf)); + return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd, 0, buf); } compat_symbol (libc, __old_shmctl, shmctl, GLIBC_2_0); #endif @@ -73,7 +71,7 @@ int __new_shmctl (int shmid, int cmd, struct shmid_ds *buf) { return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, - shmid, cmd | __IPC_64, 0, CHECK_1 (buf)); + shmid, cmd | __IPC_64, 0, buf); } versioned_symbol (libc, __new_shmctl, shmctl, GLIBC_2_2); diff --git a/libc/sysdeps/unix/sysv/linux/i386/sigaction.c b/libc/sysdeps/unix/sysv/linux/i386/sigaction.c index 6b70b1541..d2bac9122 100644 --- a/libc/sysdeps/unix/sysv/linux/i386/sigaction.c +++ b/libc/sysdeps/unix/sysv/linux/i386/sigaction.c @@ -72,8 +72,8 @@ __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact) /* XXX The size argument hopefully will have to be changed to the real size of the user-level sigset_t. */ result = INLINE_SYSCALL (rt_sigaction, 4, - sig, act ? __ptrvalue (&kact) : NULL, - oact ? __ptrvalue (&koact) : NULL, _NSIG / 8); + sig, act ? &kact : NULL, + oact ? &koact : NULL, _NSIG / 8); if (oact && result >= 0) { diff --git a/libc/sysdeps/unix/sysv/linux/i386/sysdep.h b/libc/sysdeps/unix/sysv/linux/i386/sysdep.h index 071da7140..684fe27d6 100644 --- a/libc/sysdeps/unix/sysv/linux/i386/sysdep.h +++ b/libc/sysdeps/unix/sysv/linux/i386/sysdep.h @@ -21,8 +21,6 @@ /* There is some commonality. */ #include <sysdeps/unix/i386/sysdep.h> -#include <bp-sym.h> -#include <bp-asm.h> /* Defines RTLD_PRIVATE_ERRNO and USE_DL_SYSINFO. */ #include <dl-sysdep.h> #include <tls.h> diff --git a/libc/sysdeps/unix/sysv/linux/i386/xstat.c b/libc/sysdeps/unix/sysv/linux/i386/xstat.c index 4e7354aaa..e2abe8bb9 100644 --- a/libc/sysdeps/unix/sysv/linux/i386/xstat.c +++ b/libc/sysdeps/unix/sysv/linux/i386/xstat.c @@ -27,7 +27,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -41,12 +40,12 @@ __xstat (int vers, const char *name, struct stat *buf) int result; if (vers == _STAT_VER_KERNEL) - return INLINE_SYSCALL (stat, 2, CHECK_STRING (name), CHECK_1 ((struct kernel_stat *) buf)); + return INLINE_SYSCALL (stat, 2, name, (struct kernel_stat *) buf); { struct stat64 buf64; - result = INLINE_SYSCALL (stat64, 2, CHECK_STRING (name), __ptrvalue (&buf64)); + result = INLINE_SYSCALL (stat64, 2, name, &buf64); if (result == 0) result = __xstat32_conv (vers, &buf64, buf); return result; diff --git a/libc/sysdeps/unix/sysv/linux/kernel-features.h b/libc/sysdeps/unix/sysv/linux/kernel-features.h index 21eef4372..8fdff7e38 100644 --- a/libc/sysdeps/unix/sysv/linux/kernel-features.h +++ b/libc/sysdeps/unix/sysv/linux/kernel-features.h @@ -187,6 +187,11 @@ # define __ASSUME_PWRITEV 1 #endif +/* Support for FUTEX_*_REQUEUE_PI was added in 2.6.31. */ +#if __LINUX_KERNEL_VERSION >= 0x02061f +# define __ASSUME_REQUEUE_PI 1 +#endif + /* Support for F_GETOWN_EX was introduced in 2.6.32. */ #if __LINUX_KERNEL_VERSION >= 0x020620 # define __ASSUME_F_GETOWN_EX 1 diff --git a/libc/sysdeps/unix/sysv/linux/llseek.c b/libc/sysdeps/unix/sysv/linux/llseek.c index 4580b872f..a15be3024 100644 --- a/libc/sysdeps/unix/sysv/linux/llseek.c +++ b/libc/sysdeps/unix/sysv/linux/llseek.c @@ -32,7 +32,7 @@ __llseek (int fd, loff_t offset, int whence) return (loff_t) (INLINE_SYSCALL (_llseek, 5, fd, (off_t) (offset >> 32), (off_t) (offset & 0xffffffff), - __ptrvalue (&retval), whence) ?: retval); + &retval, whence) ?: retval); } weak_alias (__llseek, llseek) strong_alias (__llseek, __libc_lseek64) diff --git a/libc/sysdeps/unix/sysv/linux/lxstat.c b/libc/sysdeps/unix/sysv/linux/lxstat.c index 7abd2b45a..3a838918e 100644 --- a/libc/sysdeps/unix/sysv/linux/lxstat.c +++ b/libc/sysdeps/unix/sysv/linux/lxstat.c @@ -27,7 +27,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <xstatconv.h> @@ -36,8 +35,7 @@ int __lxstat (int vers, const char *name, struct stat *buf) { if (vers == _STAT_VER_KERNEL) - return INLINE_SYSCALL (lstat, 2, CHECK_STRING (name), - CHECK_1 ((struct kernel_stat *) buf)); + return INLINE_SYSCALL (lstat, 2, name, (struct kernel_stat *) buf); #ifdef STAT_IS_KERNEL_STAT errno = EINVAL; @@ -46,7 +44,7 @@ __lxstat (int vers, const char *name, struct stat *buf) struct kernel_stat kbuf; int result; - result = INLINE_SYSCALL (lstat, 2, CHECK_STRING (name), __ptrvalue (&kbuf)); + result = INLINE_SYSCALL (lstat, 2, name, &kbuf); if (result == 0) result = __xstat_conv (vers, &kbuf, buf); diff --git a/libc/sysdeps/unix/sysv/linux/lxstat64.c b/libc/sysdeps/unix/sysv/linux/lxstat64.c index 12ab8202b..de889966f 100644 --- a/libc/sysdeps/unix/sysv/linux/lxstat64.c +++ b/libc/sysdeps/unix/sysv/linux/lxstat64.c @@ -23,7 +23,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -32,7 +31,7 @@ int ___lxstat64 (int vers, const char *name, struct stat64 *buf) { int result; - result = INLINE_SYSCALL (lstat64, 2, CHECK_STRING (name), CHECK_1 (buf)); + result = INLINE_SYSCALL (lstat64, 2, name, buf); #if defined _HAVE_STAT64___ST_INO && __ASSUME_ST_INO_64_BIT == 0 if (__builtin_expect (!result, 1) && buf->__st_ino != (__ino_t) buf->st_ino) buf->st_ino = buf->__st_ino; diff --git a/libc/sysdeps/unix/sysv/linux/mmap64.c b/libc/sysdeps/unix/sysv/linux/mmap64.c index 7d94c1db9..175e4abba 100644 --- a/libc/sysdeps/unix/sysv/linux/mmap64.c +++ b/libc/sysdeps/unix/sysv/linux/mmap64.c @@ -22,7 +22,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -54,14 +53,10 @@ __mmap64 (void *addr, size_t len, int prot, int flags, int fd, off64_t offset) return MAP_FAILED; } void *result; - __ptrvalue (result) = (void *__unbounded) - INLINE_SYSCALL (mmap2, 6, __ptrvalue (addr), + result = (void *) + INLINE_SYSCALL (mmap2, 6, addr, len, prot, flags, fd, (off_t) (offset >> MMAP2_PAGE_SHIFT)); -#if __BOUNDED_POINTERS__ - __ptrlow (result) = __ptrvalue (result); - __ptrhigh (result) = __ptrvalue (result) + len; -#endif return result; } weak_alias (__mmap64, mmap64) diff --git a/libc/sysdeps/unix/sysv/linux/msgctl.c b/libc/sysdeps/unix/sysv/linux/msgctl.c index 4dc6b0887..0bbaf086c 100644 --- a/libc/sysdeps/unix/sysv/linux/msgctl.c +++ b/libc/sysdeps/unix/sysv/linux/msgctl.c @@ -24,20 +24,19 @@ #include <string.h> #include <sys/syscall.h> #include <shlib-compat.h> -#include <bp-checks.h> #include <kernel-features.h> struct __old_msqid_ds { struct __old_ipc_perm msg_perm; /* structure describing operation permission */ - struct msg *__unbounded __msg_first; /* pointer to first message on queue */ - struct msg *__unbounded __msg_last; /* pointer to last message on queue */ + struct msg *__msg_first; /* pointer to first message on queue */ + struct msg *__msg_last; /* pointer to last message on queue */ __time_t msg_stime; /* time of last msgsnd command */ __time_t msg_rtime; /* time of last msgrcv command */ __time_t msg_ctime; /* time of last change */ - struct wait_queue *__unbounded __wwait; /* ??? */ - struct wait_queue *__unbounded __rwait; /* ??? */ + struct wait_queue *__wwait; /* ??? */ + struct wait_queue *__rwait; /* ??? */ unsigned short int __msg_cbytes; /* current number of bytes on queue */ unsigned short int msg_qnum; /* number of messages currently on queue */ unsigned short int msg_qbytes; /* max number of bytes allowed on queue */ @@ -57,7 +56,7 @@ int attribute_compat_text_section __old_msgctl (int msqid, int cmd, struct __old_msqid_ds *buf) { - return INLINE_SYSCALL (ipc, 5, IPCOP_msgctl, msqid, cmd, 0, CHECK_1 (buf)); + return INLINE_SYSCALL (ipc, 5, IPCOP_msgctl, msqid, cmd, 0, buf); } compat_symbol (libc, __old_msgctl, msgctl, GLIBC_2_0); #endif @@ -67,7 +66,7 @@ __new_msgctl (int msqid, int cmd, struct msqid_ds *buf) { #if __ASSUME_IPC64 > 0 return INLINE_SYSCALL (ipc, 5, IPCOP_msgctl, - msqid, cmd | __IPC_64, 0, CHECK_1 (buf)); + msqid, cmd | __IPC_64, 0, buf); #else switch (cmd) { case MSG_STAT: @@ -76,7 +75,7 @@ __new_msgctl (int msqid, int cmd, struct msqid_ds *buf) break; default: return INLINE_SYSCALL (ipc, 5, IPCOP_msgctl, - msqid, cmd, 0, CHECK_1 (buf)); + msqid, cmd, 0, buf); } { @@ -86,7 +85,7 @@ __new_msgctl (int msqid, int cmd, struct msqid_ds *buf) /* Unfortunately there is no way how to find out for sure whether we should use old or new msgctl. */ result = INLINE_SYSCALL (ipc, 5, IPCOP_msgctl, - msqid, cmd | __IPC_64, 0, CHECK_1 (buf)); + msqid, cmd | __IPC_64, 0, buf); if (result != -1 || errno != EINVAL) return result; @@ -104,8 +103,7 @@ __new_msgctl (int msqid, int cmd, struct msqid_ds *buf) return -1; } } - result = INLINE_SYSCALL (ipc, 5, IPCOP_msgctl, - msqid, cmd, 0, __ptrvalue (&old)); + result = INLINE_SYSCALL (ipc, 5, IPCOP_msgctl, msqid, cmd, 0, &old); if (result != -1 && cmd != IPC_SET) { memset(buf, 0, sizeof(*buf)); diff --git a/libc/sysdeps/unix/sysv/linux/msgrcv.c b/libc/sysdeps/unix/sysv/linux/msgrcv.c index f9b399ebd..7ec9b253b 100644 --- a/libc/sysdeps/unix/sysv/linux/msgrcv.c +++ b/libc/sysdeps/unix/sysv/linux/msgrcv.c @@ -23,13 +23,11 @@ #include <sysdep-cancel.h> #include <sys/syscall.h> -#include <bp-checks.h> - /* Kludge to work around Linux' restriction of only up to five arguments to a system call. */ struct ipc_kludge { - void *__unbounded msgp; + void *msgp; long int msgtyp; }; @@ -46,17 +44,16 @@ __libc_msgrcv (msqid, msgp, msgsz, msgtyp, msgflg) fives parameters to a system call. */ struct ipc_kludge tmp; - tmp.msgp = CHECK_N (msgp, msgsz); + tmp.msgp = msgp; tmp.msgtyp = msgtyp; if (SINGLE_THREAD_P) - return INLINE_SYSCALL (ipc, 5, IPCOP_msgrcv, msqid, msgsz, msgflg, - __ptrvalue (&tmp)); + return INLINE_SYSCALL (ipc, 5, IPCOP_msgrcv, msqid, msgsz, msgflg, &tmp); int oldtype = LIBC_CANCEL_ASYNC (); ssize_t result = INLINE_SYSCALL (ipc, 5, IPCOP_msgrcv, msqid, msgsz, msgflg, - __ptrvalue (&tmp)); + &tmp); LIBC_CANCEL_RESET (oldtype); diff --git a/libc/sysdeps/unix/sysv/linux/msgsnd.c b/libc/sysdeps/unix/sysv/linux/msgsnd.c index 853ea9174..556159b32 100644 --- a/libc/sysdeps/unix/sysv/linux/msgsnd.c +++ b/libc/sysdeps/unix/sysv/linux/msgsnd.c @@ -23,8 +23,6 @@ #include <sysdep-cancel.h> #include <sys/syscall.h> -#include <bp-checks.h> - int __libc_msgsnd (msqid, msgp, msgsz, msgflg) int msqid; @@ -34,12 +32,12 @@ __libc_msgsnd (msqid, msgp, msgsz, msgflg) { if (SINGLE_THREAD_P) return INLINE_SYSCALL (ipc, 5, IPCOP_msgsnd, msqid, msgsz, - msgflg, (void *) CHECK_N (msgp, msgsz)); + msgflg, (void *) msgp); int oldtype = LIBC_CANCEL_ASYNC (); int result = INLINE_SYSCALL (ipc, 5, IPCOP_msgsnd, msqid, msgsz, - msgflg, (void *) CHECK_N (msgp, msgsz)); + msgflg, (void *) msgp); LIBC_CANCEL_RESET (oldtype); diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c b/libc/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c index 36512a0fc..f60748507 100644 --- a/libc/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c +++ b/libc/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c @@ -16,7 +16,6 @@ <http://www.gnu.org/licenses/>. */ #include <sysdep.h> -#include <bp-checks.h> #include <stddef.h> #include <sys/time.h> #include <time.h> @@ -33,7 +32,7 @@ __gettimeofday (tv, tz) struct timeval *tv; struct timezone *tz; { - return INLINE_VSYSCALL (gettimeofday, 2, CHECK_1 (tv), CHECK_1 (tz)); + return INLINE_VSYSCALL (gettimeofday, 2, tv, tz); } libc_hidden_def (__gettimeofday) weak_alias (__gettimeofday, gettimeofday) diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/libc-start.c b/libc/sysdeps/unix/sysv/linux/powerpc/libc-start.c index c1794227b..ba3dc5a18 100644 --- a/libc/sysdeps/unix/sysv/linux/powerpc/libc-start.c +++ b/libc/sysdeps/unix/sysv/linux/powerpc/libc-start.c @@ -19,8 +19,6 @@ #include <unistd.h> #include <ldsodefs.h> #include <sysdep.h> -#include <bp-start.h> -#include <bp-sym.h> int __cache_line_size attribute_hidden; @@ -34,43 +32,35 @@ int __cache_line_size attribute_hidden; struct startup_info { - void *__unbounded sda_base; + void *sda_base; int (*main) (int, char **, char **, void *); int (*init) (int, char **, char **, void *); void (*fini) (void); }; int -/* GKM FIXME: GCC: this should get __BP_ prefix by virtue of the - BPs in the arglist of startup_info.main and startup_info.init. */ - BP_SYM (__libc_start_main) (int argc, char *__unbounded *__unbounded ubp_av, - char *__unbounded *__unbounded ubp_ev, - ElfW (auxv_t) * __unbounded auxvec, - void (*rtld_fini) (void), - struct startup_info *__unbounded stinfo, - char *__unbounded *__unbounded stack_on_entry) +__libc_start_main (int argc, char **argv, + char **ev, + ElfW (auxv_t) * auxvec, + void (*rtld_fini) (void), + struct startup_info *stinfo, + char **stack_on_entry) { -#if __BOUNDED_POINTERS__ - char **argv; -#else -# define argv ubp_av -#endif - /* the PPC SVR4 ABI says that the top thing on the stack will be a NULL pointer, so if not we assume that we're being called as a statically-linked program by Linux... */ if (*stack_on_entry != NULL) { - char *__unbounded * __unbounded temp; + char **temp; /* ...in which case, we have argc as the top thing on the stack, followed by argv (NULL-terminated), envp (likewise), and the auxilary vector. */ /* 32/64-bit agnostic load from stack */ - argc = *(long int *__unbounded) stack_on_entry; - ubp_av = stack_on_entry + 1; - ubp_ev = ubp_av + argc + 1; + argc = *(long int *) stack_on_entry; + argv = stack_on_entry + 1; + ev = argv + argc + 1; #ifdef HAVE_AUX_VECTOR - temp = ubp_ev; + temp = ev; while (*temp != NULL) ++temp; auxvec = (ElfW (auxv_t) *)++ temp; @@ -100,7 +90,7 @@ int break; } - return generic_start_main (stinfo->main, argc, ubp_av, auxvec, + return generic_start_main (stinfo->main, argc, argv, auxvec, stinfo->init, stinfo->fini, rtld_fini, stack_on_entry); } diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/brk.S b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/brk.S index 2fc9fa237..eb27f42cd 100644 --- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/brk.S +++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/brk.S @@ -19,13 +19,10 @@ #include <sysdep.h> #define _ERRNO_H 1 #include <bits/errno.h> -#include <bp-sym.h> -#include <bp-asm.h> .comm __curbrk,4,4 .section ".text" -ENTRY (BP_SYM (__brk)) - DISCARD_BOUNDS (r3) /* the bounds are meaningless, so toss 'em */ +ENTRY (__brk) mflr r0 stwu r1,-16(r1) cfi_adjust_cfa_offset (16) @@ -50,6 +47,6 @@ ENTRY (BP_SYM (__brk)) blelr+ li r3,ENOMEM b __syscall_error@local -END (BP_SYM (__brk)) +END (__brk) -weak_alias (BP_SYM (__brk), BP_SYM (brk)) +weak_alias (__brk, brk) diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S index 197b85203..5790eff4c 100644 --- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S +++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S @@ -20,8 +20,6 @@ #define _ERRNO_H 1 #include <bits/errno.h> #include <kernel-features.h> -#include <bp-sym.h> -#include <bp-asm.h> #define CLONE_VM 0x00000100 #define CLONE_THREAD 0x00010000 @@ -35,10 +33,7 @@ int flags [r5], void *arg [r6], void *parent_tid [r7], void *tls [r8], void *child_tid [r9]); */ -ENTRY (BP_SYM (__clone)) - /* GKM FIXME: add bounds checks, where sensible. */ - DISCARD_BOUNDS (r4) - DISCARD_BOUNDS (r6) +ENTRY (__clone) /* Check for child_stack == NULL || fn == NULL. */ cmpwi cr0,r4,0 @@ -124,6 +119,6 @@ L(badargs): b __syscall_error@local cfi_startproc -END (BP_SYM (__clone)) +END (__clone) -weak_alias (BP_SYM (__clone), BP_SYM (clone)) +weak_alias (__clone, clone) diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libc.abilist b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libc.abilist index 8e4595825..f27b48b3c 100644 --- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libc.abilist +++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libc.abilist @@ -1781,6 +1781,9 @@ GLIBC_2.17 clock_nanosleep F clock_settime F secure_getenv F +GLIBC_2.18 + GLIBC_2.18 A + __cxa_thread_atexit_impl F GLIBC_2.2 GLIBC_2.2 A _IO_adjust_wcolumn F diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pread.c b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pread.c index 3695d8fb9..619db3261 100644 --- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pread.c +++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pread.c @@ -22,7 +22,6 @@ #include <sysdep-cancel.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -38,7 +37,7 @@ __libc_pread (fd, buf, count, offset) if (SINGLE_THREAD_P) { /* On PPC32 64bit values are aligned in odd/even register pairs. */ - result = INLINE_SYSCALL (pread, 6, fd, CHECK_N (buf, count), count, + result = INLINE_SYSCALL (pread, 6, fd, buf, count, 0, offset >> 31, offset); return result; @@ -47,7 +46,7 @@ __libc_pread (fd, buf, count, offset) int oldtype = LIBC_CANCEL_ASYNC (); /* On PPC32 64bit values are aligned in odd/even register pairs. */ - result = INLINE_SYSCALL (pread, 6, fd, CHECK_N (buf, count), count, + result = INLINE_SYSCALL (pread, 6, fd, buf, count, 0, offset >> 31, offset); LIBC_CANCEL_RESET (oldtype); diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pread64.c b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pread64.c index 12e83aa95..75407b316 100644 --- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pread64.c +++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pread64.c @@ -21,7 +21,6 @@ #include <sysdep-cancel.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -38,7 +37,7 @@ __libc_pread64 (fd, buf, count, offset) if (SINGLE_THREAD_P) { /* On PPC32 64bit values are aligned in odd/even register pairs. */ - result = INLINE_SYSCALL (pread, 6, fd, CHECK_N (buf, count), count, + result = INLINE_SYSCALL (pread, 6, fd, buf, count, 0, (long) (offset >> 32), (long) offset); @@ -48,7 +47,7 @@ __libc_pread64 (fd, buf, count, offset) int oldtype = LIBC_CANCEL_ASYNC (); /* On PPC32 64bit values are aligned in odd/even register pairs. */ - result = INLINE_SYSCALL (pread, 6, fd, CHECK_N (buf, count), count, + result = INLINE_SYSCALL (pread, 6, fd, buf, count, 0, (long) (offset >> 32), (long) offset); diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite.c b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite.c index 005e24f96..e71c91b26 100644 --- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite.c +++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite.c @@ -22,7 +22,6 @@ #include <sysdep-cancel.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -39,7 +38,7 @@ __libc_pwrite (fd, buf, count, offset) if (SINGLE_THREAD_P) { /* On PPC32 64bit values are aligned in odd/even register pairs. */ - result = INLINE_SYSCALL (pwrite, 6, fd, CHECK_N (buf, count), count, + result = INLINE_SYSCALL (pwrite, 6, fd, buf, count, 0, offset >> 31, offset); return result; @@ -48,7 +47,7 @@ __libc_pwrite (fd, buf, count, offset) int oldtype = LIBC_CANCEL_ASYNC (); /* On PPC32 64bit values are aligned in odd/even register pairs. */ - result = INLINE_SYSCALL (pwrite, 6, fd, CHECK_N (buf, count), count, + result = INLINE_SYSCALL (pwrite, 6, fd, buf, count, 0, offset >> 31, offset); LIBC_CANCEL_RESET (oldtype); diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite64.c b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite64.c index f001c6e97..7094e93d3 100644 --- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite64.c +++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite64.c @@ -21,7 +21,6 @@ #include <sysdep-cancel.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -38,7 +37,7 @@ __libc_pwrite64 (fd, buf, count, offset) if (SINGLE_THREAD_P) { /* On PPC32 64bit values are aligned in odd/even register pairs. */ - result = INLINE_SYSCALL (pwrite, 6, fd, CHECK_N (buf, count), count, + result = INLINE_SYSCALL (pwrite, 6, fd, buf, count, 0, (long) (offset >> 32), (long) offset); @@ -48,7 +47,7 @@ __libc_pwrite64 (fd, buf, count, offset) int oldtype = LIBC_CANCEL_ASYNC (); /* On PPC32 64bit values are aligned in odd/even register pairs. */ - result = INLINE_SYSCALL (pwrite, 6, fd, CHECK_N (buf, count), count, + result = INLINE_SYSCALL (pwrite, 6, fd, buf, count, 0, (long) (offset >> 32), (long) offset); diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/truncate64.c b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/truncate64.c index 3146dde71..c018cecdb 100644 --- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/truncate64.c +++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/truncate64.c @@ -21,7 +21,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> /* Truncate the file referenced by FD to LENGTH bytes. */ int @@ -30,7 +29,7 @@ truncate64 (path, length) off64_t length; { /* On PPC32 64bit values are aligned in odd/even register pairs. */ - int result = INLINE_SYSCALL (truncate64, 4, CHECK_STRING (path), 0, + int result = INLINE_SYSCALL (truncate64, 4, path, 0, (long) (length >> 32), (long) length); return result; diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libc.abilist b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libc.abilist index 8eaaccdfc..195b58757 100644 --- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libc.abilist +++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libc.abilist @@ -87,6 +87,9 @@ GLIBC_2.17 clock_nanosleep F clock_settime F secure_getenv F +GLIBC_2.18 + GLIBC_2.18 A + __cxa_thread_atexit_impl F GLIBC_2.3 GLIBC_2.3 A _Exit F diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/pread.c b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/pread.c index 896a415d8..70f1d6c58 100644 --- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/pread.c +++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/pread.c @@ -22,7 +22,6 @@ #include <sysdep-cancel.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -40,16 +39,14 @@ __libc_pread (fd, buf, count, offset) if (SINGLE_THREAD_P) { - result = INLINE_SYSCALL (pread, 4, fd, CHECK_N (buf, count), count, - offset); + result = INLINE_SYSCALL (pread, 4, fd, buf, count, offset); return result; } int oldtype = LIBC_CANCEL_ASYNC (); - result = INLINE_SYSCALL (pread, 4, fd, CHECK_N (buf, count), count, - offset); + result = INLINE_SYSCALL (pread, 4, fd, buf, count, offset); LIBC_CANCEL_RESET (oldtype); diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/pread64.c b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/pread64.c index aaf18e5da..a11f6e31f 100644 --- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/pread64.c +++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/pread64.c @@ -21,7 +21,6 @@ #include <sysdep-cancel.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -39,16 +38,14 @@ __libc_pread64 (fd, buf, count, offset) if (SINGLE_THREAD_P) { - result = INLINE_SYSCALL (pread, 4, fd, CHECK_N (buf, count), count, - offset); + result = INLINE_SYSCALL (pread, 4, fd, buf, count, offset); return result; } int oldtype = LIBC_CANCEL_ASYNC (); - result = INLINE_SYSCALL (pread, 4, fd, CHECK_N (buf, count), count, - offset); + result = INLINE_SYSCALL (pread, 4, fd, buf, count, offset); LIBC_CANCEL_RESET (oldtype); diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/pwrite.c b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/pwrite.c index 9795756f2..0ccb0a98a 100644 --- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/pwrite.c +++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/pwrite.c @@ -22,7 +22,6 @@ #include <sysdep-cancel.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -40,16 +39,14 @@ __libc_pwrite (fd, buf, count, offset) if (SINGLE_THREAD_P) { - result = INLINE_SYSCALL (pwrite, 4, fd, CHECK_N (buf, count), count, - offset); + result = INLINE_SYSCALL (pwrite, 4, fd, buf, count, offset); return result; } int oldtype = LIBC_CANCEL_ASYNC (); - result = INLINE_SYSCALL (pwrite, 4, fd, CHECK_N (buf, count), count, - offset); + result = INLINE_SYSCALL (pwrite, 4, fd, buf, count, offset); LIBC_CANCEL_RESET (oldtype); diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/pwrite64.c b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/pwrite64.c index 65ddefd3c..6a8acb451 100644 --- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/pwrite64.c +++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/pwrite64.c @@ -21,7 +21,6 @@ #include <sysdep-cancel.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -39,16 +38,14 @@ __libc_pwrite64 (fd, buf, count, offset) if (SINGLE_THREAD_P) { - result = INLINE_SYSCALL (pwrite, 4, fd, CHECK_N (buf, count), count, - offset); + result = INLINE_SYSCALL (pwrite, 4, fd, buf, count, offset); return result; } int oldtype = LIBC_CANCEL_ASYNC (); - result = INLINE_SYSCALL (pwrite, 4, fd, CHECK_N (buf, count), count, - offset); + result = INLINE_SYSCALL (pwrite, 4, fd, buf, count, offset); LIBC_CANCEL_RESET (oldtype); diff --git a/libc/sysdeps/unix/sysv/linux/pread.c b/libc/sysdeps/unix/sysv/linux/pread.c index aa3ee6379..1494879ab 100644 --- a/libc/sysdeps/unix/sysv/linux/pread.c +++ b/libc/sysdeps/unix/sysv/linux/pread.c @@ -23,7 +23,6 @@ #include <sysdep-cancel.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -44,7 +43,7 @@ do_pread (int fd, void *buf, size_t count, off_t offset) ssize_t result; assert (sizeof (offset) == 4); - result = INLINE_SYSCALL (pread, 5, fd, CHECK_N (buf, count), count, + result = INLINE_SYSCALL (pread, 5, fd, buf, count, __LONG_LONG_PAIR (offset >> 31, offset)); return result; diff --git a/libc/sysdeps/unix/sysv/linux/pread64.c b/libc/sysdeps/unix/sysv/linux/pread64.c index 36cb66b8b..be829ce3f 100644 --- a/libc/sysdeps/unix/sysv/linux/pread64.c +++ b/libc/sysdeps/unix/sysv/linux/pread64.c @@ -22,7 +22,6 @@ #include <sysdep-cancel.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -39,7 +38,7 @@ do_pread64 (int fd, void *buf, size_t count, off64_t offset) { ssize_t result; - result = INLINE_SYSCALL (pread, 5, fd, CHECK_N (buf, count), count, + result = INLINE_SYSCALL (pread, 5, fd, buf, count, __LONG_LONG_PAIR ((off_t) (offset >> 32), (off_t) (offset & 0xffffffff))); diff --git a/libc/sysdeps/unix/sysv/linux/ptrace.c b/libc/sysdeps/unix/sysv/linux/ptrace.c index 926dfbd9e..3a6ca6c0e 100644 --- a/libc/sysdeps/unix/sysv/linux/ptrace.c +++ b/libc/sysdeps/unix/sysv/linux/ptrace.c @@ -24,7 +24,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> long int ptrace (enum __ptrace_request request, ...) @@ -43,79 +42,7 @@ ptrace (enum __ptrace_request request, ...) if (request > 0 && request < 4) data = &ret; -#if __BOUNDED_POINTERS__ - switch (request) - { - case PTRACE_PEEKTEXT: - case PTRACE_PEEKDATA: - case PTRACE_PEEKUSER: - case PTRACE_POKETEXT: - case PTRACE_POKEDATA: - case PTRACE_POKEUSER: - (void) CHECK_1 ((int *) addr); - (void) CHECK_1 ((int *) data); - break; - - case PTRACE_GETREGS: - case PTRACE_SETREGS: -#ifdef __i386__ - (void) CHECK_1 ((struct user_regs_struct *) data); -#else - /* We don't know the size of data, so the best we can do is ensure - that `data' is valid for at least one word. */ - (void) CHECK_1 ((int *) data); -#endif - break; - - case PTRACE_GETFPREGS: - case PTRACE_SETFPREGS: -#ifdef __i386__ - (void) CHECK_1 ((struct user_fpregs_struct *) data); -#else - /* We don't know the size of data, so the best we can do is ensure - that `data' is valid for at least one word. */ - (void) CHECK_1 ((int *) data); -#endif - break; - - case PTRACE_GETFPXREGS: - case PTRACE_SETFPXREGS: -#ifdef __i386__ - (void) CHECK_1 ((struct user_fpxregs_struct *) data); -#else - /* We don't know the size of data, so the best we can do is ensure - that `data' is valid for at least one word. */ - (void) CHECK_1 ((int *) data); -#endif - break; - - case PTRACE_GETSIGINFO: - case PTRACE_SETSIGINFO: - (void) CHECK_1 ((siginfo_t *) data); - break; - - case PTRACE_GETEVENTMSG: - (void) CHECK_1 ((unsigned long *) data); - break; - - case PTRACE_SETOPTIONS: - (void) CHECK_1 ((long *) data); - break; - - case PTRACE_TRACEME: - case PTRACE_CONT: - case PTRACE_KILL: - case PTRACE_SINGLESTEP: - case PTRACE_ATTACH: - case PTRACE_DETACH: - case PTRACE_SYSCALL: - /* Neither `data' nor `addr' needs any checks. */ - break; - }; -#endif - - res = INLINE_SYSCALL (ptrace, 4, request, pid, - __ptrvalue (addr), __ptrvalue (data)); + res = INLINE_SYSCALL (ptrace, 4, request, pid, addr, data); if (res >= 0 && request > 0 && request < 4) { __set_errno (0); diff --git a/libc/sysdeps/unix/sysv/linux/pwrite.c b/libc/sysdeps/unix/sysv/linux/pwrite.c index 25147167d..5a31d17ed 100644 --- a/libc/sysdeps/unix/sysv/linux/pwrite.c +++ b/libc/sysdeps/unix/sysv/linux/pwrite.c @@ -23,7 +23,6 @@ #include <sysdep-cancel.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -44,7 +43,7 @@ do_pwrite (int fd, const void *buf, size_t count, off_t offset) ssize_t result; assert (sizeof (offset) == 4); - result = INLINE_SYSCALL (pwrite, 5, fd, CHECK_N (buf, count), count, + result = INLINE_SYSCALL (pwrite, 5, fd, buf, count, __LONG_LONG_PAIR (offset >> 31, offset)); return result; diff --git a/libc/sysdeps/unix/sysv/linux/pwrite64.c b/libc/sysdeps/unix/sysv/linux/pwrite64.c index f2a99b662..fb46e4ba5 100644 --- a/libc/sysdeps/unix/sysv/linux/pwrite64.c +++ b/libc/sysdeps/unix/sysv/linux/pwrite64.c @@ -22,7 +22,6 @@ #include <sysdep-cancel.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -39,7 +38,7 @@ do_pwrite64 (int fd, const void *buf, size_t count, off64_t offset) { ssize_t result; - result = INLINE_SYSCALL (pwrite, 5, fd, CHECK_N (buf, count), count, + result = INLINE_SYSCALL (pwrite, 5, fd, buf, count, __LONG_LONG_PAIR ((off_t) (offset >> 32), (off_t) (offset & 0xffffffff))); diff --git a/libc/sysdeps/unix/sysv/linux/readv.c b/libc/sysdeps/unix/sysv/linux/readv.c index efee11d4e..8bdb97a0b 100644 --- a/libc/sysdeps/unix/sysv/linux/readv.c +++ b/libc/sysdeps/unix/sysv/linux/readv.c @@ -23,7 +23,6 @@ #include <sysdep-cancel.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> #ifndef __ASSUME_COMPLETE_READV_WRITEV @@ -47,12 +46,12 @@ __libc_readv (fd, vector, count) ssize_t result; if (SINGLE_THREAD_P) - result = INLINE_SYSCALL (readv, 3, fd, CHECK_N (vector, count), count); + result = INLINE_SYSCALL (readv, 3, fd, vector, count); else { int oldtype = LIBC_CANCEL_ASYNC (); - result = INLINE_SYSCALL (readv, 3, fd, CHECK_N (vector, count), count); + result = INLINE_SYSCALL (readv, 3, fd, vector, count); LIBC_CANCEL_RESET (oldtype); } diff --git a/libc/sysdeps/unix/sysv/linux/s390/gettimeofday.c b/libc/sysdeps/unix/sysv/linux/s390/gettimeofday.c index 54c5e1d20..22df7282a 100644 --- a/libc/sysdeps/unix/sysv/linux/s390/gettimeofday.c +++ b/libc/sysdeps/unix/sysv/linux/s390/gettimeofday.c @@ -16,7 +16,6 @@ <http://www.gnu.org/licenses/>. */ #include <sysdep.h> -#include <bp-checks.h> #include <stddef.h> #include <sys/time.h> #include <time.h> @@ -33,7 +32,7 @@ __gettimeofday (tv, tz) struct timeval *tv; struct timezone *tz; { - return INLINE_VSYSCALL (gettimeofday, 2, CHECK_1 (tv), CHECK_1 (tz)); + return INLINE_VSYSCALL (gettimeofday, 2, tv, tz); } libc_hidden_def (__gettimeofday) weak_alias (__gettimeofday, gettimeofday) diff --git a/libc/sysdeps/unix/sysv/linux/s390/s390-32/chown.c b/libc/sysdeps/unix/sysv/linux/s390/s390-32/chown.c index 408d24aae..cd0cb743b 100644 --- a/libc/sysdeps/unix/sysv/linux/s390/s390-32/chown.c +++ b/libc/sysdeps/unix/sysv/linux/s390/s390-32/chown.c @@ -21,7 +21,6 @@ #include <sysdep.h> #include <sys/syscall.h> #include <shlib-compat.h> -#include <bp-checks.h> #include <linux/posix_types.h> @@ -42,7 +41,7 @@ int __real_chown (const char *file, uid_t owner, gid_t group) { - return INLINE_SYSCALL (chown32, 3, CHECK_STRING (file), owner, group); + return INLINE_SYSCALL (chown32, 3, file, owner, group); } diff --git a/libc/sysdeps/unix/sysv/linux/s390/s390-32/lchown.c b/libc/sysdeps/unix/sysv/linux/s390/s390-32/lchown.c index 9357df4b4..0b7073c14 100644 --- a/libc/sysdeps/unix/sysv/linux/s390/s390-32/lchown.c +++ b/libc/sysdeps/unix/sysv/linux/s390/s390-32/lchown.c @@ -20,7 +20,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <linux/posix_types.h> @@ -29,7 +28,7 @@ int __lchown (const char *file, uid_t owner, gid_t group) { - return INLINE_SYSCALL (lchown32, 3, CHECK_STRING (file), owner, group); + return INLINE_SYSCALL (lchown32, 3, file, owner, group); } weak_alias (__lchown, lchown) diff --git a/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libc.abilist b/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libc.abilist index d9914ff53..b6256d5c2 100644 --- a/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libc.abilist +++ b/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libc.abilist @@ -1771,6 +1771,9 @@ GLIBC_2.17 clock_nanosleep F clock_settime F secure_getenv F +GLIBC_2.18 + GLIBC_2.18 A + __cxa_thread_atexit_impl F GLIBC_2.2 GLIBC_2.2 A _IO_adjust_wcolumn F diff --git a/libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist b/libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist index ef1ead306..265f66d90 100644 --- a/libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist +++ b/libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist @@ -92,6 +92,9 @@ GLIBC_2.17 clock_nanosleep F clock_settime F secure_getenv F +GLIBC_2.18 + GLIBC_2.18 A + __cxa_thread_atexit_impl F GLIBC_2.2 GLIBC_2.2 A _Exit F diff --git a/libc/sysdeps/unix/sysv/linux/semctl.c b/libc/sysdeps/unix/sysv/linux/semctl.c index 40d31f914..b28861d42 100644 --- a/libc/sysdeps/unix/sysv/linux/semctl.c +++ b/libc/sysdeps/unix/sysv/linux/semctl.c @@ -33,10 +33,10 @@ struct __old_semid_ds struct __old_ipc_perm sem_perm; /* operation permission struct */ __time_t sem_otime; /* last semop() time */ __time_t sem_ctime; /* last time changed by semctl() */ - struct sem *__unbounded __sembase; /* ptr to first semaphore in array */ - struct sem_queue *__unbounded __sem_pending; /* pending operations */ - struct sem_queue *__unbounded __sem_pending_last; /* last pending operation */ - struct sem_undo *__unbounded __undo; /* ondo requests on this array */ + struct sem *__sembase; /* ptr to first semaphore in array */ + struct sem_queue *__sem_pending; /* pending operations */ + struct sem_queue *__sem_pending_last; /* last pending operation */ + struct sem_undo *__undo; /* ondo requests on this array */ unsigned short int sem_nsems; /* number of semaphores in set */ }; @@ -50,9 +50,6 @@ union semun struct __old_semid_ds *__old_buf; }; -#include <bp-checks.h> -#include <bp-semctl.h> /* definition of CHECK_SEMCTL needs union semum */ - /* Return identifier for array of NSEMS semaphores associated with KEY. */ #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2) @@ -91,7 +88,7 @@ __old_semctl (int semid, int semnum, int cmd, ...) va_end (ap); return INLINE_SYSCALL (ipc, 5, IPCOP_semctl, semid, semnum, cmd, - CHECK_SEMCTL (&arg, semid, cmd)); + &arg); } compat_symbol (libc, __old_semctl, semctl, GLIBC_2_0); #endif @@ -126,7 +123,7 @@ __new_semctl (int semid, int semnum, int cmd, ...) #if __ASSUME_IPC64 > 0 return INLINE_SYSCALL (ipc, 5, IPCOP_semctl, semid, semnum, cmd | __IPC_64, - CHECK_SEMCTL (&arg, semid, cmd | __IPC_64)); + &arg); #else switch (cmd) { @@ -136,7 +133,7 @@ __new_semctl (int semid, int semnum, int cmd, ...) break; default: return INLINE_SYSCALL (ipc, 5, IPCOP_semctl, semid, semnum, cmd, - CHECK_SEMCTL (&arg, semid, cmd)); + &arg); } { @@ -147,7 +144,7 @@ __new_semctl (int semid, int semnum, int cmd, ...) /* Unfortunately there is no way how to find out for sure whether we should use old or new semctl. */ result = INLINE_SYSCALL (ipc, 5, IPCOP_semctl, semid, semnum, cmd | __IPC_64, - CHECK_SEMCTL (&arg, semid, cmd | __IPC_64)); + &arg); if (result != -1 || errno != EINVAL) return result; @@ -167,7 +164,7 @@ __new_semctl (int semid, int semnum, int cmd, ...) } } result = INLINE_SYSCALL (ipc, 5, IPCOP_semctl, semid, semnum, cmd, - CHECK_SEMCTL (&arg, semid, cmd)); + &arg); if (result != -1 && cmd != IPC_SET) { memset(buf, 0, sizeof(*buf)); diff --git a/libc/sysdeps/unix/sysv/linux/semop.c b/libc/sysdeps/unix/sysv/linux/semop.c index f0ea7780b..cbe42ac62 100644 --- a/libc/sysdeps/unix/sysv/linux/semop.c +++ b/libc/sysdeps/unix/sysv/linux/semop.c @@ -22,7 +22,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> /* Perform user-defined atomical operation of array of semaphores. */ @@ -32,6 +31,5 @@ semop (semid, sops, nsops) struct sembuf *sops; size_t nsops; { - return INLINE_SYSCALL (ipc, 5, IPCOP_semop, - semid, (int) nsops, 0, CHECK_N (sops, nsops)); + return INLINE_SYSCALL (ipc, 5, IPCOP_semop, semid, (int) nsops, 0, sops); } diff --git a/libc/sysdeps/unix/sysv/linux/semtimedop.c b/libc/sysdeps/unix/sysv/linux/semtimedop.c index 22a50375f..3da355470 100644 --- a/libc/sysdeps/unix/sysv/linux/semtimedop.c +++ b/libc/sysdeps/unix/sysv/linux/semtimedop.c @@ -22,7 +22,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> /* Perform user-defined atomical operation of array of semaphores. */ @@ -34,6 +33,6 @@ semtimedop (semid, sops, nsops, timeout) const struct timespec *timeout; { return INLINE_SYSCALL (ipc, 6, IPCOP_semtimedop, - semid, (int) nsops, 0, CHECK_N (sops, nsops), + semid, (int) nsops, 0, sops, timeout); } diff --git a/libc/sysdeps/unix/sysv/linux/sh/chown.c b/libc/sysdeps/unix/sysv/linux/sh/chown.c index 271496936..853d48af8 100644 --- a/libc/sysdeps/unix/sysv/linux/sh/chown.c +++ b/libc/sysdeps/unix/sysv/linux/sh/chown.c @@ -20,7 +20,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <linux/posix_types.h> @@ -29,7 +28,7 @@ int __chown (const char *file, uid_t owner, gid_t group) { - return INLINE_SYSCALL (chown32, 3, CHECK_STRING (file), owner, group); + return INLINE_SYSCALL (chown32, 3, file, owner, group); } libc_hidden_def (__chown) weak_alias (__chown, chown) diff --git a/libc/sysdeps/unix/sysv/linux/sh/nptl/libc.abilist b/libc/sysdeps/unix/sysv/linux/sh/nptl/libc.abilist index 733b550fe..a653292c2 100644 --- a/libc/sysdeps/unix/sysv/linux/sh/nptl/libc.abilist +++ b/libc/sysdeps/unix/sysv/linux/sh/nptl/libc.abilist @@ -92,6 +92,9 @@ GLIBC_2.17 clock_nanosleep F clock_settime F secure_getenv F +GLIBC_2.18 + GLIBC_2.18 A + __cxa_thread_atexit_impl F GLIBC_2.2 GLIBC_2.2 A _Exit F diff --git a/libc/sysdeps/unix/sysv/linux/sh/pread.c b/libc/sysdeps/unix/sysv/linux/sh/pread.c index 6f0c3badb..ae338dc21 100644 --- a/libc/sysdeps/unix/sysv/linux/sh/pread.c +++ b/libc/sysdeps/unix/sysv/linux/sh/pread.c @@ -23,7 +23,6 @@ #include <sysdep-cancel.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -46,14 +45,14 @@ __libc_pread (fd, buf, count, offset) if (SINGLE_THREAD_P) { - result = INLINE_SYSCALL (pread, 6, fd, CHECK_N (buf, count), count, 0, + result = INLINE_SYSCALL (pread, 6, fd, buf, count, 0, __LONG_LONG_PAIR (offset >> 31, offset)); return result; } int oldtype = LIBC_CANCEL_ASYNC (); - result = INLINE_SYSCALL (pread, 6, fd, CHECK_N (buf, count), count, 0, + result = INLINE_SYSCALL (pread, 6, fd, buf, count, 0, __LONG_LONG_PAIR (offset >> 31, offset)); LIBC_CANCEL_RESET (oldtype); diff --git a/libc/sysdeps/unix/sysv/linux/sh/pread64.c b/libc/sysdeps/unix/sysv/linux/sh/pread64.c index acce914c7..2a46d7034 100644 --- a/libc/sysdeps/unix/sysv/linux/sh/pread64.c +++ b/libc/sysdeps/unix/sysv/linux/sh/pread64.c @@ -22,7 +22,6 @@ #include <sysdep-cancel.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -45,7 +44,7 @@ __libc_pread64 (fd, buf, count, offset) if (SINGLE_THREAD_P) { - result = INLINE_SYSCALL (pread, 6, fd, CHECK_N (buf, count), count, 0, + result = INLINE_SYSCALL (pread, 6, fd, buf, count, 0, __LONG_LONG_PAIR ((off_t) (offset >> 32), (off_t) (offset & 0xffffffff))); return result; @@ -53,7 +52,7 @@ __libc_pread64 (fd, buf, count, offset) int oldtype = LIBC_CANCEL_ASYNC (); - result = INLINE_SYSCALL (pread, 6, fd, CHECK_N (buf, count), count, 0, + result = INLINE_SYSCALL (pread, 6, fd, buf, count, 0, __LONG_LONG_PAIR ((off_t) (offset >> 32), (off_t) (offset & 0xffffffff))); diff --git a/libc/sysdeps/unix/sysv/linux/sh/pwrite.c b/libc/sysdeps/unix/sysv/linux/sh/pwrite.c index 441c867bf..4b20e518c 100644 --- a/libc/sysdeps/unix/sysv/linux/sh/pwrite.c +++ b/libc/sysdeps/unix/sysv/linux/sh/pwrite.c @@ -23,7 +23,6 @@ #include <sysdep-cancel.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -46,14 +45,14 @@ __libc_pwrite (fd, buf, count, offset) if (SINGLE_THREAD_P) { - result = INLINE_SYSCALL (pwrite, 6, fd, CHECK_N (buf, count), count, 0, + result = INLINE_SYSCALL (pwrite, 6, fd, buf, count, 0, __LONG_LONG_PAIR (offset >> 31, offset)); return result; } int oldtype = LIBC_CANCEL_ASYNC (); - result = INLINE_SYSCALL (pwrite, 6, fd, CHECK_N (buf, count), count, 0, + result = INLINE_SYSCALL (pwrite, 6, fd, buf, count, 0, __LONG_LONG_PAIR (offset >> 31, offset)); LIBC_CANCEL_RESET (oldtype); diff --git a/libc/sysdeps/unix/sysv/linux/sh/pwrite64.c b/libc/sysdeps/unix/sysv/linux/sh/pwrite64.c index a4ca56077..5639b3c41 100644 --- a/libc/sysdeps/unix/sysv/linux/sh/pwrite64.c +++ b/libc/sysdeps/unix/sysv/linux/sh/pwrite64.c @@ -22,7 +22,6 @@ #include <sysdep-cancel.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -45,7 +44,7 @@ __libc_pwrite64 (fd, buf, count, offset) if (SINGLE_THREAD_P) { - result = INLINE_SYSCALL (pwrite, 6, fd, CHECK_N (buf, count), count, 0, + result = INLINE_SYSCALL (pwrite, 6, fd, buf, count, 0, __LONG_LONG_PAIR ((off_t) (offset >> 32), (off_t) (offset & 0xffffffff))); @@ -54,7 +53,7 @@ __libc_pwrite64 (fd, buf, count, offset) int oldtype = LIBC_CANCEL_ASYNC (); - result = INLINE_SYSCALL (pwrite, 6, fd, CHECK_N (buf, count), count, 0, + result = INLINE_SYSCALL (pwrite, 6, fd, buf, count, 0, __LONG_LONG_PAIR ((off_t) (offset >> 32), (off_t) (offset & 0xffffffff))); diff --git a/libc/sysdeps/unix/sysv/linux/shmat.c b/libc/sysdeps/unix/sysv/linux/shmat.c index cb5aa50bd..bac1b290a 100644 --- a/libc/sysdeps/unix/sysv/linux/shmat.c +++ b/libc/sysdeps/unix/sysv/linux/shmat.c @@ -23,7 +23,6 @@ #include <sysdep.h> #include <unistd.h> #include <sys/syscall.h> -#include <bp-checks.h> /* Attach the shared memory segment associated with SHMID to the data segment of the calling process. SHMADDR and SHMFLG determine how @@ -37,26 +36,17 @@ shmat (shmid, shmaddr, shmflg) { INTERNAL_SYSCALL_DECL(err); unsigned long resultvar; - void *__unbounded raddr; - -#if __BOUNDED_POINTERS__ - size_t length = ~0; - struct shmid_ds shmds; - /* It's unfortunate that we need to make another system call to get - the shared memory segment length... */ - if (shmctl (shmid, IPC_STAT, &shmds) == 0) - length = shmds.shm_segsz; -#endif + void *raddr; resultvar = INTERNAL_SYSCALL (ipc, err, 5, IPCOP_shmat, shmid, shmflg, - (long int) __ptrvalue (&raddr), - __ptrvalue ((void *) shmaddr)); + (long int) &raddr, + (void *) shmaddr); if (INTERNAL_SYSCALL_ERROR_P (resultvar, err)) { __set_errno (INTERNAL_SYSCALL_ERRNO (resultvar, err)); return (void *) -1l; } - return BOUNDED_N (raddr, length); + return raddr; } diff --git a/libc/sysdeps/unix/sysv/linux/shmctl.c b/libc/sysdeps/unix/sysv/linux/shmctl.c index 01dbdd087..34806fbb6 100644 --- a/libc/sysdeps/unix/sysv/linux/shmctl.c +++ b/libc/sysdeps/unix/sysv/linux/shmctl.c @@ -25,7 +25,6 @@ #include <sys/syscall.h> #include <bits/wordsize.h> #include <shlib-compat.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -40,8 +39,8 @@ struct __old_shmid_ds __ipc_pid_t shm_lpid; /* pid of last shmop */ unsigned short int shm_nattch; /* number of current attaches */ unsigned short int __shm_npages; /* size of segment (pages) */ - unsigned long int *__unbounded __shm_pages; /* array of ptrs to frames -> SHMMAX */ - struct vm_area_struct *__unbounded __attaches; /* descriptors for attaches */ + unsigned long int *__shm_pages; /* array of ptrs to frames -> SHMMAX */ + struct vm_area_struct *__attaches; /* descriptors for attaches */ }; struct __old_shminfo @@ -64,8 +63,7 @@ int attribute_compat_text_section __old_shmctl (int shmid, int cmd, struct __old_shmid_ds *buf) { - return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, - cmd, 0, CHECK_1_NULL_OK (buf)); + return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd, 0, buf); } compat_symbol (libc, __old_shmctl, shmctl, GLIBC_2_0); #endif @@ -75,7 +73,7 @@ __new_shmctl (int shmid, int cmd, struct shmid_ds *buf) { #if __ASSUME_IPC64 > 0 return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd | __IPC_64, 0, - CHECK_1 (buf)); + buf); #else switch (cmd) { case SHM_STAT: @@ -86,8 +84,7 @@ __new_shmctl (int shmid, int cmd, struct shmid_ds *buf) #endif break; default: - return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd, 0, - CHECK_1 (buf)); + return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd, 0, buf); } { @@ -101,7 +98,7 @@ __new_shmctl (int shmid, int cmd, struct shmid_ds *buf) /* Unfortunately there is no way how to find out for sure whether we should use old or new shmctl. */ result = INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd | __IPC_64, 0, - CHECK_1 (buf)); + buf); if (result != -1 || errno != EINVAL) return result; @@ -118,8 +115,7 @@ __new_shmctl (int shmid, int cmd, struct shmid_ds *buf) return -1; } } - result = INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd, 0, - __ptrvalue (&old.ds)); + result = INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd, 0, &old.ds); if (result != -1 && (cmd == SHM_STAT || cmd == IPC_STAT)) { memset(buf, 0, sizeof(*buf)); diff --git a/libc/sysdeps/unix/sysv/linux/shmdt.c b/libc/sysdeps/unix/sysv/linux/shmdt.c index aac66199b..260526bb7 100644 --- a/libc/sysdeps/unix/sysv/linux/shmdt.c +++ b/libc/sysdeps/unix/sysv/linux/shmdt.c @@ -30,5 +30,5 @@ int shmdt (shmaddr) const void *shmaddr; { - return INLINE_SYSCALL (ipc, 5, IPCOP_shmdt, 0, 0, 0, __ptrvalue ((void *) shmaddr)); + return INLINE_SYSCALL (ipc, 5, IPCOP_shmdt, 0, 0, 0, (void *) shmaddr); } diff --git a/libc/sysdeps/unix/sysv/linux/sigaction.c b/libc/sysdeps/unix/sysv/linux/sigaction.c index 3fe882eec..336975c51 100644 --- a/libc/sysdeps/unix/sysv/linux/sigaction.c +++ b/libc/sysdeps/unix/sysv/linux/sigaction.c @@ -55,8 +55,8 @@ __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. */ result = INLINE_SYSCALL (rt_sigaction, 4, sig, - act ? __ptrvalue (&kact) : NULL, - oact ? __ptrvalue (&koact) : NULL, _NSIG / 8); + act ? &kact : NULL, + oact ? &koact : NULL, _NSIG / 8); if (oact && result >= 0) { diff --git a/libc/sysdeps/unix/sysv/linux/sigpending.c b/libc/sysdeps/unix/sysv/linux/sigpending.c index 74bb9094c..56f581ea4 100644 --- a/libc/sysdeps/unix/sysv/linux/sigpending.c +++ b/libc/sysdeps/unix/sysv/linux/sigpending.c @@ -21,7 +21,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -32,5 +31,5 @@ int sigpending (set) sigset_t *set; { - return INLINE_SYSCALL (rt_sigpending, 2, CHECK_SIGSET (set), _NSIG / 8); + return INLINE_SYSCALL (rt_sigpending, 2, set, _NSIG / 8); } diff --git a/libc/sysdeps/unix/sysv/linux/sigprocmask.c b/libc/sysdeps/unix/sysv/linux/sigprocmask.c index a40caf68a..1af03c3cd 100644 --- a/libc/sysdeps/unix/sysv/linux/sigprocmask.c +++ b/libc/sysdeps/unix/sysv/linux/sigprocmask.c @@ -22,7 +22,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -55,7 +54,6 @@ __sigprocmask (how, set, oset) } #endif - return INLINE_SYSCALL (rt_sigprocmask, 4, how, CHECK_SIGSET_NULL_OK (set), - CHECK_SIGSET_NULL_OK (oset), _NSIG / 8); + return INLINE_SYSCALL (rt_sigprocmask, 4, how, set, oset, _NSIG / 8); } weak_alias (__sigprocmask, sigprocmask) diff --git a/libc/sysdeps/unix/sysv/linux/sigqueue.c b/libc/sysdeps/unix/sysv/linux/sigqueue.c index eb056f3e9..37d61c8a1 100644 --- a/libc/sysdeps/unix/sysv/linux/sigqueue.c +++ b/libc/sysdeps/unix/sysv/linux/sigqueue.c @@ -43,7 +43,7 @@ __sigqueue (pid, sig, val) info.si_uid = __getuid (); info.si_value = val; - return INLINE_SYSCALL (rt_sigqueueinfo, 3, pid, sig, __ptrvalue (&info)); + return INLINE_SYSCALL (rt_sigqueueinfo, 3, pid, sig, &info); } weak_alias (__sigqueue, sigqueue) #else diff --git a/libc/sysdeps/unix/sysv/linux/sigsuspend.c b/libc/sysdeps/unix/sysv/linux/sigsuspend.c index 667ba415a..992a422da 100644 --- a/libc/sysdeps/unix/sysv/linux/sigsuspend.c +++ b/libc/sysdeps/unix/sysv/linux/sigsuspend.c @@ -21,7 +21,6 @@ #include <sysdep-cancel.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -29,7 +28,7 @@ static inline int __attribute__ ((always_inline)) do_sigsuspend (const sigset_t *set) { - return INLINE_SYSCALL (rt_sigsuspend, 2, CHECK_SIGSET (set), _NSIG / 8); + return INLINE_SYSCALL (rt_sigsuspend, 2, set, _NSIG / 8); } /* Change the set of blocked signals to SET, diff --git a/libc/sysdeps/unix/sysv/linux/sigtimedwait.c b/libc/sysdeps/unix/sysv/linux/sigtimedwait.c index 283215e5b..20fe3550d 100644 --- a/libc/sysdeps/unix/sysv/linux/sigtimedwait.c +++ b/libc/sysdeps/unix/sysv/linux/sigtimedwait.c @@ -21,7 +21,6 @@ #include <sysdep-cancel.h> #include <sys/syscall.h> -#include <bp-checks.h> #ifdef __NR_rt_sigtimedwait @@ -51,8 +50,8 @@ do_sigtimedwait (const sigset_t *set, siginfo_t *info, /* XXX The size argument hopefully will have to be changed to the real size of the user-level sigset_t. */ - int result = INLINE_SYSCALL (rt_sigtimedwait, 4, CHECK_SIGSET (set), - CHECK_1 (info), timeout, _NSIG / 8); + int result = INLINE_SYSCALL (rt_sigtimedwait, 4, set, + info, timeout, _NSIG / 8); /* The kernel generates a SI_TKILL code in si_code in case tkill is used. tkill is transparently used in raise(). Since having diff --git a/libc/sysdeps/unix/sysv/linux/sigwait.c b/libc/sysdeps/unix/sysv/linux/sigwait.c index aaea9d680..9ea21d077 100644 --- a/libc/sysdeps/unix/sysv/linux/sigwait.c +++ b/libc/sysdeps/unix/sysv/linux/sigwait.c @@ -23,7 +23,6 @@ #include <sysdep-cancel.h> #include <sys/syscall.h> -#include <bp-checks.h> #ifdef __NR_rt_sigtimedwait @@ -58,7 +57,7 @@ do_sigwait (const sigset_t *set, int *sig) #ifdef INTERNAL_SYSCALL INTERNAL_SYSCALL_DECL (err); do - ret = INTERNAL_SYSCALL (rt_sigtimedwait, err, 4, CHECK_SIGSET (set), + ret = INTERNAL_SYSCALL (rt_sigtimedwait, err, 4, set, NULL, NULL, _NSIG / 8); while (INTERNAL_SYSCALL_ERROR_P (ret, err) && INTERNAL_SYSCALL_ERRNO (ret, err) == EINTR); @@ -71,8 +70,7 @@ do_sigwait (const sigset_t *set, int *sig) ret = INTERNAL_SYSCALL_ERRNO (ret, err); #else do - ret = INLINE_SYSCALL (rt_sigtimedwait, 4, CHECK_SIGSET (set), - NULL, NULL, _NSIG / 8); + ret = INLINE_SYSCALL (rt_sigtimedwait, 4, set, NULL, NULL, _NSIG / 8); while (ret == -1 && errno == EINTR); if (ret != -1) { diff --git a/libc/sysdeps/unix/sysv/linux/sigwaitinfo.c b/libc/sysdeps/unix/sysv/linux/sigwaitinfo.c index bd85e9595..50fa72bf4 100644 --- a/libc/sysdeps/unix/sysv/linux/sigwaitinfo.c +++ b/libc/sysdeps/unix/sysv/linux/sigwaitinfo.c @@ -23,7 +23,6 @@ #include <sysdep-cancel.h> #include <sys/syscall.h> -#include <bp-checks.h> #ifdef __NR_rt_sigtimedwait @@ -52,8 +51,8 @@ do_sigwaitinfo (const sigset_t *set, siginfo_t *info) /* XXX The size argument hopefully will have to be changed to the real size of the user-level sigset_t. */ - int result = INLINE_SYSCALL (rt_sigtimedwait, 4, CHECK_SIGSET (set), - CHECK_1 (info), NULL, _NSIG / 8); + int result = INLINE_SYSCALL (rt_sigtimedwait, 4, set, + info, NULL, _NSIG / 8); /* The kernel generates a SI_TKILL code in si_code in case tkill is used. tkill is transparently used in raise(). Since having diff --git a/libc/sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libc.abilist b/libc/sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libc.abilist index 3a96ea883..9defbdf13 100644 --- a/libc/sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libc.abilist +++ b/libc/sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libc.abilist @@ -1776,6 +1776,9 @@ GLIBC_2.17 clock_nanosleep F clock_settime F secure_getenv F +GLIBC_2.18 + GLIBC_2.18 A + __cxa_thread_atexit_impl F GLIBC_2.2 GLIBC_2.2 A _IO_adjust_wcolumn F diff --git a/libc/sysdeps/unix/sysv/linux/sparc/sparc32/semctl.c b/libc/sysdeps/unix/sysv/linux/sparc/sparc32/semctl.c index ef93f8c53..1a4bbac8f 100644 --- a/libc/sysdeps/unix/sysv/linux/sparc/sparc32/semctl.c +++ b/libc/sysdeps/unix/sysv/linux/sparc/sparc32/semctl.c @@ -50,9 +50,6 @@ union semun struct __old_semid_ds *__old_buf; }; -#include <bp-checks.h> -#include <bp-semctl.h> /* definition of CHECK_SEMCTL needs union semum */ - /* Return identifier for array of NSEMS semaphores associated with KEY. */ #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2) @@ -87,7 +84,7 @@ __old_semctl (int semid, int semnum, int cmd, ...) } return INLINE_SYSCALL (ipc, 5, IPCOP_semctl, semid, semnum, cmd, - CHECK_SEMCTL (&arg, semid, cmd)); + &arg); } compat_symbol (libc, __old_semctl, semctl, GLIBC_2_0); #endif @@ -117,7 +114,7 @@ __new_semctl (int semid, int semnum, int cmd, ...) } return INLINE_SYSCALL (ipc, 5, IPCOP_semctl, semid, semnum, cmd | __IPC_64, - CHECK_SEMCTL (&arg, semid, cmd | __IPC_64)); + &arg); } versioned_symbol (libc, __new_semctl, semctl, GLIBC_2_2); diff --git a/libc/sysdeps/unix/sysv/linux/sparc/sparc64/msgctl.c b/libc/sysdeps/unix/sysv/linux/sparc/sparc64/msgctl.c index 3bda4b275..d55511e10 100644 --- a/libc/sysdeps/unix/sysv/linux/sparc/sparc64/msgctl.c +++ b/libc/sysdeps/unix/sysv/linux/sparc/sparc64/msgctl.c @@ -22,7 +22,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> /* Allows to control internal state and destruction of message queue objects. */ @@ -33,5 +32,5 @@ msgctl (msqid, cmd, buf) int cmd; struct msqid_ds *buf; { - return INLINE_SYSCALL (ipc, 5, IPCOP_msgctl, msqid, cmd, 0, CHECK_1 (buf)); + return INLINE_SYSCALL (ipc, 5, IPCOP_msgctl, msqid, cmd, 0, buf); } diff --git a/libc/sysdeps/unix/sysv/linux/sparc/sparc64/msgrcv.c b/libc/sysdeps/unix/sysv/linux/sparc/sparc64/msgrcv.c index bce7a58d2..625eeb27c 100644 --- a/libc/sysdeps/unix/sysv/linux/sparc/sparc64/msgrcv.c +++ b/libc/sysdeps/unix/sysv/linux/sparc/sparc64/msgrcv.c @@ -22,8 +22,6 @@ #include <sysdep-cancel.h> #include <sys/syscall.h> -#include <bp-checks.h> - ssize_t __libc_msgrcv (msqid, msgp, msgsz, msgtyp, msgflg) int msqid; @@ -34,12 +32,12 @@ __libc_msgrcv (msqid, msgp, msgsz, msgtyp, msgflg) { if (SINGLE_THREAD_P) return INLINE_SYSCALL (ipc, 6, IPCOP_msgrcv, msqid, msgsz, msgflg, - CHECK_N (msgp, msgsz), msgtyp); + msgp, msgtyp); int oldtype = LIBC_CANCEL_ASYNC (); ssize_t result = INLINE_SYSCALL (ipc, 6, IPCOP_msgrcv, msqid, msgsz, msgflg, - CHECK_N (msgp, msgsz), msgtyp); + msgp, msgtyp); LIBC_CANCEL_RESET (oldtype); diff --git a/libc/sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libc.abilist b/libc/sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libc.abilist index aa892b8b8..35987faa6 100644 --- a/libc/sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libc.abilist +++ b/libc/sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libc.abilist @@ -97,6 +97,9 @@ GLIBC_2.17 clock_nanosleep F clock_settime F secure_getenv F +GLIBC_2.18 + GLIBC_2.18 A + __cxa_thread_atexit_impl F GLIBC_2.2 GLIBC_2.2 A _Exit F diff --git a/libc/sysdeps/unix/sysv/linux/sparc/sparc64/semctl.c b/libc/sysdeps/unix/sysv/linux/sparc/sparc64/semctl.c index 4303d10e0..9ada8e847 100644 --- a/libc/sysdeps/unix/sysv/linux/sparc/sparc64/semctl.c +++ b/libc/sysdeps/unix/sysv/linux/sparc/sparc64/semctl.c @@ -33,9 +33,6 @@ union semun struct seminfo *__buf; /* buffer for IPC_INFO */ }; -#include <bp-checks.h> -#include <bp-semctl.h> /* definition of CHECK_SEMCTL needs union semum */ - /* Return identifier for array of NSEMS semaphores associated with KEY. */ @@ -53,5 +50,5 @@ semctl (int semid, int semnum, int cmd, ...) va_end (ap); return INLINE_SYSCALL (ipc, 5, IPCOP_semctl, semid, semnum, cmd, - CHECK_SEMCTL (&arg, semid, cmd)->array); + arg.array); } diff --git a/libc/sysdeps/unix/sysv/linux/sparc/sparc64/shmctl.c b/libc/sysdeps/unix/sysv/linux/sparc/sparc64/shmctl.c index fc2573905..7c4af7476 100644 --- a/libc/sysdeps/unix/sysv/linux/sparc/sparc64/shmctl.c +++ b/libc/sysdeps/unix/sysv/linux/sparc/sparc64/shmctl.c @@ -22,7 +22,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> /* Provide operations to control over shared memory segments. */ @@ -32,5 +31,5 @@ shmctl (shmid, cmd, buf) int cmd; struct shmid_ds *buf; { - return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd, 0, CHECK_1 (buf)); + return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd, 0, buf); } diff --git a/libc/sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c b/libc/sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c index 988d26662..d5e708777 100644 --- a/libc/sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c +++ b/libc/sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c @@ -48,8 +48,8 @@ __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact) /* XXX The size argument hopefully will have to be changed to the real size of the user-level sigset_t. */ ret = INLINE_SYSCALL (rt_sigaction, 5, sig, - act ? __ptrvalue (&kact) : 0, - oact ? __ptrvalue (&koact) : 0, stub, _NSIG / 8); + act ? &kact : 0, + oact ? &koact : 0, stub, _NSIG / 8); if (oact && ret >= 0) { diff --git a/libc/sysdeps/unix/sysv/linux/sparc/sparc64/sigpending.c b/libc/sysdeps/unix/sysv/linux/sparc/sparc64/sigpending.c index ca6ff6948..57d172d61 100644 --- a/libc/sysdeps/unix/sysv/linux/sparc/sparc64/sigpending.c +++ b/libc/sysdeps/unix/sysv/linux/sparc/sparc64/sigpending.c @@ -21,7 +21,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> /* Change the set of blocked signals to SET, wait until a signal arrives, and restore the set of blocked signals. */ @@ -31,5 +30,5 @@ sigpending (set) { /* XXX The size argument hopefully will have to be changed to the real size of the user-level sigset_t. */ - return INLINE_SYSCALL (rt_sigpending, 2, CHECK_SIGSET (set), _NSIG / 8); + return INLINE_SYSCALL (rt_sigpending, 2, set, _NSIG / 8); } diff --git a/libc/sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c b/libc/sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c index 14cda4dd8..c7a30606f 100644 --- a/libc/sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c +++ b/libc/sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c @@ -21,7 +21,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> /* Get and/or change the set of blocked signals. */ int @@ -32,7 +31,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_SIGSET_NULL_OK (oset), _NSIG / 8); + return INLINE_SYSCALL (rt_sigprocmask, 4, how, set, oset, _NSIG / 8); } weak_alias (__sigprocmask, sigprocmask) diff --git a/libc/sysdeps/unix/sysv/linux/sysctl.c b/libc/sysdeps/unix/sysv/linux/sysctl.c index 5c6b1fb30..4ff1bf378 100644 --- a/libc/sysdeps/unix/sysv/linux/sysctl.c +++ b/libc/sysdeps/unix/sysv/linux/sysctl.c @@ -22,13 +22,11 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> int __sysctl (int *name, int nlen, void *oldval, size_t *oldlenp, void *newval, size_t newlen) { - /* GKM FIXME: force __sysctl_args decl to have unbounded pointers. */ struct __sysctl_args args = { .name = name, @@ -38,11 +36,8 @@ __sysctl (int *name, int nlen, void *oldval, size_t *oldlenp, .newval = newval, .newlen = newlen }; - (void) CHECK_N (name, nlen); - (void) CHECK_N (oldval, *oldlenp); - (void) CHECK_N (newval, newlen); - return INLINE_SYSCALL (_sysctl, 1, __ptrvalue (&args)); + return INLINE_SYSCALL (_sysctl, 1, &args); } libc_hidden_def (__sysctl) weak_alias (__sysctl, sysctl) diff --git a/libc/sysdeps/unix/sysv/linux/truncate64.c b/libc/sysdeps/unix/sysv/linux/truncate64.c index 82c132782..8c9e8488b 100644 --- a/libc/sysdeps/unix/sysv/linux/truncate64.c +++ b/libc/sysdeps/unix/sysv/linux/truncate64.c @@ -22,7 +22,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> /* Truncate the file referenced by FD to LENGTH bytes. */ int @@ -30,7 +29,7 @@ truncate64 (const char *path, off64_t length) { unsigned int low = length & 0xffffffff; unsigned int high = length >> 32; - int result = INLINE_SYSCALL (truncate64, 3, CHECK_STRING (path), + int result = INLINE_SYSCALL (truncate64, 3, path, __LONG_LONG_PAIR (high, low)); return result; } diff --git a/libc/sysdeps/unix/sysv/linux/ulimit.c b/libc/sysdeps/unix/sysv/linux/ulimit.c deleted file mode 100644 index 8c382ac18..000000000 --- a/libc/sysdeps/unix/sysv/linux/ulimit.c +++ /dev/null @@ -1,91 +0,0 @@ -/* Copyright (C) 1991-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <errno.h> -#include <stdarg.h> -#include <sysdep.h> -#include <ulimit.h> -#include <unistd.h> -#include <sys/resource.h> - -/* Function depends on CMD: - 1 = Return the limit on the size of a file, in units of 512 bytes. - 2 = Set the limit on the size of a file to NEWLIMIT. Only the - super-user can increase the limit. - 3 = illegal due to shared libraries; normally is - (Return the maximum possible address of the data segment.) - 4 = Return the maximum number of files that the calling process - can open. - Returns -1 on errors. */ -long int -__ulimit (int cmd, ...) -{ - struct rlimit limit; - va_list va; - long int result = -1; - - va_start (va, cmd); - - switch (cmd) - { - case UL_GETFSIZE: - /* Get limit on file size. */ - if (__getrlimit (RLIMIT_FSIZE, &limit) == 0) - /* Convert from bytes to 512 byte units. */ - result = (limit.rlim_cur == RLIM_INFINITY - ? LONG_MAX : limit.rlim_cur / 512); - break; - - case UL_SETFSIZE: - /* Set limit on file size. */ - { - long int newlimit = va_arg (va, long int); - long int newlen; - - if ((rlim_t) newlimit > RLIM_INFINITY / 512) - { - limit.rlim_cur = RLIM_INFINITY; - limit.rlim_max = RLIM_INFINITY; - newlen = LONG_MAX; - } - else - { - limit.rlim_cur = newlimit * 512; - limit.rlim_max = newlimit * 512; - newlen = newlimit; - } - - result = __setrlimit (RLIMIT_FSIZE, &limit); - if (result != -1) - result = newlen; - } - break; - - case __UL_GETOPENMAX: - result = __sysconf (_SC_OPEN_MAX); - break; - - default: - __set_errno (EINVAL); - } - - va_end (va); - - return result; -} - -weak_alias (__ulimit, ulimit); diff --git a/libc/sysdeps/unix/sysv/linux/ustat.c b/libc/sysdeps/unix/sysv/linux/ustat.c index 7a57ee1e9..499ed7eaf 100644 --- a/libc/sysdeps/unix/sysv/linux/ustat.c +++ b/libc/sysdeps/unix/sysv/linux/ustat.c @@ -22,7 +22,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> int ustat (dev_t dev, struct ustat *ubuf) @@ -37,5 +36,5 @@ ustat (dev_t dev, struct ustat *ubuf) return -1; } - return INLINE_SYSCALL (ustat, 2, (unsigned int) k_dev, CHECK_1 (ubuf)); + return INLINE_SYSCALL (ustat, 2, (unsigned int) k_dev, ubuf); } diff --git a/libc/sysdeps/unix/sysv/linux/wordsize-64/fxstat.c b/libc/sysdeps/unix/sysv/linux/wordsize-64/fxstat.c index bbaa0e04d..d6023e2a2 100644 --- a/libc/sysdeps/unix/sysv/linux/wordsize-64/fxstat.c +++ b/libc/sysdeps/unix/sysv/linux/wordsize-64/fxstat.c @@ -26,14 +26,13 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> /* Get information about the file FD in BUF. */ int __fxstat (int vers, int fd, struct stat *buf) { if (vers == _STAT_VER_KERNEL || vers == _STAT_VER_LINUX) - return INLINE_SYSCALL (fstat, 2, fd, CHECK_1 (buf)); + return INLINE_SYSCALL (fstat, 2, fd, buf); __set_errno (EINVAL); return -1; diff --git a/libc/sysdeps/unix/sysv/linux/wordsize-64/fxstatat.c b/libc/sysdeps/unix/sysv/linux/wordsize-64/fxstatat.c index 733348cbf..73a2e871c 100644 --- a/libc/sysdeps/unix/sysv/linux/wordsize-64/fxstatat.c +++ b/libc/sysdeps/unix/sysv/linux/wordsize-64/fxstatat.c @@ -29,7 +29,6 @@ #include <sysdep.h> #include <kernel-features.h> #include <sys/syscall.h> -#include <bp-checks.h> /* Get information about the file NAME relative to FD in ST. */ @@ -95,9 +94,9 @@ __fxstatat (int vers, int fd, const char *file, struct stat *st, int flag) INTERNAL_SYSCALL_DECL (err); if (flag & AT_SYMLINK_NOFOLLOW) - res = INTERNAL_SYSCALL (lstat, err, 2, file, CHECK_1 (st)); + res = INTERNAL_SYSCALL (lstat, err, 2, file, st); else - res = INTERNAL_SYSCALL (stat, err, 2, file, CHECK_1 (st)); + res = INTERNAL_SYSCALL (stat, err, 2, file, st); if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (res, err), 0)) { diff --git a/libc/sysdeps/unix/sysv/linux/wordsize-64/lxstat.c b/libc/sysdeps/unix/sysv/linux/wordsize-64/lxstat.c index 4a34c8412..62b6c89ba 100644 --- a/libc/sysdeps/unix/sysv/linux/wordsize-64/lxstat.c +++ b/libc/sysdeps/unix/sysv/linux/wordsize-64/lxstat.c @@ -26,14 +26,13 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> /* Get information about the file FD in BUF. */ int __lxstat (int vers, const char *name, struct stat *buf) { if (vers == _STAT_VER_KERNEL || vers == _STAT_VER_LINUX) - return INLINE_SYSCALL (lstat, 2, CHECK_STRING (name), CHECK_1 (buf)); + return INLINE_SYSCALL (lstat, 2, name, buf); __set_errno (EINVAL); return -1; diff --git a/libc/sysdeps/unix/sysv/linux/wordsize-64/xstat.c b/libc/sysdeps/unix/sysv/linux/wordsize-64/xstat.c index b9b533d30..1fa2280c2 100644 --- a/libc/sysdeps/unix/sysv/linux/wordsize-64/xstat.c +++ b/libc/sysdeps/unix/sysv/linux/wordsize-64/xstat.c @@ -26,14 +26,13 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> /* Get information about the file NAME in BUF. */ int __xstat (int vers, const char *name, struct stat *buf) { if (vers == _STAT_VER_KERNEL || vers == _STAT_VER_LINUX) - return INLINE_SYSCALL (stat, 2, name, CHECK_1 (buf)); + return INLINE_SYSCALL (stat, 2, name, buf); __set_errno (EINVAL); return -1; diff --git a/libc/sysdeps/unix/sysv/linux/writev.c b/libc/sysdeps/unix/sysv/linux/writev.c index 993660a11..e53c0d345 100644 --- a/libc/sysdeps/unix/sysv/linux/writev.c +++ b/libc/sysdeps/unix/sysv/linux/writev.c @@ -23,7 +23,6 @@ #include <sysdep-cancel.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> #ifndef __ASSUME_COMPLETE_READV_WRITEV @@ -47,12 +46,12 @@ __libc_writev (fd, vector, count) ssize_t result; if (SINGLE_THREAD_P) - result = INLINE_SYSCALL (writev, 3, fd, CHECK_N (vector, count), count); + result = INLINE_SYSCALL (writev, 3, fd, vector, count); else { int oldtype = LIBC_CANCEL_ASYNC (); - result = INLINE_SYSCALL (writev, 3, fd, CHECK_N (vector, count), count); + result = INLINE_SYSCALL (writev, 3, fd, vector, count); LIBC_CANCEL_RESET (oldtype); } diff --git a/libc/sysdeps/unix/sysv/linux/x86/bits/wchar.h b/libc/sysdeps/unix/sysv/linux/x86/bits/wchar.h deleted file mode 100644 index 16b8b77c8..000000000 --- a/libc/sysdeps/unix/sysv/linux/x86/bits/wchar.h +++ /dev/null @@ -1,32 +0,0 @@ -/* wchar_t type related definitions. i386/x86-64 version. - Copyright (C) 2000-2013 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _BITS_WCHAR_H -#define _BITS_WCHAR_H 1 - -#include <bits/wordsize.h> - -#if __WORDSIZE == 64 -# define __WCHAR_MIN (-2147483647 - 1) -# define __WCHAR_MAX (2147483647) -#else -# define __WCHAR_MIN (-2147483647l - 1l) -# define __WCHAR_MAX (2147483647l) -#endif - -#endif /* bits/wchar.h */ diff --git a/libc/sysdeps/unix/sysv/linux/x86_64/64/nptl/libc.abilist b/libc/sysdeps/unix/sysv/linux/x86_64/64/nptl/libc.abilist index a42d424cd..914b5908f 100644 --- a/libc/sysdeps/unix/sysv/linux/x86_64/64/nptl/libc.abilist +++ b/libc/sysdeps/unix/sysv/linux/x86_64/64/nptl/libc.abilist @@ -88,6 +88,9 @@ GLIBC_2.17 clock_nanosleep F clock_settime F secure_getenv F +GLIBC_2.18 + GLIBC_2.18 A + __cxa_thread_atexit_impl F GLIBC_2.2.5 GLIBC_2.2.5 A _Exit F diff --git a/libc/sysdeps/unix/sysv/linux/x86_64/clone.S b/libc/sysdeps/unix/sysv/linux/x86_64/clone.S index c131a4024..144eaf752 100644 --- a/libc/sysdeps/unix/sysv/linux/x86_64/clone.S +++ b/libc/sysdeps/unix/sysv/linux/x86_64/clone.S @@ -22,8 +22,6 @@ #define _ERRNO_H 1 #include <bits/errno.h> #include <asm-syntax.h> -#include <bp-sym.h> -#include <bp-asm.h> #define CLONE_VM 0x00000100 #define CLONE_THREAD 0x00010000 @@ -52,7 +50,7 @@ .text -ENTRY (BP_SYM (__clone)) +ENTRY (__clone) /* Sanity check arguments. */ movq $-EINVAL,%rax testq %rdi,%rdi /* no NULL function pointers */ @@ -117,6 +115,6 @@ L(thread_start): cfi_endproc; cfi_startproc; -PSEUDO_END (BP_SYM (__clone)) +PSEUDO_END (__clone) -weak_alias (BP_SYM (__clone), BP_SYM (clone)) +weak_alias (__clone, clone) diff --git a/libc/sysdeps/unix/sysv/linux/x86_64/sigaction.c b/libc/sysdeps/unix/sysv/linux/x86_64/sigaction.c index 0fcb754a5..4b5d1e1a8 100644 --- a/libc/sysdeps/unix/sysv/linux/x86_64/sigaction.c +++ b/libc/sysdeps/unix/sysv/linux/x86_64/sigaction.c @@ -62,8 +62,8 @@ __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact) /* XXX The size argument hopefully will have to be changed to the real size of the user-level sigset_t. */ result = INLINE_SYSCALL (rt_sigaction, 4, - sig, act ? __ptrvalue (&kact) : NULL, - oact ? __ptrvalue (&koact) : NULL, _NSIG / 8); + sig, act ? &kact : NULL, + oact ? &koact : NULL, _NSIG / 8); if (oact && result >= 0) { oact->sa_handler = koact.k_sa_handler; diff --git a/libc/sysdeps/unix/sysv/linux/x86_64/sigpending.c b/libc/sysdeps/unix/sysv/linux/x86_64/sigpending.c index 523fb39aa..e68f77622 100644 --- a/libc/sysdeps/unix/sysv/linux/x86_64/sigpending.c +++ b/libc/sysdeps/unix/sysv/linux/x86_64/sigpending.c @@ -24,7 +24,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> /* Change the set of blocked signals to SET, wait until a signal arrives, and restore the set of blocked signals. */ @@ -34,5 +33,5 @@ sigpending (set) { /* XXX The size argument hopefully will have to be changed to the real size of the user-level sigset_t. */ - return INLINE_SYSCALL (rt_sigpending, 2, CHECK_SIGSET (set), _NSIG / 8); + return INLINE_SYSCALL (rt_sigpending, 2, set, _NSIG / 8); } diff --git a/libc/sysdeps/unix/sysv/linux/x86_64/sigprocmask.c b/libc/sysdeps/unix/sysv/linux/x86_64/sigprocmask.c index f755049ea..6d12326db 100644 --- a/libc/sysdeps/unix/sysv/linux/x86_64/sigprocmask.c +++ b/libc/sysdeps/unix/sysv/linux/x86_64/sigprocmask.c @@ -25,7 +25,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> /* Get and/or change the set of blocked signals. */ int @@ -37,7 +36,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_SIGSET_NULL_OK (oset), _NSIG / 8); + return INLINE_SYSCALL (rt_sigprocmask, 4, how, set, oset, _NSIG / 8); } weak_alias (__sigprocmask, sigprocmask) diff --git a/libc/sysdeps/unix/sysv/linux/x86_64/sysdep.h b/libc/sysdeps/unix/sysv/linux/x86_64/sysdep.h index 763a748bc..d68112a61 100644 --- a/libc/sysdeps/unix/sysv/linux/x86_64/sysdep.h +++ b/libc/sysdeps/unix/sysv/linux/x86_64/sysdep.h @@ -20,8 +20,6 @@ /* There is some commonality. */ #include <sysdeps/unix/x86_64/sysdep.h> -#include <bp-sym.h> -#include <bp-asm.h> #include <tls.h> #ifdef IS_IN_rtld diff --git a/libc/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libc.abilist b/libc/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libc.abilist index 108b80fb4..0f64c8d20 100644 --- a/libc/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libc.abilist +++ b/libc/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libc.abilist @@ -2086,3 +2086,6 @@ GLIBC_2.17 clock_nanosleep F clock_settime F secure_getenv F +GLIBC_2.18 + GLIBC_2.18 A + __cxa_thread_atexit_impl F diff --git a/libc/sysdeps/unix/sysv/linux/xmknod.c b/libc/sysdeps/unix/sysv/linux/xmknod.c index 23c83ef24..154dc9a03 100644 --- a/libc/sysdeps/unix/sysv/linux/xmknod.c +++ b/libc/sysdeps/unix/sysv/linux/xmknod.c @@ -23,7 +23,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> /* Create a device file named PATH, with permission and special bits MODE and device number DEV (which can be constructed from major and minor @@ -47,8 +46,7 @@ __xmknod (int vers, const char *path, mode_t mode, dev_t *dev) return -1; } - return INLINE_SYSCALL (mknod, 3, CHECK_STRING (path), mode, - (unsigned int) k_dev); + return INLINE_SYSCALL (mknod, 3, path, mode, (unsigned int) k_dev); } weak_alias (__xmknod, _xmknod) diff --git a/libc/sysdeps/unix/sysv/linux/xmknodat.c b/libc/sysdeps/unix/sysv/linux/xmknodat.c index 79f3e55bc..8cb902127 100644 --- a/libc/sysdeps/unix/sysv/linux/xmknodat.c +++ b/libc/sysdeps/unix/sysv/linux/xmknodat.c @@ -26,7 +26,6 @@ #include <sysdep.h> #include <kernel-features.h> #include <sys/syscall.h> -#include <bp-checks.h> /* Create a device file named PATH relative to FD, with permission and @@ -92,8 +91,7 @@ __xmknodat (int vers, int fd, const char *file, mode_t mode, dev_t *dev) file = buf; } - return INLINE_SYSCALL (mknod, 3, CHECK_STRING (file), mode, - (unsigned int) k_dev); + return INLINE_SYSCALL (mknod, 3, file, mode, (unsigned int) k_dev); #endif } diff --git a/libc/sysdeps/unix/sysv/linux/xstat.c b/libc/sysdeps/unix/sysv/linux/xstat.c index 07fbcd08e..ac342cec7 100644 --- a/libc/sysdeps/unix/sysv/linux/xstat.c +++ b/libc/sysdeps/unix/sysv/linux/xstat.c @@ -27,7 +27,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <xstatconv.h> @@ -36,8 +35,7 @@ int __xstat (int vers, const char *name, struct stat *buf) { if (vers == _STAT_VER_KERNEL) - return INLINE_SYSCALL (stat, 2, CHECK_STRING (name), - CHECK_1 ((struct kernel_stat *) buf)); + return INLINE_SYSCALL (stat, 2, name, (struct kernel_stat *) buf); #ifdef STAT_IS_KERNEL_STAT errno = EINVAL; @@ -46,8 +44,7 @@ __xstat (int vers, const char *name, struct stat *buf) struct kernel_stat kbuf; int result; - result = INLINE_SYSCALL (stat, 2, CHECK_STRING (name), - __ptrvalue (&kbuf)); + result = INLINE_SYSCALL (stat, 2, name, &kbuf); if (result == 0) result = __xstat_conv (vers, &kbuf, buf); diff --git a/libc/sysdeps/unix/sysv/linux/xstat64.c b/libc/sysdeps/unix/sysv/linux/xstat64.c index 061de1a4d..2377ac503 100644 --- a/libc/sysdeps/unix/sysv/linux/xstat64.c +++ b/libc/sysdeps/unix/sysv/linux/xstat64.c @@ -23,7 +23,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -33,7 +32,7 @@ int ___xstat64 (int vers, const char *name, struct stat64 *buf) { int result; - result = INLINE_SYSCALL (stat64, 2, CHECK_STRING (name), CHECK_1 (buf)); + result = INLINE_SYSCALL (stat64, 2, name, buf); #if defined _HAVE_STAT64___ST_INO && __ASSUME_ST_INO_64_BIT == 0 if (__builtin_expect (!result, 1) && buf->__st_ino != (__ino_t) buf->st_ino) buf->st_ino = buf->__st_ino; |