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>
|
2012-07-25 Andreas Schwab <schwab@linux-m68k.org>
|
||||||
|
|
||||||
* sysdeps/unix/sysv/linux/i386/accept4.S: Remove pseudo_end label.
|
* 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.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 2004.
|
Contributed by Ulrich Drepper <drepper@cygnus.com>, 2004.
|
||||||
|
|
||||||
@ -43,7 +43,3 @@
|
|||||||
|
|
||||||
/* Some variables normally defined in libc. */
|
/* Some variables normally defined in libc. */
|
||||||
service_user *__nss_hosts_database;
|
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>
|
2012-07-25 Florian Weimer <fweimer@redhat.com>
|
||||||
|
|
||||||
* sysdeps/unix/sysv/linux/arm/nptl/libc.abilist: Add
|
* 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>
|
2012-07-25 Florian Weimer <fweimer@redhat.com>
|
||||||
|
|
||||||
* sysdeps/unix/sysv/linux/m68k/coldfire/nptl/libc.abilist:
|
* sysdeps/unix/sysv/linux/m68k/coldfire/nptl/libc.abilist:
|
||||||
|
@ -28,9 +28,7 @@
|
|||||||
#define __ASSUME_STAT64_SYSCALL 1
|
#define __ASSUME_STAT64_SYSCALL 1
|
||||||
|
|
||||||
/* Arm got fcntl64 in 2.4.4. */
|
/* Arm got fcntl64 in 2.4.4. */
|
||||||
#if __LINUX_KERNEL_VERSION >= 132100
|
#define __ASSUME_FCNTL64 1
|
||||||
# define __ASSUME_FCNTL64 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* The vfork syscall on arm was definitely available in 2.4. */
|
/* The vfork syscall on arm was definitely available in 2.4. */
|
||||||
#define __ASSUME_VFORK_SYSCALL 1
|
#define __ASSUME_VFORK_SYSCALL 1
|
||||||
|
@ -18,12 +18,10 @@
|
|||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
/* These features were surely available with 2.4.12. */
|
/* These features were surely available with 2.4.12. */
|
||||||
#if __LINUX_KERNEL_VERSION >= 132108
|
#define __ASSUME_MMAP2_SYSCALL 1
|
||||||
# define __ASSUME_MMAP2_SYSCALL 1
|
#define __ASSUME_STAT64_SYSCALL 1
|
||||||
# define __ASSUME_STAT64_SYSCALL 1
|
#define __ASSUME_FCNTL64 1
|
||||||
# define __ASSUME_FCNTL64 1
|
#define __ASSUME_VFORK_SYSCALL 1
|
||||||
# define __ASSUME_VFORK_SYSCALL 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Many syscalls were added in 2.6.10 for m68k. */
|
/* Many syscalls were added in 2.6.10 for m68k. */
|
||||||
#if __LINUX_KERNEL_VERSION >= 132618
|
#if __LINUX_KERNEL_VERSION >= 132618
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Determine protocol families for which interfaces exist. Linux version.
|
/* 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.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
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
|
void
|
||||||
attribute_hidden
|
attribute_hidden
|
||||||
__check_pf (bool *seen_ipv4, bool *seen_ipv6,
|
__check_pf (bool *seen_ipv4, bool *seen_ipv6,
|
||||||
@ -307,12 +297,10 @@ __check_pf (bool *seen_ipv4, bool *seen_ipv6,
|
|||||||
*in6ai = NULL;
|
*in6ai = NULL;
|
||||||
*in6ailen = 0;
|
*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
|
#ifdef IS_IN_nscd
|
||||||
# define cache_valid() nl_timestamp != 0 && cache->timestamp == nl_timestamp
|
# 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 (); \
|
({ uint32_t val = __nscd_get_nl_timestamp (); \
|
||||||
val != 0 && cache->timestamp == val; })
|
val != 0 && cache->timestamp == val; })
|
||||||
#endif
|
#endif
|
||||||
if (cache != NULL && cache_valid ())
|
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))
|
||||||
{
|
{
|
||||||
data = cache;
|
struct sockaddr_nl nladdr;
|
||||||
atomic_increment (&cache->usecnt);
|
memset (&nladdr, '\0', sizeof (nladdr));
|
||||||
|
nladdr.nl_family = AF_NETLINK;
|
||||||
|
|
||||||
|
socklen_t addr_len = sizeof (nladdr);
|
||||||
|
|
||||||
|
if (__bind (fd, (struct sockaddr *) &nladdr, sizeof (nladdr)) == 0
|
||||||
|
&& __getsockname (fd, (struct sockaddr *) &nladdr,
|
||||||
|
&addr_len) == 0)
|
||||||
|
data = make_request (fd, nladdr.nl_pid);
|
||||||
|
|
||||||
|
close_not_cancel_no_status (fd);
|
||||||
}
|
}
|
||||||
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;
|
|
||||||
|
|
||||||
socklen_t addr_len = sizeof (nladdr);
|
|
||||||
|
|
||||||
if(__bind (fd, (struct sockaddr *) &nladdr, sizeof (nladdr)) == 0
|
|
||||||
&& __getsockname (fd, (struct sockaddr *) &nladdr,
|
|
||||||
&addr_len) == 0)
|
|
||||||
data = make_request (fd, nladdr.nl_pid);
|
|
||||||
|
|
||||||
close_not_cancel_no_status (fd);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (data != NULL)
|
|
||||||
{
|
|
||||||
olddata = cache;
|
|
||||||
cache = data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
__libc_lock_unlock (lock);
|
|
||||||
|
|
||||||
if (data != NULL)
|
if (data != NULL)
|
||||||
{
|
{
|
||||||
/* It worked. */
|
olddata = cache;
|
||||||
*seen_ipv4 = data->seen_ipv4;
|
cache = data;
|
||||||
*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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#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
|
__libc_lock_unlock (lock);
|
||||||
/* No netlink. Get the interface list via getifaddrs. */
|
|
||||||
struct ifaddrs *ifa = NULL;
|
if (data != NULL)
|
||||||
if (getifaddrs (&ifa) != 0)
|
|
||||||
{
|
{
|
||||||
/* We cannot determine what interfaces are available. Be
|
/* It worked. */
|
||||||
pessimistic. */
|
*seen_ipv4 = data->seen_ipv4;
|
||||||
*seen_ipv4 = true;
|
*seen_ipv6 = data->seen_ipv6;
|
||||||
*seen_ipv6 = true;
|
*in6ailen = data->in6ailen;
|
||||||
|
*in6ai = data->in6ai;
|
||||||
|
|
||||||
|
if (olddata != NULL && olddata->usecnt > 0
|
||||||
|
&& atomic_add_zero (&olddata->usecnt, -1))
|
||||||
|
free (olddata);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct ifaddrs *runp;
|
/* We cannot determine what interfaces are available. Be
|
||||||
for (runp = ifa; runp != NULL; runp = runp->ifa_next)
|
pessimistic. */
|
||||||
if (runp->ifa_addr != NULL)
|
*seen_ipv4 = true;
|
||||||
{
|
*seen_ipv6 = true;
|
||||||
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
|
case "$machine" in
|
||||||
i386*)
|
i386*)
|
||||||
libc_cv_gcc_unwind_find_fde=yes
|
libc_cv_gcc_unwind_find_fde=yes
|
||||||
arch_minimum_kernel=2.4.1
|
arch_minimum_kernel=2.4.21
|
||||||
;;
|
;;
|
||||||
powerpc/powerpc32)
|
powerpc/powerpc32)
|
||||||
libc_cv_gcc_unwind_find_fde=yes
|
libc_cv_gcc_unwind_find_fde=yes
|
||||||
arch_minimum_kernel=2.4.1
|
|
||||||
;;
|
|
||||||
powerpc/powerpc64)
|
|
||||||
arch_minimum_kernel=2.4.21
|
arch_minimum_kernel=2.4.21
|
||||||
;;
|
;;
|
||||||
s390/s390-32)
|
s390/s390-32)
|
||||||
libc_cv_gcc_unwind_find_fde=yes
|
libc_cv_gcc_unwind_find_fde=yes
|
||||||
arch_minimum_kernel=2.4.1
|
arch_minimum_kernel=2.4.21
|
||||||
;;
|
;;
|
||||||
s390/s390-64)
|
s390/s390-64)
|
||||||
libc_cv_gcc_unwind_find_fde=yes
|
libc_cv_gcc_unwind_find_fde=yes
|
||||||
arch_minimum_kernel=2.4.1
|
arch_minimum_kernel=2.4.21
|
||||||
;;
|
;;
|
||||||
sh*)
|
sh*)
|
||||||
arch_minimum_kernel=2.4.1
|
arch_minimum_kernel=2.4.21
|
||||||
libc_cv_gcc_unwind_find_fde=yes
|
libc_cv_gcc_unwind_find_fde=yes
|
||||||
;;
|
;;
|
||||||
sparc/sparc64*)
|
sparc/sparc64*)
|
||||||
@ -311,10 +308,10 @@ case "$machine" in
|
|||||||
;;
|
;;
|
||||||
sparc*)
|
sparc*)
|
||||||
libc_cv_gcc_unwind_find_fde=yes
|
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
|
esac
|
||||||
if test -n "$minimum_kernel"; then
|
if test -n "$minimum_kernel"; then
|
||||||
|
@ -41,25 +41,22 @@ test -n "$arch_minimum_kernel" ||
|
|||||||
case "$machine" in
|
case "$machine" in
|
||||||
i386*)
|
i386*)
|
||||||
libc_cv_gcc_unwind_find_fde=yes
|
libc_cv_gcc_unwind_find_fde=yes
|
||||||
arch_minimum_kernel=2.4.1
|
arch_minimum_kernel=2.4.21
|
||||||
;;
|
;;
|
||||||
powerpc/powerpc32)
|
powerpc/powerpc32)
|
||||||
libc_cv_gcc_unwind_find_fde=yes
|
libc_cv_gcc_unwind_find_fde=yes
|
||||||
arch_minimum_kernel=2.4.1
|
|
||||||
;;
|
|
||||||
powerpc/powerpc64)
|
|
||||||
arch_minimum_kernel=2.4.21
|
arch_minimum_kernel=2.4.21
|
||||||
;;
|
;;
|
||||||
s390/s390-32)
|
s390/s390-32)
|
||||||
libc_cv_gcc_unwind_find_fde=yes
|
libc_cv_gcc_unwind_find_fde=yes
|
||||||
arch_minimum_kernel=2.4.1
|
arch_minimum_kernel=2.4.21
|
||||||
;;
|
;;
|
||||||
s390/s390-64)
|
s390/s390-64)
|
||||||
libc_cv_gcc_unwind_find_fde=yes
|
libc_cv_gcc_unwind_find_fde=yes
|
||||||
arch_minimum_kernel=2.4.1
|
arch_minimum_kernel=2.4.21
|
||||||
;;
|
;;
|
||||||
sh*)
|
sh*)
|
||||||
arch_minimum_kernel=2.4.1
|
arch_minimum_kernel=2.4.21
|
||||||
libc_cv_gcc_unwind_find_fde=yes
|
libc_cv_gcc_unwind_find_fde=yes
|
||||||
;;
|
;;
|
||||||
sparc/sparc64*)
|
sparc/sparc64*)
|
||||||
@ -68,10 +65,10 @@ case "$machine" in
|
|||||||
;;
|
;;
|
||||||
sparc*)
|
sparc*)
|
||||||
libc_cv_gcc_unwind_find_fde=yes
|
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
|
esac
|
||||||
if test -n "$minimum_kernel"; then
|
if test -n "$minimum_kernel"; then
|
||||||
|
@ -74,90 +74,13 @@ if_freenameindex (struct if_nameindex *ifn)
|
|||||||
libc_hidden_def (if_freenameindex)
|
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 *
|
static struct if_nameindex *
|
||||||
if_nameindex_netlink (void)
|
if_nameindex_netlink (void)
|
||||||
{
|
{
|
||||||
struct netlink_handle nh = { 0, 0, 0, NULL, NULL };
|
struct netlink_handle nh = { 0, 0, 0, NULL, NULL };
|
||||||
struct if_nameindex *idx = NULL;
|
struct if_nameindex *idx = NULL;
|
||||||
|
|
||||||
if (__no_netlink_support || __netlink_open (&nh) < 0)
|
if (__netlink_open (&nh) < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
|
||||||
@ -274,10 +197,6 @@ if_nameindex (void)
|
|||||||
return NULL;
|
return NULL;
|
||||||
#else
|
#else
|
||||||
struct if_nameindex *result = if_nameindex_netlink ();
|
struct if_nameindex *result = if_nameindex_netlink ();
|
||||||
# if __ASSUME_NETLINK_SUPPORT == 0
|
|
||||||
if (__no_netlink_support)
|
|
||||||
result = if_nameindex_ioctl ();
|
|
||||||
# endif
|
|
||||||
return result;
|
return result;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* getifaddrs -- get names and addresses of all network interfaces
|
/* 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.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -37,17 +37,6 @@
|
|||||||
#include "netlinkaccess.h"
|
#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
|
/* There is a problem with this type. The address length for
|
||||||
Infiniband sockets is much longer than the 8 bytes allocated in the
|
Infiniband sockets is much longer than the 8 bytes allocated in the
|
||||||
sockaddr_ll definition. Hence we use here a special
|
sockaddr_ll definition. Hence we use here a special
|
||||||
@ -274,9 +263,6 @@ __netlink_open (struct netlink_handle *h)
|
|||||||
close_and_out:
|
close_and_out:
|
||||||
__netlink_close (h);
|
__netlink_close (h);
|
||||||
out:
|
out:
|
||||||
#if __ASSUME_NETLINK_SUPPORT == 0
|
|
||||||
__no_netlink_support = 1;
|
|
||||||
#endif
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
/* Determine the ID the kernel assigned for this netlink connection.
|
/* Determine the ID the kernel assigned for this netlink connection.
|
||||||
@ -340,17 +326,8 @@ getifaddrs_internal (struct ifaddrs **ifap)
|
|||||||
|
|
||||||
*ifap = NULL;
|
*ifap = NULL;
|
||||||
|
|
||||||
if (! __no_netlink_support && __netlink_open (&nh) < 0)
|
if (__netlink_open (&nh) < 0)
|
||||||
{
|
return -1;
|
||||||
#if __ASSUME_NETLINK_SUPPORT != 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
|
/* Tell the kernel that we wish to get a list of all
|
||||||
active interfaces, collect all data for every interface. */
|
active interfaces, collect all data for every interface. */
|
||||||
@ -859,11 +836,9 @@ getifaddrs (struct ifaddrs **ifap)
|
|||||||
libc_hidden_def (getifaddrs)
|
libc_hidden_def (getifaddrs)
|
||||||
|
|
||||||
|
|
||||||
#if __ASSUME_NETLINK_SUPPORT != 0
|
|
||||||
void
|
void
|
||||||
freeifaddrs (struct ifaddrs *ifa)
|
freeifaddrs (struct ifaddrs *ifa)
|
||||||
{
|
{
|
||||||
free (ifa);
|
free (ifa);
|
||||||
}
|
}
|
||||||
libc_hidden_def (freeifaddrs)
|
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
|
/* 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
|
don't know when it got introduced). But PowerPC64 does not support
|
||||||
separate FCNTL64 call, FCNTL is already 64-bit */
|
separate FCNTL64 call, FCNTL is already 64-bit */
|
||||||
#if __LINUX_KERNEL_VERSION >= 132100 \
|
#if (defined __powerpc__ || defined __sh__) \
|
||||||
&& (defined __powerpc__ || defined __sh__) \
|
|
||||||
&& !defined __powerpc64__
|
&& !defined __powerpc64__
|
||||||
# define __ASSUME_FCNTL64 1
|
# define __ASSUME_FCNTL64 1
|
||||||
#endif
|
#endif
|
||||||
@ -101,39 +100,18 @@
|
|||||||
MIPS n32). */
|
MIPS n32). */
|
||||||
#define __ASSUME_GETDENTS64_SYSCALL 1
|
#define __ASSUME_GETDENTS64_SYSCALL 1
|
||||||
|
|
||||||
/* Starting with 2.4.5 kernels PPC passes the AUXV in the standard way
|
/* Starting with 2.4.5 kernels the vfork syscall made it into the
|
||||||
and the vfork syscall made it into the official kernel. */
|
official kernel for PPC. */
|
||||||
#if __LINUX_KERNEL_VERSION >= (132096+5) && defined __powerpc__
|
#ifdef __powerpc__
|
||||||
# define __ASSUME_STD_AUXV 1
|
|
||||||
# define __ASSUME_VFORK_SYSCALL 1
|
# define __ASSUME_VFORK_SYSCALL 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Starting with 2.4.5 kernels the mmap2 syscall made it into the official
|
/* Starting with 2.4.5 kernels the mmap2 syscall made it into the official
|
||||||
kernel. But PowerPC64 does not support a separate MMAP2 call. */
|
kernel. But PowerPC64 does not support a separate MMAP2 call. */
|
||||||
#if __LINUX_KERNEL_VERSION >= (132096+5) && defined __powerpc__ \
|
#if defined __powerpc__ && !defined __powerpc64__
|
||||||
&& !defined __powerpc64__
|
|
||||||
# define __ASSUME_MMAP2_SYSCALL 1
|
# define __ASSUME_MMAP2_SYSCALL 1
|
||||||
#endif
|
#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
|
/* 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. */
|
semantics was changed in 2.5.30, and again after 2.5.31. */
|
||||||
#if __LINUX_KERNEL_VERSION >= 132384 && defined __i386__
|
#if __LINUX_KERNEL_VERSION >= 132384 && defined __i386__
|
||||||
@ -169,11 +147,6 @@
|
|||||||
# define __ASSUME_POSIX_CPU_TIMERS 1
|
# define __ASSUME_POSIX_CPU_TIMERS 1
|
||||||
#endif
|
#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. */
|
/* The requeue futex functionality was introduced in 2.5.70. */
|
||||||
#if __LINUX_KERNEL_VERSION >= 132422
|
#if __LINUX_KERNEL_VERSION >= 132422
|
||||||
# define __ASSUME_FUTEX_REQUEUE 1
|
# 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.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
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 int __netlink_open (struct netlink_handle *h);
|
||||||
extern void __netlink_close (struct netlink_handle *h);
|
extern void __netlink_close (struct netlink_handle *h);
|
||||||
extern void __netlink_free_handle (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.
|
/* Operating system support for run-time dynamic linker. Linux/PPC version.
|
||||||
Copyright (C) 1997, 1998, 2001, 2003, 2006, 2007
|
Copyright (C) 1997-2012 Free Software Foundation, Inc.
|
||||||
Free Software Foundation, Inc.
|
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
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; \
|
__cache_line_size = av->a_un.a_val; \
|
||||||
break;
|
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>
|
#include <sysdeps/unix/sysv/linux/dl-sysdep.c>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Wrapper around clone system call.
|
/* 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.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -52,11 +52,7 @@ ENTRY (BP_SYM (__clone))
|
|||||||
#ifdef RESET_PID
|
#ifdef RESET_PID
|
||||||
stmw r28,16(r1)
|
stmw r28,16(r1)
|
||||||
#else
|
#else
|
||||||
# ifndef __ASSUME_FIXED_CLONE_SYSCALL
|
|
||||||
stmw r29,16(r1)
|
|
||||||
# else
|
|
||||||
stmw r30,16(r1)
|
stmw r30,16(r1)
|
||||||
# endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Set up stack frame for child. */
|
/* Set up stack frame for child. */
|
||||||
@ -66,9 +62,6 @@ ENTRY (BP_SYM (__clone))
|
|||||||
|
|
||||||
/* Save fn, args, stack across syscall. */
|
/* Save fn, args, stack across syscall. */
|
||||||
mr r30,r3 /* Function in r30. */
|
mr r30,r3 /* Function in r30. */
|
||||||
#ifndef __ASSUME_FIXED_CLONE_SYSCALL
|
|
||||||
mr r29,r4 /* Stack pointer in r29. */
|
|
||||||
#endif
|
|
||||||
#ifdef RESET_PID
|
#ifdef RESET_PID
|
||||||
mr r28,r5
|
mr r28,r5
|
||||||
#endif
|
#endif
|
||||||
@ -95,14 +88,6 @@ ENTRY (BP_SYM (__clone))
|
|||||||
crandc cr1*4+eq,cr1*4+eq,cr0*4+so
|
crandc cr1*4+eq,cr1*4+eq,cr0*4+so
|
||||||
bne- cr1,L(parent) /* The '-' is to minimise the race. */
|
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
|
#ifdef RESET_PID
|
||||||
andis. r0,r28,CLONE_THREAD>>16
|
andis. r0,r28,CLONE_THREAD>>16
|
||||||
bne+ r0,L(oldpid)
|
bne+ r0,L(oldpid)
|
||||||
@ -128,11 +113,7 @@ L(parent):
|
|||||||
#ifdef RESET_PID
|
#ifdef RESET_PID
|
||||||
lmw r28,16(r1)
|
lmw r28,16(r1)
|
||||||
#else
|
#else
|
||||||
# ifndef __ASSUME_FIXED_CLONE_SYSCALL
|
|
||||||
lmw r29,16(r1)
|
|
||||||
# else
|
|
||||||
lmw r30,16(r1)
|
lmw r30,16(r1)
|
||||||
# endif
|
|
||||||
#endif
|
#endif
|
||||||
addi r1,r1,32
|
addi r1,r1,32
|
||||||
bnslr+
|
bnslr+
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Procedure definition for FE_MASK_ENV for Linux/ppc.
|
/* 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.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -24,44 +24,11 @@
|
|||||||
#include <sys/prctl.h>
|
#include <sys/prctl.h>
|
||||||
#include <kernel-features.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 *
|
const fenv_t *
|
||||||
__fe_mask_env (void)
|
__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_DECL (err);
|
||||||
INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_DISABLED);
|
INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_DISABLED);
|
||||||
#endif
|
|
||||||
|
|
||||||
return FE_DFL_ENV;
|
return FE_DFL_ENV;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Procedure definition for FE_NOMASK_ENV for Linux/ppc.
|
/* 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.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -24,44 +24,11 @@
|
|||||||
#include <sys/prctl.h>
|
#include <sys/prctl.h>
|
||||||
#include <kernel-features.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 *
|
const fenv_t *
|
||||||
__fe_nomask_env (void)
|
__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_DECL (err);
|
||||||
INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_PRECISE);
|
INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_PRECISE);
|
||||||
#endif
|
|
||||||
|
|
||||||
return FE_ENABLED_ENV;
|
return FE_ENABLED_ENV;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Procedure definition for FE_MASK_ENV for Linux/ppc64.
|
/* 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.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -30,11 +30,6 @@ __fe_mask_env (void)
|
|||||||
int result;
|
int result;
|
||||||
INTERNAL_SYSCALL_DECL (err);
|
INTERNAL_SYSCALL_DECL (err);
|
||||||
result = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_DISABLED);
|
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
|
#else
|
||||||
__set_errno (ENOSYS);
|
__set_errno (ENOSYS);
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Procedure definition for FE_NOMASK_ENV for Linux/ppc64.
|
/* 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.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -30,11 +30,6 @@ __fe_nomask_env (void)
|
|||||||
int result;
|
int result;
|
||||||
INTERNAL_SYSCALL_DECL (err);
|
INTERNAL_SYSCALL_DECL (err);
|
||||||
result = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_PRECISE);
|
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
|
#else
|
||||||
__set_errno (ENOSYS);
|
__set_errno (ENOSYS);
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Save current context.
|
/* 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.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
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)
|
#if SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)
|
||||||
ENTRY(__novec_getcontext)
|
ENTRY(__novec_getcontext)
|
||||||
CALL_MCOUNT 1
|
CALL_MCOUNT 1
|
||||||
#ifdef __ASSUME_NEW_RT_SIGRETURN_SYSCALL
|
|
||||||
std r0,(SIGCONTEXT_GP_REGS+(PT_R0*8))(r3)
|
std r0,(SIGCONTEXT_GP_REGS+(PT_R0*8))(r3)
|
||||||
std r1,(SIGCONTEXT_GP_REGS+(PT_R1*8))(r3)
|
std r1,(SIGCONTEXT_GP_REGS+(PT_R1*8))(r3)
|
||||||
mflr r0
|
mflr r0
|
||||||
@ -137,18 +136,6 @@ ENTRY(__novec_getcontext)
|
|||||||
li r3,SIG_BLOCK
|
li r3,SIG_BLOCK
|
||||||
bl JUMPTARGET(__sigprocmask)
|
bl JUMPTARGET(__sigprocmask)
|
||||||
nop
|
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)
|
ld r0,128+FRAME_LR_SAVE(r1)
|
||||||
addi r1,r1,128
|
addi r1,r1,128
|
||||||
@ -172,7 +159,6 @@ compat_symbol (libc, __novec_getcontext, getcontext, GLIBC_2_3)
|
|||||||
.machine "altivec"
|
.machine "altivec"
|
||||||
ENTRY(__getcontext)
|
ENTRY(__getcontext)
|
||||||
CALL_MCOUNT 1
|
CALL_MCOUNT 1
|
||||||
#ifdef __ASSUME_NEW_RT_SIGRETURN_SYSCALL
|
|
||||||
std r0,(SIGCONTEXT_GP_REGS+(PT_R0*8))(r3)
|
std r0,(SIGCONTEXT_GP_REGS+(PT_R0*8))(r3)
|
||||||
std r1,(SIGCONTEXT_GP_REGS+(PT_R1*8))(r3)
|
std r1,(SIGCONTEXT_GP_REGS+(PT_R1*8))(r3)
|
||||||
mflr r0
|
mflr r0
|
||||||
@ -388,18 +374,6 @@ L(has_no_vec):
|
|||||||
li r3,SIG_BLOCK
|
li r3,SIG_BLOCK
|
||||||
bl JUMPTARGET(__sigprocmask)
|
bl JUMPTARGET(__sigprocmask)
|
||||||
nop
|
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)
|
ld r0,128+FRAME_LR_SAVE(r1)
|
||||||
addi r1,r1,128
|
addi r1,r1,128
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Create new context.
|
/* 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.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -26,7 +26,6 @@
|
|||||||
|
|
||||||
ENTRY(__makecontext)
|
ENTRY(__makecontext)
|
||||||
CALL_MCOUNT 3
|
CALL_MCOUNT 3
|
||||||
#ifdef __ASSUME_NEW_RT_SIGRETURN_SYSCALL
|
|
||||||
/* Save parameters into the parameter save area of callers frame. */
|
/* Save parameters into the parameter save area of callers frame. */
|
||||||
std r3,FRAME_PARM1_SAVE(r1) /* ucontext_t *ucp */
|
std r3,FRAME_PARM1_SAVE(r1) /* ucontext_t *ucp */
|
||||||
std r4,FRAME_PARM2_SAVE(r1) /* void (*func)(void) */
|
std r4,FRAME_PARM2_SAVE(r1) /* void (*func)(void) */
|
||||||
@ -166,22 +165,6 @@ L(gotexitcodeaddr):
|
|||||||
addi r1,r1,128
|
addi r1,r1,128
|
||||||
mtlr r0
|
mtlr r0
|
||||||
blr
|
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)
|
END(__makecontext)
|
||||||
|
|
||||||
weak_alias (__makecontext, makecontext)
|
weak_alias (__makecontext, makecontext)
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
/* Switch to context.
|
/* Switch to context.
|
||||||
Copyright (C) 2002, 2004, 2005, 2006, 2008, 2009
|
Copyright (C) 2002-2012 Free Software Foundation, Inc.
|
||||||
Free Software Foundation, Inc.
|
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
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)
|
#if SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)
|
||||||
ENTRY(__novec_setcontext)
|
ENTRY(__novec_setcontext)
|
||||||
CALL_MCOUNT 1
|
CALL_MCOUNT 1
|
||||||
#ifdef __ASSUME_NEW_RT_SIGRETURN_SYSCALL
|
|
||||||
mflr r0
|
mflr r0
|
||||||
std r31,-8(1)
|
std r31,-8(1)
|
||||||
cfi_offset(r31,-8)
|
cfi_offset(r31,-8)
|
||||||
@ -200,22 +198,6 @@ L(nv_do_sigret):
|
|||||||
li r0,SYS_ify(rt_sigreturn)
|
li r0,SYS_ify(rt_sigreturn)
|
||||||
sc
|
sc
|
||||||
/* No return. */
|
/* 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)
|
PSEUDO_END(__novec_setcontext)
|
||||||
|
|
||||||
@ -227,7 +209,6 @@ compat_symbol (libc, __novec_setcontext, setcontext, GLIBC_2_3)
|
|||||||
.machine "altivec"
|
.machine "altivec"
|
||||||
ENTRY(__setcontext)
|
ENTRY(__setcontext)
|
||||||
CALL_MCOUNT 1
|
CALL_MCOUNT 1
|
||||||
#ifdef __ASSUME_NEW_RT_SIGRETURN_SYSCALL
|
|
||||||
mflr r0
|
mflr r0
|
||||||
std r31,-8(1)
|
std r31,-8(1)
|
||||||
cfi_offset(r31,-8)
|
cfi_offset(r31,-8)
|
||||||
@ -491,22 +472,6 @@ L(do_sigret):
|
|||||||
li r0,SYS_ify(rt_sigreturn)
|
li r0,SYS_ify(rt_sigreturn)
|
||||||
sc
|
sc
|
||||||
/* No return. */
|
/* 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)
|
PSEUDO_END(__setcontext)
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
/* Save current context and install the given one.
|
/* Save current context and install the given one.
|
||||||
Copyright (C) 2002, 2004, 2005, 2006, 2008, 2009
|
Copyright (C) 2002-2012 Free Software Foundation, Inc.
|
||||||
Free Software Foundation, Inc.
|
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -39,7 +38,6 @@
|
|||||||
.section ".text"
|
.section ".text"
|
||||||
ENTRY(__novec_swapcontext)
|
ENTRY(__novec_swapcontext)
|
||||||
CALL_MCOUNT 2
|
CALL_MCOUNT 2
|
||||||
#ifdef __ASSUME_NEW_RT_SIGRETURN_SYSCALL
|
|
||||||
std r0,(SIGCONTEXT_GP_REGS+(PT_R0*8))(r3)
|
std r0,(SIGCONTEXT_GP_REGS+(PT_R0*8))(r3)
|
||||||
std r1,(SIGCONTEXT_GP_REGS+(PT_R1*8))(r3)
|
std r1,(SIGCONTEXT_GP_REGS+(PT_R1*8))(r3)
|
||||||
mflr r0
|
mflr r0
|
||||||
@ -294,21 +292,6 @@ L(nv_do_sigret):
|
|||||||
li r0,SYS_ify(rt_sigreturn)
|
li r0,SYS_ify(rt_sigreturn)
|
||||||
sc
|
sc
|
||||||
/* No return. */
|
/* 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)
|
PSEUDO_END(__novec_swapcontext)
|
||||||
|
|
||||||
@ -320,7 +303,6 @@ compat_symbol (libc, __novec_swapcontext, swapcontext, GLIBC_2_3)
|
|||||||
.machine "altivec"
|
.machine "altivec"
|
||||||
ENTRY(__swapcontext)
|
ENTRY(__swapcontext)
|
||||||
CALL_MCOUNT 2
|
CALL_MCOUNT 2
|
||||||
#ifdef __ASSUME_NEW_RT_SIGRETURN_SYSCALL
|
|
||||||
std r0,(SIGCONTEXT_GP_REGS+(PT_R0*8))(r3)
|
std r0,(SIGCONTEXT_GP_REGS+(PT_R0*8))(r3)
|
||||||
std r1,(SIGCONTEXT_GP_REGS+(PT_R1*8))(r3)
|
std r1,(SIGCONTEXT_GP_REGS+(PT_R1*8))(r3)
|
||||||
mflr r0
|
mflr r0
|
||||||
@ -789,22 +771,6 @@ L(do_sigret):
|
|||||||
li r0,SYS_ify(rt_sigreturn)
|
li r0,SYS_ify(rt_sigreturn)
|
||||||
sc
|
sc
|
||||||
/* No return. */
|
/* 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)
|
PSEUDO_END(__swapcontext)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user