mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-22 04:50:07 +00:00
Remove pre-2.4.21 Linux kernel support.
This commit is contained in:
parent
842a39cd1a
commit
89b4b02f42
92
ChangeLog
92
ChangeLog
@ -1,3 +1,95 @@
|
||||
2012-07-25 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
[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.
|
||||
|
||||
2012-07-25 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/i386/accept4.S: Remove pseudo_end label.
|
||||
|
@ -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 <drepper@cygnus.com>, 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
|
||||
|
@ -1,3 +1,8 @@
|
||||
2012-07-25 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/arm/kernel-features.h
|
||||
(__ASSUME_FCNTL64): Define unconditionally.
|
||||
|
||||
2012-07-25 Florian Weimer <fweimer@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/arm/nptl/libc.abilist: Add
|
||||
|
@ -1,3 +1,11 @@
|
||||
2012-07-25 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/m68k/kernel-features.h
|
||||
(__ASSUME_MMAP2_SYSCALL): Define unconditionally.
|
||||
(__ASSUME_STAT64_SYSCALL): Likewise.
|
||||
(__ASSUME_FCNTL64): Likewise.
|
||||
(__ASSUME_VFORK_SYSCALL): Likewise.
|
||||
|
||||
2012-07-25 Florian Weimer <fweimer@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/m68k/coldfire/nptl/libc.abilist:
|
||||
|
@ -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
|
||||
|
@ -18,12 +18,10 @@
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* 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
|
||||
|
@ -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,8 +297,6 @@ __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;
|
||||
|
||||
@ -338,7 +326,7 @@ __check_pf (bool *seen_ipv4, bool *seen_ipv6,
|
||||
|
||||
socklen_t addr_len = sizeof (nladdr);
|
||||
|
||||
if(__bind (fd, (struct sockaddr *) &nladdr, sizeof (nladdr)) == 0
|
||||
if (__bind (fd, (struct sockaddr *) &nladdr, sizeof (nladdr)) == 0
|
||||
&& __getsockname (fd, (struct sockaddr *) &nladdr,
|
||||
&addr_len) == 0)
|
||||
data = make_request (fd, nladdr.nl_pid);
|
||||
@ -370,41 +358,10 @@ __check_pf (bool *seen_ipv4, bool *seen_ipv6,
|
||||
return;
|
||||
}
|
||||
|
||||
#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)
|
||||
{
|
||||
/* We cannot determine what interfaces are available. Be
|
||||
pessimistic. */
|
||||
*seen_ipv4 = true;
|
||||
*seen_ipv6 = true;
|
||||
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
|
||||
}
|
||||
|
||||
|
||||
|
15
sysdeps/unix/sysv/linux/configure
vendored
15
sysdeps/unix/sysv/linux/configure
vendored
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
if (__netlink_open (&nh) < 0)
|
||||
return -1;
|
||||
#endif
|
||||
}
|
||||
|
||||
#if __ASSUME_NETLINK_SUPPORT == 0
|
||||
if (__no_netlink_support)
|
||||
return fallback_getifaddrs (ifap);
|
||||
#endif
|
||||
|
||||
/* 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
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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 <sysdeps/unix/sysv/linux/dl-sysdep.c>
|
||||
|
@ -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+
|
||||
|
@ -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 <sys/prctl.h>
|
||||
#include <kernel-features.h>
|
||||
|
||||
#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;
|
||||
}
|
||||
|
@ -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 <sys/prctl.h>
|
||||
#include <kernel-features.h>
|
||||
|
||||
#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;
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user