Continuing the removal of compatibility code for old Linux kernel versions, this patch increases the minimum kernel version from 2.4.1 to 2.4.21. This allows removal of all conditions on specific 2.4 kernel versions except for __ASSUME_TMPFS_NAME (where the comment says 2.4.20 but the code is actually testing against 2.4.26; I'll deal with that when moving the required version to 2.6.0 rather than working out whether actually 2.4.21 is enough there). A fair amount of the patch deals with some macros defined and used only for powerpc; could a powerpc maintainer review / test these changes? (There are also ports changes to m68k/kernel-features.h, but those are trivial.) There was a single __ASSUME_NETLINK_SUPPORT test outside of sysdeps/unix/sysv/linux, but it was only testing whether to define the __no_netlink_support variable, previously used by some code that may be built into nscd. Since the patch eliminates all uses of that variable, the definition in nscd is no longer needed, so in fact all __ASSUME_NETLINK_SUPPORT tests can go (there was no substantive use relevant to non-Linux kernels) and so this patch removes them all and the definition. Tested x86 and x86_64. A version of the patch diffed with -w is attached for convenience of reviewing those changes that involve reindentation. 2012-07-12 Joseph Myers [BZ #13717] * sysdeps/unix/sysv/linux/configure.in (arch_minimum_kernel): Change to 2.4.21 where previously 2.4.1. * sysdeps/unix/sysv/linux/configure: Regenerated. * sysdeps/unix/sysv/linux/kernel-features.h [(__powerpc__ || __sh__) && !__powerpc64__] (__ASSUME_FCNTL64): Do not condition on Linux kernel version. (__ASSUME_STD_AUXV): Remove. [__powerpc__] (__ASSUME_VFORK_SYSCALL): Do not condition on Linux kernel version. [__powerpc__ && !__powerpc64] (__ASSUME_MMAP2_SYSCALL): Likewise. (__ASSUME_NEW_PRCTL_SYSCALL): Remove. (__ASSUME_FIXED_CLONE_SYSCALL): Likewise. (__ASSUME_NEW_RT_SIGRETURN_SYSCALL): Likewise. (__ASSUME_NETLINK_SUPPORT): Likewise. * nscd/gai.c [NEED_NETLINK && __ASSUME_NETLINK_SUPPORT == 0] (__no_netlink_support): Remove conditional definition. * sysdeps/unix/sysv/linux/check_pf.c (__no_netlink_support): Remove. (__check_pf) [!__ASSUME_NETLINK_SUPPORT]: Remove conditional code. [__ASSUME_NETLINK_SUPPORT]: Make code unconditional. * sysdeps/unix/sysv/linux/if_index.c [!__ASSUME_NETLINK_SUPPORT] (if_nameindex_ioctl): Remove. (if_nameindex_netlink): Do not handle __no_netlink_support. (if_nameindex) [!__ASSUME_NETLINK_SUPPORT]: Remove conditional code. * sysdeps/unix/sysv/linux/ifaddrs.c [!__ASSUME_NETLINK_SUPPORT]: Remove conditional code. (__netlink_open) [!__ASSUME_NETLINK_SUPPORT]: Remove conditional code. (getifaddrs_internal) [__ASSUME_NETLINK_SUPPORT]: Make code unconditional. [!__ASSUME_NETLINK_SUPPORT]: Remove conditional code. [__ASSUME_NETLINK_SUPPORT] (freeifaddrs): Make code unconditional. * sysdeps/unix/sysv/linux/netlinkaccess.h (__no_netlink_support): Remove. * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c [!__ASSUME_STD_AUXV]: Remove conditional code. * sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S (__clone) [!__ASSUME_FIXED_CLONE_SYSCALL]: Remove conditional code. [__ASSUME_FIXED_CLONE_SYSCALL]: Make code unconditional. * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_mask.c [!__ASSUME_NEW_PRCTL_SYSCALL] (fe_mask_handler): Remove. (__fe_mask_env) [!__ASSUME_NEW_PRCTL_SYSCALL]: Remove conditional code. [__ASSUME_NEW_PRCTL_SYSCALL]: Make code unconditional. * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c [!__ASSUME_NEW_PRCTL_SYSCALL] (fe_nomask_handler): Remove. (__fe_nomask_env) [!__ASSUME_NEW_PRCTL_SYSCALL]: Remove conditional code. [__ASSUME_NEW_PRCTL_SYSCALL]: Make code unconditional. * sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c (__fe_mask_env) [!__ASSUME_NEW_PRCTL_SYSCALL]: Remove conditional code. * sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c (__fe_nomask_env) [!__ASSUME_NEW_PRCTL_SYSCALL]: Remove conditional code. * sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S (__novec_getcontext) [__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Make code unconditional. (__novec_getcontext) [!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Remove conditional code. (__getcontext) [__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Make code unconditional. (__getcontext) [!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Remove conditional code. * sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S (__makecontext) [__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Make code unconditional. (__makecontext) [!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Remove conditional code. * sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S (__novec_setcontext) [__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Make code unconditional. (__novec_setcontext) [!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Remove conditional code. (__setcontext) [__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Make code unconditional. (__setcontext) [!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Remove conditional code. * sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S (__novec_swapcontext) [__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Make code unconditional. (__novec_swapcontext) [!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Remove conditional code. (__swapcontext) [__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Make code unconditional. (__swapcontext) [!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Remove conditional code. ports/ChangeLog.arm: 2012-07-12 Joseph Myers * sysdeps/unix/sysv/linux/arm/kernel-features.h (__ASSUME_FCNTL64): Define unconditionally. ports/ChangeLog.m68k: 2012-07-12 Joseph Myers * sysdeps/unix/sysv/linux/m68k/kernel-features.h (__ASSUME_MMAP2_SYSCALL): Define unconditionally. (__ASSUME_STAT64_SYSCALL): Likewise. (__ASSUME_FCNTL64): Likewise. (__ASSUME_VFORK_SYSCALL): Likewise. diff --git a/nscd/gai.c b/nscd/gai.c index 2df7ea7..1c6527c 100644 --- a/nscd/gai.c +++ b/nscd/gai.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc. +/* Copyright (C) 2004-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2004. @@ -43,7 +43,3 @@ /* Some variables normally defined in libc. */ service_user *__nss_hosts_database; - -#if defined NEED_NETLINK && __ASSUME_NETLINK_SUPPORT == 0 -int __no_netlink_support attribute_hidden; -#endif diff --git a/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h b/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h index 90c59ef..9092df7 100644 --- a/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h +++ b/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h @@ -28,9 +28,7 @@ #define __ASSUME_STAT64_SYSCALL 1 /* Arm got fcntl64 in 2.4.4. */ -#if __LINUX_KERNEL_VERSION >= 132100 -# define __ASSUME_FCNTL64 1 -#endif +#define __ASSUME_FCNTL64 1 /* The vfork syscall on arm was definitely available in 2.4. */ #define __ASSUME_VFORK_SYSCALL 1 diff --git a/ports/sysdeps/unix/sysv/linux/m68k/kernel-features.h b/ports/sysdeps/unix/sysv/linux/m68k/kernel-features.h index c12be9e..3b0b441 100644 --- a/ports/sysdeps/unix/sysv/linux/m68k/kernel-features.h +++ b/ports/sysdeps/unix/sysv/linux/m68k/kernel-features.h @@ -18,12 +18,10 @@ . */ /* These features were surely available with 2.4.12. */ -#if __LINUX_KERNEL_VERSION >= 132108 -# define __ASSUME_MMAP2_SYSCALL 1 -# define __ASSUME_STAT64_SYSCALL 1 -# define __ASSUME_FCNTL64 1 -# define __ASSUME_VFORK_SYSCALL 1 -#endif +#define __ASSUME_MMAP2_SYSCALL 1 +#define __ASSUME_STAT64_SYSCALL 1 +#define __ASSUME_FCNTL64 1 +#define __ASSUME_VFORK_SYSCALL 1 /* Many syscalls were added in 2.6.10 for m68k. */ #if __LINUX_KERNEL_VERSION >= 132618 diff --git a/sysdeps/unix/sysv/linux/check_pf.c b/sysdeps/unix/sysv/linux/check_pf.c index 793d27d..950498a 100644 --- a/sysdeps/unix/sysv/linux/check_pf.c +++ b/sysdeps/unix/sysv/linux/check_pf.c @@ -1,5 +1,5 @@ /* Determine protocol families for which interfaces exist. Linux version. - Copyright (C) 2003, 2006-2008, 2010, 2011 Free Software Foundation, Inc. + Copyright (C) 2003-2012 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 @@ -289,16 +289,6 @@ out_fail: } -/* We don't know if we have NETLINK support compiled into our - Kernel. */ -#if __ASSUME_NETLINK_SUPPORT == 0 -/* Define in ifaddrs.h. */ -extern int __no_netlink_support attribute_hidden; -#else -# define __no_netlink_support 0 -#endif - - void attribute_hidden __check_pf (bool *seen_ipv4, bool *seen_ipv6, @@ -307,12 +297,10 @@ __check_pf (bool *seen_ipv4, bool *seen_ipv6, *in6ai = NULL; *in6ailen = 0; - if (! __no_netlink_support) - { - struct cached_data *olddata = NULL; - struct cached_data *data = NULL; + struct cached_data *olddata = NULL; + struct cached_data *data = NULL; - __libc_lock_lock (lock); + __libc_lock_lock (lock); #ifdef IS_IN_nscd # define cache_valid() nl_timestamp != 0 && cache->timestamp == nl_timestamp @@ -321,90 +309,59 @@ __check_pf (bool *seen_ipv4, bool *seen_ipv6, ({ uint32_t val = __nscd_get_nl_timestamp (); \ val != 0 && cache->timestamp == val; }) #endif - if (cache != NULL && cache_valid ()) - { - data = cache; - atomic_increment (&cache->usecnt); - } - else - { - int fd = __socket (PF_NETLINK, SOCK_RAW, NETLINK_ROUTE); - - if (__builtin_expect (fd >= 0, 1)) - { - struct sockaddr_nl nladdr; - memset (&nladdr, '\0', sizeof (nladdr)); - nladdr.nl_family = AF_NETLINK; + if (cache != NULL && cache_valid ()) + { + data = cache; + atomic_increment (&cache->usecnt); + } + else + { + int fd = __socket (PF_NETLINK, SOCK_RAW, NETLINK_ROUTE); - socklen_t addr_len = sizeof (nladdr); + if (__builtin_expect (fd >= 0, 1)) + { + struct sockaddr_nl nladdr; + memset (&nladdr, '\0', sizeof (nladdr)); + nladdr.nl_family = AF_NETLINK; - if(__bind (fd, (struct sockaddr *) &nladdr, sizeof (nladdr)) == 0 - && __getsockname (fd, (struct sockaddr *) &nladdr, - &addr_len) == 0) - data = make_request (fd, nladdr.nl_pid); + socklen_t addr_len = sizeof (nladdr); - close_not_cancel_no_status (fd); - } + if (__bind (fd, (struct sockaddr *) &nladdr, sizeof (nladdr)) == 0 + && __getsockname (fd, (struct sockaddr *) &nladdr, + &addr_len) == 0) + data = make_request (fd, nladdr.nl_pid); - if (data != NULL) - { - olddata = cache; - cache = data; - } + close_not_cancel_no_status (fd); } - __libc_lock_unlock (lock); - if (data != NULL) { - /* It worked. */ - *seen_ipv4 = data->seen_ipv4; - *seen_ipv6 = data->seen_ipv6; - *in6ailen = data->in6ailen; - *in6ai = data->in6ai; - - if (olddata != NULL && olddata->usecnt > 0 - && atomic_add_zero (&olddata->usecnt, -1)) - free (olddata); - - return; + olddata = cache; + cache = data; } - -#if __ASSUME_NETLINK_SUPPORT == 0 - /* Remember that there is no netlink support. */ - __no_netlink_support = 1; -#else - /* We cannot determine what interfaces are available. Be - pessimistic. */ - *seen_ipv4 = true; - *seen_ipv6 = true; -#endif } -#if __ASSUME_NETLINK_SUPPORT == 0 - /* No netlink. Get the interface list via getifaddrs. */ - struct ifaddrs *ifa = NULL; - if (getifaddrs (&ifa) != 0) + __libc_lock_unlock (lock); + + if (data != NULL) { - /* We cannot determine what interfaces are available. Be - pessimistic. */ - *seen_ipv4 = true; - *seen_ipv6 = true; + /* It worked. */ + *seen_ipv4 = data->seen_ipv4; + *seen_ipv6 = data->seen_ipv6; + *in6ailen = data->in6ailen; + *in6ai = data->in6ai; + + if (olddata != NULL && olddata->usecnt > 0 + && atomic_add_zero (&olddata->usecnt, -1)) + free (olddata); + return; } - struct ifaddrs *runp; - for (runp = ifa; runp != NULL; runp = runp->ifa_next) - if (runp->ifa_addr != NULL) - { - if (runp->ifa_addr->sa_family == PF_INET) - *seen_ipv4 = true; - else if (runp->ifa_addr->sa_family == PF_INET6) - *seen_ipv6 = true; - } - - (void) freeifaddrs (ifa); -#endif + /* We cannot determine what interfaces are available. Be + pessimistic. */ + *seen_ipv4 = true; + *seen_ipv6 = true; } diff --git a/sysdeps/unix/sysv/linux/configure b/sysdeps/unix/sysv/linux/configure index b86b763..0650067 100644 --- a/sysdeps/unix/sysv/linux/configure +++ b/sysdeps/unix/sysv/linux/configure @@ -284,25 +284,22 @@ test -n "$arch_minimum_kernel" || case "$machine" in i386*) libc_cv_gcc_unwind_find_fde=yes - arch_minimum_kernel=2.4.1 + arch_minimum_kernel=2.4.21 ;; powerpc/powerpc32) libc_cv_gcc_unwind_find_fde=yes - arch_minimum_kernel=2.4.1 - ;; - powerpc/powerpc64) arch_minimum_kernel=2.4.21 ;; s390/s390-32) libc_cv_gcc_unwind_find_fde=yes - arch_minimum_kernel=2.4.1 + arch_minimum_kernel=2.4.21 ;; s390/s390-64) libc_cv_gcc_unwind_find_fde=yes - arch_minimum_kernel=2.4.1 + arch_minimum_kernel=2.4.21 ;; sh*) - arch_minimum_kernel=2.4.1 + arch_minimum_kernel=2.4.21 libc_cv_gcc_unwind_find_fde=yes ;; sparc/sparc64*) @@ -311,10 +308,10 @@ case "$machine" in ;; sparc*) libc_cv_gcc_unwind_find_fde=yes - arch_minimum_kernel=2.4.1 + arch_minimum_kernel=2.4.21 ;; *) - arch_minimum_kernel=2.4.1 + arch_minimum_kernel=2.4.21 ;; esac if test -n "$minimum_kernel"; then diff --git a/sysdeps/unix/sysv/linux/configure.in b/sysdeps/unix/sysv/linux/configure.in index 05cf3bc..fc514fb 100644 --- a/sysdeps/unix/sysv/linux/configure.in +++ b/sysdeps/unix/sysv/linux/configure.in @@ -41,25 +41,22 @@ test -n "$arch_minimum_kernel" || case "$machine" in i386*) libc_cv_gcc_unwind_find_fde=yes - arch_minimum_kernel=2.4.1 + arch_minimum_kernel=2.4.21 ;; powerpc/powerpc32) libc_cv_gcc_unwind_find_fde=yes - arch_minimum_kernel=2.4.1 - ;; - powerpc/powerpc64) arch_minimum_kernel=2.4.21 ;; s390/s390-32) libc_cv_gcc_unwind_find_fde=yes - arch_minimum_kernel=2.4.1 + arch_minimum_kernel=2.4.21 ;; s390/s390-64) libc_cv_gcc_unwind_find_fde=yes - arch_minimum_kernel=2.4.1 + arch_minimum_kernel=2.4.21 ;; sh*) - arch_minimum_kernel=2.4.1 + arch_minimum_kernel=2.4.21 libc_cv_gcc_unwind_find_fde=yes ;; sparc/sparc64*) @@ -68,10 +65,10 @@ case "$machine" in ;; sparc*) libc_cv_gcc_unwind_find_fde=yes - arch_minimum_kernel=2.4.1 + arch_minimum_kernel=2.4.21 ;; *) - arch_minimum_kernel=2.4.1 + arch_minimum_kernel=2.4.21 ;; esac if test -n "$minimum_kernel"; then diff --git a/sysdeps/unix/sysv/linux/if_index.c b/sysdeps/unix/sysv/linux/if_index.c index 3c86bb8..cf33683 100644 --- a/sysdeps/unix/sysv/linux/if_index.c +++ b/sysdeps/unix/sysv/linux/if_index.c @@ -74,90 +74,13 @@ if_freenameindex (struct if_nameindex *ifn) libc_hidden_def (if_freenameindex) -#if __ASSUME_NETLINK_SUPPORT == 0 -static struct if_nameindex * -if_nameindex_ioctl (void) -{ - int fd = __opensock (); - struct ifconf ifc; - unsigned int nifs, i; - int rq_len; - struct if_nameindex *idx = NULL; -# define RQ_IFS 4 - - if (fd < 0) - return NULL; - - ifc.ifc_buf = NULL; - - /* We may be able to get the needed buffer size directly, rather than - guessing. */ - ifc.ifc_buf = NULL; - ifc.ifc_len = 0; - if (__ioctl (fd, SIOCGIFCONF, &ifc) < 0 || ifc.ifc_len == 0) - rq_len = RQ_IFS * sizeof (struct ifreq); - else - rq_len = ifc.ifc_len; - - /* Read all the interfaces out of the kernel. */ - ifc.ifc_buf = alloca (rq_len); - ifc.ifc_len = rq_len; - if (__ioctl (fd, SIOCGIFCONF, &ifc) < 0) - { - close_not_cancel_no_status (fd); - return NULL; - } - - nifs = ifc.ifc_len / sizeof (struct ifreq); - - idx = malloc ((nifs + 1) * sizeof (struct if_nameindex)); - if (idx == NULL) - { - close_not_cancel_no_status (fd); - __set_errno (ENOBUFS); - return NULL; - } - - for (i = 0; i < nifs; ++i) - { - struct ifreq *ifr = &ifc.ifc_req[i]; - idx[i].if_name = __strdup (ifr->ifr_name); - if (idx[i].if_name == NULL - || __ioctl (fd, SIOCGIFINDEX, ifr) < 0) - { - int saved_errno = errno; - unsigned int j; - - for (j = 0; j < i; ++j) - free (idx[j].if_name); - free (idx); - close_not_cancel_no_status (fd); - if (saved_errno == EINVAL) - saved_errno = ENOSYS; - else if (saved_errno == ENOMEM) - saved_errno = ENOBUFS; - __set_errno (saved_errno); - return NULL; - } - idx[i].if_index = ifr->ifr_ifindex; - } - - idx[i].if_index = 0; - idx[i].if_name = NULL; - - close_not_cancel_no_status (fd); - return idx; -} -#endif - - static struct if_nameindex * if_nameindex_netlink (void) { struct netlink_handle nh = { 0, 0, 0, NULL, NULL }; struct if_nameindex *idx = NULL; - if (__no_netlink_support || __netlink_open (&nh) < 0) + if (__netlink_open (&nh) < 0) return NULL; @@ -274,10 +197,6 @@ if_nameindex (void) return NULL; #else struct if_nameindex *result = if_nameindex_netlink (); -# if __ASSUME_NETLINK_SUPPORT == 0 - if (__no_netlink_support) - result = if_nameindex_ioctl (); -# endif return result; #endif } diff --git a/sysdeps/unix/sysv/linux/ifaddrs.c b/sysdeps/unix/sysv/linux/ifaddrs.c index 51836b0..1796531 100644 --- a/sysdeps/unix/sysv/linux/ifaddrs.c +++ b/sysdeps/unix/sysv/linux/ifaddrs.c @@ -1,5 +1,5 @@ /* getifaddrs -- get names and addresses of all network interfaces - Copyright (C) 2003-2008, 2009, 2010, 2011 Free Software Foundation, Inc. + Copyright (C) 2003-2012 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 @@ -37,17 +37,6 @@ #include "netlinkaccess.h" -/* We don't know if we have NETLINK support compiled into our - Kernel, so include the old implementation as fallback. */ -#if __ASSUME_NETLINK_SUPPORT == 0 -int __no_netlink_support attribute_hidden; - -# define getifaddrs fallback_getifaddrs -# include "sysdeps/gnu/ifaddrs.c" -# undef getifaddrs -#endif - - /* There is a problem with this type. The address length for Infiniband sockets is much longer than the 8 bytes allocated in the sockaddr_ll definition. Hence we use here a special @@ -274,9 +263,6 @@ __netlink_open (struct netlink_handle *h) close_and_out: __netlink_close (h); out: -#if __ASSUME_NETLINK_SUPPORT == 0 - __no_netlink_support = 1; -#endif return -1; } /* Determine the ID the kernel assigned for this netlink connection. @@ -340,17 +326,8 @@ getifaddrs_internal (struct ifaddrs **ifap) *ifap = NULL; - if (! __no_netlink_support && __netlink_open (&nh) < 0) - { -#if __ASSUME_NETLINK_SUPPORT != 0 - return -1; -#endif - } - -#if __ASSUME_NETLINK_SUPPORT == 0 - if (__no_netlink_support) - return fallback_getifaddrs (ifap); -#endif + if (__netlink_open (&nh) < 0) + return -1; /* Tell the kernel that we wish to get a list of all active interfaces, collect all data for every interface. */ @@ -859,11 +836,9 @@ getifaddrs (struct ifaddrs **ifap) libc_hidden_def (getifaddrs) -#if __ASSUME_NETLINK_SUPPORT != 0 void freeifaddrs (struct ifaddrs *ifa) { free (ifa); } libc_hidden_def (freeifaddrs) -#endif diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h index 6e64def..cfe335d 100644 --- a/sysdeps/unix/sysv/linux/kernel-features.h +++ b/sysdeps/unix/sysv/linux/kernel-features.h @@ -91,8 +91,7 @@ /* Arm got fcntl64 in 2.4.4, PowerPC and SH have it also in 2.4.4 (I don't know when it got introduced). But PowerPC64 does not support separate FCNTL64 call, FCNTL is already 64-bit */ -#if __LINUX_KERNEL_VERSION >= 132100 \ - && (defined __powerpc__ || defined __sh__) \ +#if (defined __powerpc__ || defined __sh__) \ && !defined __powerpc64__ # define __ASSUME_FCNTL64 1 #endif @@ -101,39 +100,18 @@ MIPS n32). */ #define __ASSUME_GETDENTS64_SYSCALL 1 -/* Starting with 2.4.5 kernels PPC passes the AUXV in the standard way - and the vfork syscall made it into the official kernel. */ -#if __LINUX_KERNEL_VERSION >= (132096+5) && defined __powerpc__ -# define __ASSUME_STD_AUXV 1 +/* Starting with 2.4.5 kernels the vfork syscall made it into the + official kernel for PPC. */ +#ifdef __powerpc__ # define __ASSUME_VFORK_SYSCALL 1 #endif /* Starting with 2.4.5 kernels the mmap2 syscall made it into the official kernel. But PowerPC64 does not support a separate MMAP2 call. */ -#if __LINUX_KERNEL_VERSION >= (132096+5) && defined __powerpc__ \ - && !defined __powerpc64__ +#if defined __powerpc__ && !defined __powerpc64__ # define __ASSUME_MMAP2_SYSCALL 1 #endif -/* Starting with 2.4.21 PowerPC implements the new prctl syscall. - This allows applications to get/set the Floating Point Exception Mode. */ -#if __LINUX_KERNEL_VERSION >= (132096+21) && defined __powerpc__ -# define __ASSUME_NEW_PRCTL_SYSCALL 1 -#endif - -/* Starting with 2.4.21 the PowerPC32 clone syscall works as expected. */ -#if __LINUX_KERNEL_VERSION >= (132096+21) && defined __powerpc__ \ - && !defined __powerpc64__ -# define __ASSUME_FIXED_CLONE_SYSCALL 1 -#endif - -/* Starting with 2.4.21 PowerPC64 implements the new rt_sigreturn syscall. - The new rt_sigreturn takes an ucontext pointer allowing rt_sigreturn - to be used in the set/swapcontext implementation. */ -#if __LINUX_KERNEL_VERSION >= (132096+21) && defined __powerpc64__ -# define __ASSUME_NEW_RT_SIGRETURN_SYSCALL 1 -#endif - /* On x86, the set_thread_area syscall was introduced in 2.5.29, but its semantics was changed in 2.5.30, and again after 2.5.31. */ #if __LINUX_KERNEL_VERSION >= 132384 && defined __i386__ @@ -169,11 +147,6 @@ # define __ASSUME_POSIX_CPU_TIMERS 1 #endif -/* With kernel 2.4.17 we always have netlink support. */ -#if __LINUX_KERNEL_VERSION >= (132096+17) -# define __ASSUME_NETLINK_SUPPORT 1 -#endif - /* The requeue futex functionality was introduced in 2.5.70. */ #if __LINUX_KERNEL_VERSION >= 132422 # define __ASSUME_FUTEX_REQUEUE 1 diff --git a/sysdeps/unix/sysv/linux/netlinkaccess.h b/sysdeps/unix/sysv/linux/netlinkaccess.h index cb190c0..6cd8a88 100644 --- a/sysdeps/unix/sysv/linux/netlinkaccess.h +++ b/sysdeps/unix/sysv/linux/netlinkaccess.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc. +/* Copyright (C) 2004-2012 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 @@ -44,13 +44,6 @@ struct netlink_handle }; -#if __ASSUME_NETLINK_SUPPORT == 0 -extern int __no_netlink_support attribute_hidden; -#else -# define __no_netlink_support 0 -#endif - - extern int __netlink_open (struct netlink_handle *h); extern void __netlink_close (struct netlink_handle *h); extern void __netlink_free_handle (struct netlink_handle *h); diff --git a/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c b/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c index 00595f9..0ff8faa 100644 --- a/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c +++ b/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c @@ -1,6 +1,5 @@ /* Operating system support for run-time dynamic linker. Linux/PPC version. - Copyright (C) 1997, 1998, 2001, 2003, 2006, 2007 - Free Software Foundation, Inc. + Copyright (C) 1997-2012 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 @@ -32,35 +31,4 @@ int __cache_line_size attribute_hidden; __cache_line_size = av->a_un.a_val; \ break; -#ifndef __ASSUME_STD_AUXV - -/* The PowerPC's auxiliary argument block gets aligned to a 16-byte - boundary. This is history and impossible to change compatibly. */ - -#define DL_FIND_ARG_COMPONENTS(cookie, argc, argv, envp, auxp) \ - do { \ - char **_tmp; \ - size_t _test; \ - (argc) = *(long int *) cookie; \ - (argv) = (char **) cookie + 1; \ - (envp) = (argv) + (argc) + 1; \ - for (_tmp = (envp); *_tmp; ++_tmp) \ - continue; \ - /* The following '++' is important! */ \ - ++_tmp; \ - \ - _test = (size_t)_tmp; \ - _test = (_test + 0xf) & ~0xf; \ - /* Under some circumstances, MkLinux (up to at least DR3a5) \ - omits the padding. To work around this, we make a \ - basic sanity check of the argument vector. Of \ - course, this means that in future, the argument \ - vector will have to be laid out to allow for this \ - test :-(. */ \ - if (((ElfW(auxv_t) *)_test)->a_type <= 0x10) \ - _tmp = (char **)_test; \ - (auxp) = (ElfW(auxv_t) *) _tmp; \ - } while (0) -#endif - #include diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S index 57640aa..fb16519 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S @@ -1,5 +1,5 @@ /* Wrapper around clone system call. - Copyright (C) 1997,98,99,2000,02,04,2006 Free Software Foundation, Inc. + Copyright (C) 1997-2012 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 @@ -52,11 +52,7 @@ ENTRY (BP_SYM (__clone)) #ifdef RESET_PID stmw r28,16(r1) #else -# ifndef __ASSUME_FIXED_CLONE_SYSCALL - stmw r29,16(r1) -# else stmw r30,16(r1) -# endif #endif /* Set up stack frame for child. */ @@ -66,9 +62,6 @@ ENTRY (BP_SYM (__clone)) /* Save fn, args, stack across syscall. */ mr r30,r3 /* Function in r30. */ -#ifndef __ASSUME_FIXED_CLONE_SYSCALL - mr r29,r4 /* Stack pointer in r29. */ -#endif #ifdef RESET_PID mr r28,r5 #endif @@ -95,14 +88,6 @@ ENTRY (BP_SYM (__clone)) crandc cr1*4+eq,cr1*4+eq,cr0*4+so bne- cr1,L(parent) /* The '-' is to minimise the race. */ -#ifndef __ASSUME_FIXED_CLONE_SYSCALL - /* On at least mklinux DR3a5, clone() doesn't actually change - the stack pointer. I'm pretty sure this is a bug, because - it adds a race condition if a signal is sent to a thread - just after it is created (in the previous three instructions). */ - mr r1,r29 -#endif - #ifdef RESET_PID andis. r0,r28,CLONE_THREAD>>16 bne+ r0,L(oldpid) @@ -128,11 +113,7 @@ L(parent): #ifdef RESET_PID lmw r28,16(r1) #else -# ifndef __ASSUME_FIXED_CLONE_SYSCALL - lmw r29,16(r1) -# else lmw r30,16(r1) -# endif #endif addi r1,r1,32 bnslr+ diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_mask.c b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_mask.c index 0642e0b..366c5fe 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_mask.c +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_mask.c @@ -1,5 +1,5 @@ /* Procedure definition for FE_MASK_ENV for Linux/ppc. - Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2007-2012 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 @@ -24,44 +24,11 @@ #include #include -#if __ASSUME_NEW_PRCTL_SYSCALL == 0 -/* This is rather fiddly under Linux. We don't have direct access, - and there is no system call, but we can change the bits - in a signal handler's context... */ - -static struct sigaction oact; - -static void -fe_mask_handler (int signum, struct sigcontext *sc) -{ - sc->regs->msr &= ~0x900ul; /* FE0 | FE1 */ - sigaction (SIGUSR1, &oact, NULL); -} -#endif - const fenv_t * __fe_mask_env (void) { -#if __ASSUME_NEW_PRCTL_SYSCALL == 0 -# if defined PR_SET_FPEXC && defined PR_FP_EXC_DISABLED - int result = INLINE_SYSCALL (prctl, 2, PR_SET_FPEXC, PR_FP_EXC_DISABLED); - - if (result == -1 && errno == EINVAL) -# endif - { - struct sigaction act; - - act.sa_handler = (sighandler_t) fe_mask_handler; - sigemptyset (&act.sa_mask); - act.sa_flags = 0; - - sigaction (SIGUSR1, &act, &oact); - raise (SIGUSR1); - } -#else INTERNAL_SYSCALL_DECL (err); INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_DISABLED); -#endif return FE_DFL_ENV; } diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c index 2097af6..86738fd 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c @@ -1,5 +1,5 @@ /* Procedure definition for FE_NOMASK_ENV for Linux/ppc. - Copyright (C) 2000, 2006, 2008 Free Software Foundation, Inc. + Copyright (C) 2000-2012 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 @@ -24,44 +24,11 @@ #include #include -#if __ASSUME_NEW_PRCTL_SYSCALL == 0 -/* This is rather fiddly under Linux. We don't have direct access, - and there is no system call, but we can change the bits - in a signal handler's context... */ - -static struct sigaction oact; - -static void -fe_nomask_handler (int signum, struct sigcontext *sc) -{ - sc->regs->msr |= 0x900ul; /* FE0 | FE1 */ - sigaction (SIGUSR1, &oact, NULL); -} -#endif - const fenv_t * __fe_nomask_env (void) { -#if __ASSUME_NEW_PRCTL_SYSCALL == 0 -# if defined PR_SET_FPEXC && defined PR_FP_EXC_PRECISE - int result = INLINE_SYSCALL (prctl, 2, PR_SET_FPEXC, PR_FP_EXC_PRECISE); - - if (result == -1 && errno == EINVAL) -# endif - { - struct sigaction act; - - act.sa_handler = (sighandler_t) fe_nomask_handler; - sigemptyset (&act.sa_mask); - act.sa_flags = 0; - - sigaction (SIGUSR1, &act, &oact); - raise (SIGUSR1); - } -#else INTERNAL_SYSCALL_DECL (err); INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_PRECISE); -#endif return FE_ENABLED_ENV; } diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c index 9d41ae7..e4bcd98 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c @@ -1,5 +1,5 @@ /* Procedure definition for FE_MASK_ENV for Linux/ppc64. - Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2007-2012 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 @@ -30,11 +30,6 @@ __fe_mask_env (void) int result; INTERNAL_SYSCALL_DECL (err); result = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_DISABLED); -# ifndef __ASSUME_NEW_PRCTL_SYSCALL - if (INTERNAL_SYSCALL_ERROR_P (result, err) - && INTERNAL_SYSCALL_ERRNO (result, err) == EINVAL) - __set_errno (ENOSYS); -# endif #else __set_errno (ENOSYS); #endif diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c index 14cf14d..46b9478 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c @@ -1,5 +1,5 @@ /* Procedure definition for FE_NOMASK_ENV for Linux/ppc64. - Copyright (C) 2003, 2006, 2008 Free Software Foundation, Inc. + Copyright (C) 2003-2012 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 @@ -30,11 +30,6 @@ __fe_nomask_env (void) int result; INTERNAL_SYSCALL_DECL (err); result = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_PRECISE); -# ifndef __ASSUME_NEW_PRCTL_SYSCALL - if (INTERNAL_SYSCALL_ERROR_P (result, err) - && INTERNAL_SYSCALL_ERRNO (result, err) == EINVAL) - __set_errno (ENOSYS); -# endif #else __set_errno (ENOSYS); #endif diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S index 533d98b..472b785 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S @@ -1,5 +1,5 @@ /* Save current context. - Copyright (C) 2002, 2004, 2006 Free Software Foundation, Inc. + Copyright (C) 2002-2012 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 @@ -30,7 +30,6 @@ #if SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4) ENTRY(__novec_getcontext) CALL_MCOUNT 1 -#ifdef __ASSUME_NEW_RT_SIGRETURN_SYSCALL std r0,(SIGCONTEXT_GP_REGS+(PT_R0*8))(r3) std r1,(SIGCONTEXT_GP_REGS+(PT_R1*8))(r3) mflr r0 @@ -137,18 +136,6 @@ ENTRY(__novec_getcontext) li r3,SIG_BLOCK bl JUMPTARGET(__sigprocmask) nop -#else - /* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */ - mflr r0 - std r0,FRAME_LR_SAVE(r1) - cfi_offset (lr, FRAME_LR_SAVE) - stdu r1,-128(r1) - cfi_adjust_cfa_offset(128) - li r3,ENOSYS - bl JUMPTARGET(__syscall_error) - nop - li r3,-1 -#endif ld r0,128+FRAME_LR_SAVE(r1) addi r1,r1,128 @@ -172,7 +159,6 @@ compat_symbol (libc, __novec_getcontext, getcontext, GLIBC_2_3) .machine "altivec" ENTRY(__getcontext) CALL_MCOUNT 1 -#ifdef __ASSUME_NEW_RT_SIGRETURN_SYSCALL std r0,(SIGCONTEXT_GP_REGS+(PT_R0*8))(r3) std r1,(SIGCONTEXT_GP_REGS+(PT_R1*8))(r3) mflr r0 @@ -388,18 +374,6 @@ L(has_no_vec): li r3,SIG_BLOCK bl JUMPTARGET(__sigprocmask) nop -#else - /* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */ - mflr r0 - std r0,FRAME_LR_SAVE(r1) - cfi_offset (lr, FRAME_LR_SAVE) - stdu r1,-128(r1) - cfi_adjust_cfa_offset (128) - li r3,ENOSYS - bl JUMPTARGET(__syscall_error) - nop - li r3,-1 -#endif ld r0,128+FRAME_LR_SAVE(r1) addi r1,r1,128 diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S index 9d5898c..ded2a35 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S @@ -1,5 +1,5 @@ /* Create new context. - Copyright (C) 2002, 2004, 2006 Free Software Foundation, Inc. + Copyright (C) 2002-2012 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 @@ -26,7 +26,6 @@ ENTRY(__makecontext) CALL_MCOUNT 3 -#ifdef __ASSUME_NEW_RT_SIGRETURN_SYSCALL /* Save parameters into the parameter save area of callers frame. */ std r3,FRAME_PARM1_SAVE(r1) /* ucontext_t *ucp */ std r4,FRAME_PARM2_SAVE(r1) /* void (*func)(void) */ @@ -166,22 +165,6 @@ L(gotexitcodeaddr): addi r1,r1,128 mtlr r0 blr -#else - /* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */ - mflr r0 - std r0,FRAME_LR_SAVE(r1) - cfi_offset (lr, FRAME_LR_SAVE) - stdu r1,-128(r1) - cfi_adjust_cfa_offset (128) - li r3,ENOSYS - bl JUMPTARGET(__syscall_error) - nop - li r3,-1 - ld r0,128+FRAME_LR_SAVE(r1) - addi r1,r1,128 - mtlr r0 - blr -#endif END(__makecontext) weak_alias (__makecontext, makecontext) diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S index 988ea3a..a7192a6 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S @@ -1,6 +1,5 @@ /* Switch to context. - Copyright (C) 2002, 2004, 2005, 2006, 2008, 2009 - Free Software Foundation, Inc. + Copyright (C) 2002-2012 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 @@ -39,7 +38,6 @@ #if SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4) ENTRY(__novec_setcontext) CALL_MCOUNT 1 -#ifdef __ASSUME_NEW_RT_SIGRETURN_SYSCALL mflr r0 std r31,-8(1) cfi_offset(r31,-8) @@ -200,22 +198,6 @@ L(nv_do_sigret): li r0,SYS_ify(rt_sigreturn) sc /* No return. */ -#else - /* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */ - mflr r0 - std r0,FRAME_LR_SAVE(r1) - cfi_offset(lr,FRAME_LR_SAVE) - stdu r1,-128(r1) - cfi_adjust_cfa_offset(128) - li r3,ENOSYS - bl JUMPTARGET(__syscall_error) - nop - li r3,-1 - ld r0,128+FRAME_LR_SAVE(r1) - addi r1,r1,128 - mtlr r0 - blr -#endif PSEUDO_END(__novec_setcontext) @@ -227,7 +209,6 @@ compat_symbol (libc, __novec_setcontext, setcontext, GLIBC_2_3) .machine "altivec" ENTRY(__setcontext) CALL_MCOUNT 1 -#ifdef __ASSUME_NEW_RT_SIGRETURN_SYSCALL mflr r0 std r31,-8(1) cfi_offset(r31,-8) @@ -491,22 +472,6 @@ L(do_sigret): li r0,SYS_ify(rt_sigreturn) sc /* No return. */ -#else - /* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */ - mflr r0 - std r0,FRAME_LR_SAVE(r1) - cfi_offset (lr, FRAME_LR_SAVE) - stdu r1,-128(r1) - cfi_adjust_cfa_offset (128) - li r3,ENOSYS - bl JUMPTARGET(__syscall_error) - nop - li r3,-1 - ld r0,128+FRAME_LR_SAVE(r1) - addi r1,r1,128 - mtlr r0 - blr -#endif PSEUDO_END(__setcontext) diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S index 6b007a5..f20e9a9 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S @@ -1,6 +1,5 @@ /* Save current context and install the given one. - Copyright (C) 2002, 2004, 2005, 2006, 2008, 2009 - Free Software Foundation, Inc. + Copyright (C) 2002-2012 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 @@ -39,7 +38,6 @@ .section ".text" ENTRY(__novec_swapcontext) CALL_MCOUNT 2 -#ifdef __ASSUME_NEW_RT_SIGRETURN_SYSCALL std r0,(SIGCONTEXT_GP_REGS+(PT_R0*8))(r3) std r1,(SIGCONTEXT_GP_REGS+(PT_R1*8))(r3) mflr r0 @@ -294,21 +292,6 @@ L(nv_do_sigret): li r0,SYS_ify(rt_sigreturn) sc /* No return. */ -#else - /* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */ - mflr r0 - std r0,FRAME_LR_SAVE(r1) - cfi_offset(lr,FRAME_LR_SAVE) - stdu r1,-128(r1) - li r3,ENOSYS - bl JUMPTARGET(__syscall_error) - nop - li r3,-1 - ld r0,128+FRAME_LR_SAVE(r1) - addi r1,r1,128 - mtlr r0 - blr -#endif PSEUDO_END(__novec_swapcontext) @@ -320,7 +303,6 @@ compat_symbol (libc, __novec_swapcontext, swapcontext, GLIBC_2_3) .machine "altivec" ENTRY(__swapcontext) CALL_MCOUNT 2 -#ifdef __ASSUME_NEW_RT_SIGRETURN_SYSCALL std r0,(SIGCONTEXT_GP_REGS+(PT_R0*8))(r3) std r1,(SIGCONTEXT_GP_REGS+(PT_R1*8))(r3) mflr r0 @@ -789,22 +771,6 @@ L(do_sigret): li r0,SYS_ify(rt_sigreturn) sc /* No return. */ -#else - /* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */ - mflr r0 - std r0,FRAME_LR_SAVE(r1) - cfi_offset (lr, FRAME_LR_SAVE) - stdu r1,-128(r1) - cfi_adjust_cfa_offset (128) - li r3,ENOSYS - bl JUMPTARGET(__syscall_error) - nop - li r3,-1 - ld r0,128+FRAME_LR_SAVE(r1) - addi r1,r1,128 - mtlr r0 - blr -#endif PSEUDO_END(__swapcontext) -- Joseph S. Myers joseph@codesourcery.com