Remove some pre-2.6.0 Linux kernel conditionals.

This commit is contained in:
Joseph Myers 2012-08-03 19:54:08 +00:00
parent 4f75b7a09a
commit 85fe199795
7 changed files with 24 additions and 61 deletions

View File

@ -1,3 +1,17 @@
2012-08-03 Joseph Myers <joseph@codesourcery.com>
* sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_AT_SECURE):
Remove.
(__ASSUME_CORRECT_SI_PID): Likewise.
(__ASSUME_BRK_PAGE_ROUNDED): Likewise.
(__ASSUME_TMPFS_NAME): Likewise.
* sysdeps/unix/sysv/linux/dl-sysdep.c (frob_brk)
[!__ASSUME_BRK_PAGE_ROUNDED]: Remove conditional code.
* sysdeps/unix/sysv/linux/ldsodefs.h [__ASSUME_AT_SECURE]
(HAVE_AUX_SECURE): Make definition unconditional.
* sysdeps/unix/sysv/linux/shm_open.c (where_is_shmfs)
[!__ASSUME_TMPFS_NAME]: Remove conditional code.
2012-08-03 Roland McGrath <roland@hack.frob.com> 2012-08-03 Roland McGrath <roland@hack.frob.com>
* sysdeps/mach/hurd/sys/param.h (MAXSYMLINKS): Macro removed. * sysdeps/mach/hurd/sys/param.h (MAXSYMLINKS): Macro removed.

View File

@ -1,3 +1,9 @@
2012-08-03 Joseph Myers <joseph@codesourcery.com>
* nptl-init.c (sigcancel_handler) [__ASSUME_CORRECT_SI_PID]: Make
code unconditional.
(sighandler_setxid) [__ASSUME_CORRECT_SI_PID]: Likewise.
2012-07-28 Siddhesh Poyarekar <siddhesh@redhat.com> 2012-07-28 Siddhesh Poyarekar <siddhesh@redhat.com>
* tst-pthread-getattr.c (MAX_STACK_SIZE): New macro. * tst-pthread-getattr.c (MAX_STACK_SIZE): New macro.

View File

@ -172,24 +172,18 @@ __nptl_set_robust (struct pthread *self)
static void static void
sigcancel_handler (int sig, siginfo_t *si, void *ctx) sigcancel_handler (int sig, siginfo_t *si, void *ctx)
{ {
#ifdef __ASSUME_CORRECT_SI_PID
/* Determine the process ID. It might be negative if the thread is /* Determine the process ID. It might be negative if the thread is
in the middle of a fork() call. */ in the middle of a fork() call. */
pid_t pid = THREAD_GETMEM (THREAD_SELF, pid); pid_t pid = THREAD_GETMEM (THREAD_SELF, pid);
if (__builtin_expect (pid < 0, 0)) if (__builtin_expect (pid < 0, 0))
pid = -pid; pid = -pid;
#endif
/* Safety check. It would be possible to call this function for /* Safety check. It would be possible to call this function for
other signals and send a signal from another process. This is not other signals and send a signal from another process. This is not
correct and might even be a security problem. Try to catch as correct and might even be a security problem. Try to catch as
many incorrect invocations as possible. */ many incorrect invocations as possible. */
if (sig != SIGCANCEL if (sig != SIGCANCEL
#ifdef __ASSUME_CORRECT_SI_PID
/* Kernels before 2.5.75 stored the thread ID and not the process
ID in si_pid so we skip this test. */
|| si->si_pid != pid || si->si_pid != pid
#endif
|| si->si_code != SI_TKILL) || si->si_code != SI_TKILL)
return; return;
@ -235,24 +229,18 @@ struct xid_command *__xidcmd attribute_hidden;
static void static void
sighandler_setxid (int sig, siginfo_t *si, void *ctx) sighandler_setxid (int sig, siginfo_t *si, void *ctx)
{ {
#ifdef __ASSUME_CORRECT_SI_PID
/* Determine the process ID. It might be negative if the thread is /* Determine the process ID. It might be negative if the thread is
in the middle of a fork() call. */ in the middle of a fork() call. */
pid_t pid = THREAD_GETMEM (THREAD_SELF, pid); pid_t pid = THREAD_GETMEM (THREAD_SELF, pid);
if (__builtin_expect (pid < 0, 0)) if (__builtin_expect (pid < 0, 0))
pid = -pid; pid = -pid;
#endif
/* Safety check. It would be possible to call this function for /* Safety check. It would be possible to call this function for
other signals and send a signal from another process. This is not other signals and send a signal from another process. This is not
correct and might even be a security problem. Try to catch as correct and might even be a security problem. Try to catch as
many incorrect invocations as possible. */ many incorrect invocations as possible. */
if (sig != SIGSETXID if (sig != SIGSETXID
#ifdef __ASSUME_CORRECT_SI_PID
/* Kernels before 2.5.75 stored the thread ID and not the process
ID in si_pid so we skip this test. */
|| si->si_pid != pid || si->si_pid != pid
#endif
|| si->si_code != SI_TKILL) || si->si_code != SI_TKILL)
return; return;

View File

@ -1,5 +1,5 @@
/* Dynamic linker system dependencies for Linux. /* Dynamic linker system dependencies for Linux.
Copyright (C) 1995,1997,2001,2004,2005,2006, 2008 Free Software Foundation, Inc. Copyright (C) 1995-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
@ -33,27 +33,6 @@ static inline void
frob_brk (void) frob_brk (void)
{ {
__brk (0); /* Initialize the break. */ __brk (0); /* Initialize the break. */
#if ! __ASSUME_BRK_PAGE_ROUNDED
/* If the dynamic linker was executed as a program, then the break may
start immediately after our data segment. However, dl-minimal.c has
already stolen the remainder of the page for internal allocations.
If we don't adjust the break location recorded by the kernel, the
normal program startup will inquire, find the value at our &_end,
and start allocating its own data there, clobbering dynamic linker
data structures allocated there during startup.
Later Linux kernels have changed this behavior so that the initial
break value is rounded up to the page boundary before we start. */
extern char *__curbrk attribute_hidden;
extern char _end[] attribute_hidden;
char *const endpage = (void *) 0 + (((__curbrk - (char *) 0)
+ GLRO(dl_pagesize) - 1)
& -GLRO(dl_pagesize));
if (__builtin_expect (__curbrk >= _end && __curbrk < endpage, 0))
__brk (endpage);
#endif
} }
# include <elf/dl-sysdep.c> # include <elf/dl-sysdep.c>

View File

@ -115,15 +115,6 @@
/* The statfs64 syscalls are available in 2.5.74 (but not for alpha). */ /* The statfs64 syscalls are available in 2.5.74 (but not for alpha). */
#define __ASSUME_STATFS64 1 #define __ASSUME_STATFS64 1
/* Starting with at least 2.5.74 the kernel passes the setuid-like exec
flag unconditionally up to the child. */
#define __ASSUME_AT_SECURE 1
/* Starting with the 2.5.75 kernel the kernel fills in the correct value
in the si_pid field passed as part of the siginfo_t struct to signal
handlers. */
#define __ASSUME_CORRECT_SI_PID 1
/* The tgkill syscall was instroduced for i386 in 2.5.75. On x86-64, /* The tgkill syscall was instroduced for i386 in 2.5.75. On x86-64,
sparc, SH, ppc, and ppc64 it was introduced in 2.6.0-test3. */ sparc, SH, ppc, and ppc64 it was introduced in 2.6.0-test3. */
#if defined __i386__ \ #if defined __i386__ \
@ -189,10 +180,6 @@
# define __ASSUME_GETDENTS32_D_TYPE 1 # define __ASSUME_GETDENTS32_D_TYPE 1
#endif #endif
/* Starting with version 2.5.3, the initial location returned by `brk'
after exec is always rounded up to the next page. */
#define __ASSUME_BRK_PAGE_ROUNDED 1
/* Starting with version 2.6.9, the waitid system call is available. /* Starting with version 2.6.9, the waitid system call is available.
Except for powerpc{,64} and s390{,x}, where it is available in 2.6.12. */ Except for powerpc{,64} and s390{,x}, where it is available in 2.6.12. */
#if (__LINUX_KERNEL_VERSION >= 0x020609 \ #if (__LINUX_KERNEL_VERSION >= 0x020609 \
@ -208,11 +195,6 @@
# define __ASSUME_STAT64_SYSCALL 1 # define __ASSUME_STAT64_SYSCALL 1
#endif #endif
/* Early kernel used "shm" as the filesystem name for the filesystem used
for shm_open etc. Later it is "tmpfs". 2.4.20 is a safe bet for the
cutover. */
#define __ASSUME_TMPFS_NAME 1
/* pselect/ppoll were introduced just after 2.6.16-rc1. Due to the way /* pselect/ppoll were introduced just after 2.6.16-rc1. Due to the way
the kernel versions are advertised we can only rely on 2.6.17 to have the kernel versions are advertised we can only rely on 2.6.17 to have
the code. On x86_64 and SH this appeared first in 2.6.19-rc1, the code. On x86_64 and SH this appeared first in 2.6.19-rc1,

View File

@ -41,9 +41,7 @@ extern void _dl_non_dynamic_init (void) internal_function;
/* We can assume that the kernel always provides the AT_SECURE value /* We can assume that the kernel always provides the AT_SECURE value
in the auxiliary vector from 2.5.74 or so on. */ in the auxiliary vector from 2.5.74 or so on. */
#if __ASSUME_AT_SECURE #define HAVE_AUX_SECURE
# define HAVE_AUX_SECURE
#endif
/* Starting with one of the 2.4.0 pre-releases the Linux kernel passes /* Starting with one of the 2.4.0 pre-releases the Linux kernel passes
up the page size information. */ up the page size information. */

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2000-2004,2006,2007 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
@ -86,11 +86,7 @@ where_is_shmfs (void)
while ((mp = __getmntent_r (fp, &resmem, buf, sizeof buf)) != NULL) while ((mp = __getmntent_r (fp, &resmem, buf, sizeof buf)) != NULL)
/* The original name is "shm" but this got changed in early Linux /* The original name is "shm" but this got changed in early Linux
2.4.x to "tmpfs". */ 2.4.x to "tmpfs". */
if (strcmp (mp->mnt_type, "tmpfs") == 0 if (strcmp (mp->mnt_type, "tmpfs") == 0)
#ifndef __ASSUME_TMPFS_NAME
|| strcmp (mp->mnt_type, "shm") == 0
#endif
)
{ {
/* Found it. There might be more than one place where the /* Found it. There might be more than one place where the
filesystem is mounted but one is enough for us. */ filesystem is mounted but one is enough for us. */