aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2012-07-25 21:19:13 +0000
committerJoseph Myers <joseph@codesourcery.com>2012-07-25 21:19:13 +0000
commit89b4b02f421d2a6d24eb632d9c6977dbe786e6ee (patch)
treecfb4d8f06f24847cb5214a0bb2bc476085415706 /sysdeps
parent842a39cd1ad9391af7a63a19c87f66a730e027a9 (diff)
downloadglibc-89b4b02f421d2a6d24eb632d9c6977dbe786e6ee.tar.xz
glibc-89b4b02f421d2a6d24eb632d9c6977dbe786e6ee.zip
Remove pre-2.4.21 Linux kernel support.
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/unix/sysv/linux/check_pf.c127
-rw-r--r--sysdeps/unix/sysv/linux/configure15
-rw-r--r--sysdeps/unix/sysv/linux/configure.in15
-rw-r--r--sysdeps/unix/sysv/linux/if_index.c83
-rw-r--r--sysdeps/unix/sysv/linux/ifaddrs.c31
-rw-r--r--sysdeps/unix/sysv/linux/kernel-features.h37
-rw-r--r--sysdeps/unix/sysv/linux/netlinkaccess.h9
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c34
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S21
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_mask.c35
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c35
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c7
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c7
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S28
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S19
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S37
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S36
17 files changed, 74 insertions, 502 deletions
diff --git a/sysdeps/unix/sysv/linux/check_pf.c b/sysdeps/unix/sysv/linux/check_pf.c
index 793d27db4e..950498acd4 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 b86b763ad7..0650067e47 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 05cf3bc95e..fc514fbf4a 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 3c86bb8654..cf33683925 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 51836b0dcd..179653103e 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 6e64defba4..cfe335d0bd 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 cb190c0ecc..6cd8a88264 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 00595f9ffe..0ff8faa354 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 \
-