From 121dce05fe25ed878088fa7351c840a303182c65 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Fri, 10 Aug 2012 15:53:27 +0000 Subject: [PATCH] Move Linux kernel version conditionals to kernel-features.h. --- ChangeLog | 11 +++++++++++ ports/ChangeLog.ia64 | 7 +++++++ ports/sysdeps/unix/sysv/linux/ia64/nptl/dl-sysdep.h | 6 ++---- sysdeps/unix/sysv/linux/kernel-features.h | 7 +++++++ sysdeps/unix/sysv/linux/sysconf.c | 12 ++++++------ 5 files changed, 33 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0edfa16..386f849 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2012-08-10 Joseph Myers + + * sysdeps/unix/sysv/linux/kernel-features.h + (__LINUX_ARG_MAX_STACK_BASED_MIN_KERNEL): Define. + [__LINUX_KERNEL_VERSION >= __LINUX_ARG_MAX_STACK_BASED_MIN_KERNEL] + (__ASSUME_ARG_MAX_STACK_BASED): Define. + * sysdeps/unix/sysv/linux/sysconf.c (__sysconf) + [__LINUX_KERNEL_VERSION < 0x020617]: Change condition to + !__ASSUME_ARG_MAX_STACK_BASED. Compare version with + __LINUX_ARG_MAX_STACK_BASED_MIN_KERNEL. + 2012-08-09 Jeff Law [BZ #13939] diff --git a/ports/ChangeLog.ia64 b/ports/ChangeLog.ia64 index 933ac23..943df8d 100644 --- a/ports/ChangeLog.ia64 +++ b/ports/ChangeLog.ia64 @@ -1,3 +1,10 @@ +2012-08-10 Joseph Myers + + * sysdeps/unix/sysv/linux/ia64/nptl/dl-sysdep.h + (_dl_discover_osversion): Do not condition on + __LINUX_KERNEL_VERSION < 0x020617. + (HAVE_DL_DISCOVER_OSVERSION): Likewise. + 2012-08-03 Mike Frysinger [BZ #12194] diff --git a/ports/sysdeps/unix/sysv/linux/ia64/nptl/dl-sysdep.h b/ports/sysdeps/unix/sysv/linux/ia64/nptl/dl-sysdep.h index e30e33d..0962129 100644 --- a/ports/sysdeps/unix/sysv/linux/ia64/nptl/dl-sysdep.h +++ b/ports/sysdeps/unix/sysv/linux/ia64/nptl/dl-sysdep.h @@ -1,5 +1,5 @@ /* System-specific settings for dynamic linker code. IA-64 version. - Copyright (C) 2003, 2004, 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 @@ -65,9 +65,7 @@ extern int _dl_sysinfo_break attribute_hidden; #define DL_ARGV_NOT_RELRO 1 -/* The _dl_discover_osversion function is so far only needed in sysconf - to check for kernels later than 2.6.23. */ -#if !defined __ASSEMBLER__ && __LINUX_KERNEL_VERSION < 0x020617 +#ifndef __ASSEMBLER__ /* Get version of the OS. */ extern int _dl_discover_osversion (void) attribute_hidden; # define HAVE_DL_DISCOVER_OSVERSION 1 diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h index 21fba88..bf81c4a 100644 --- a/sysdeps/unix/sysv/linux/kernel-features.h +++ b/sysdeps/unix/sysv/linux/kernel-features.h @@ -210,6 +210,13 @@ # define __ASSUME_O_CLOEXEC 1 #endif +/* From 2.6.23 onwards the value of ARG_MAX depends on the stack + size. */ +#define __LINUX_ARG_MAX_STACK_BASED_MIN_KERNEL 0x020617 +#if __LINUX_KERNEL_VERSION >= __LINUX_ARG_MAX_STACK_BASED_MIN_KERNEL +# define __ASSUME_ARG_MAX_STACK_BASED 1 +#endif + /* Support for ADJ_OFFSET_SS_READ was added in 2.6.24. */ #if __LINUX_KERNEL_VERSION >= 0x020618 # define __ASSUME_ADJ_OFFSET_SS_READ 1 diff --git a/sysdeps/unix/sysv/linux/sysconf.c b/sysdeps/unix/sysv/linux/sysconf.c index 5c8f45d..47ce5ef 100644 --- a/sysdeps/unix/sysv/linux/sysconf.c +++ b/sysdeps/unix/sysv/linux/sysconf.c @@ -1,5 +1,5 @@ /* Get file-specific information about a file. Linux version. - Copyright (C) 2003,2004,2006 2008,2009,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 @@ -88,11 +88,11 @@ __sysconf (int name) return HAS_CPUCLOCK (name); case _SC_ARG_MAX: -#if __LINUX_KERNEL_VERSION < 0x020617 - /* Determine whether this is a kernel 2.6.23 or later. Only - then do we have an argument limit determined by the stack - size. */ - if (GLRO(dl_discover_osversion) () >= 0x020617) +#if !__ASSUME_ARG_MAX_STACK_BASED + /* Determine whether this is a kernel with an argument limit + determined by the stack size. */ + if (GLRO(dl_discover_osversion) () + >= __LINUX_ARG_MAX_STACK_BASED_MIN_KERNEL) #endif /* Use getrlimit to get the stack limit. */ if (__getrlimit (RLIMIT_STACK, &rlimit) == 0) -- 2.7.4