From fa279678a0770fe71ddfbb3cba8400a37754a1e7 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sat, 7 Oct 2006 20:30:57 +0000 Subject: [PATCH] * Versions.def: Add GLIBC_2.6 to libpthread. --- ChangeLog | 2 + Versions.def | 1 + nptl/ChangeLog | 14 ++++ nptl/pthread_attr_setstack.c | 15 ++-- nptl/pthread_attr_setstacksize.c | 14 +++- nptl/sysdeps/unix/sysv/linux/powerpc/Versions | 4 + .../unix/sysv/linux/powerpc/bits/local_lim.h | 90 ++++++++++++++++++++++ .../sysv/linux/powerpc/pthread_attr_setstack.c | 2 + .../sysv/linux/powerpc/pthread_attr_setstacksize.c | 8 ++ 9 files changed, 142 insertions(+), 8 deletions(-) create mode 100644 nptl/sysdeps/unix/sysv/linux/powerpc/bits/local_lim.h create mode 100644 nptl/sysdeps/unix/sysv/linux/powerpc/pthread_attr_setstack.c create mode 100644 nptl/sysdeps/unix/sysv/linux/powerpc/pthread_attr_setstacksize.c diff --git a/ChangeLog b/ChangeLog index b29e4dc2fa..d9b37a1804 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2006-10-07 Ulrich Drepper + * Versions.def: Add GLIBC_2.6 to libpthread. + * include/shlib-compat.h (SHLIB_COMPAT): Expand parameters before use. (versioned_symbol): Likewise. (compat_symbol): Likewise. diff --git a/Versions.def b/Versions.def index b492caaf0b..f40f351801 100644 --- a/Versions.def +++ b/Versions.def @@ -82,6 +82,7 @@ libpthread { GLIBC_2.3.3 GLIBC_2.3.4 GLIBC_2.4 + GLIBC_2.6 GLIBC_PRIVATE } libresolv { diff --git a/nptl/ChangeLog b/nptl/ChangeLog index f96101aa9e..5f55561eb9 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,17 @@ +2006-10-07 Ulrich Drepper + + * sysdeps/unix/sysv/linux/powerpc/bits/local_lim.h: New file. + * sysdeps/unix/sysv/linux/powerpc/pthread_attr_setstack.c: New file. + * sysdeps/unix/sysv/linux/powerpc/pthread_attr_setstacksize.c: + New file. + * pthread_attr_setstack.c: Allow overwriting the version number of the + new symbol. + * pthread_attr_setstacksize.c: Likewise. + (__old_pthread_attr_setstacksize): If STACKSIZE_ADJUST is defined use + it. + * sysdeps/unix/sysv/linux/powerpc/Versions (libpthread): Add + pthread_attr_setstack and pthread_attr_setstacksize to GLIBC_2.6. + 2006-09-24 Ulrich Drepper [BZ #3251] diff --git a/nptl/pthread_attr_setstack.c b/nptl/pthread_attr_setstack.c index 622e4a2250..be79e32082 100644 --- a/nptl/pthread_attr_setstack.c +++ b/nptl/pthread_attr_setstack.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003, 2006 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2002. @@ -23,6 +23,11 @@ #include "pthreadP.h" +#ifndef NEW_VERNUM +# define NEW_VERNUM GLIBC_2_3_3 +#endif + + int __pthread_attr_setstack (attr, stackaddr, stacksize) pthread_attr_t *attr; @@ -54,9 +59,9 @@ strong_alias (__pthread_attr_setstack, pthread_attr_setstack) #else # include versioned_symbol (libpthread, __pthread_attr_setstack, pthread_attr_setstack, - GLIBC_2_3_3); + NEW_VERNUM); -# if SHLIB_COMPAT(libpthread, GLIBC_2_2, GLIBC_2_3_3) +# if SHLIB_COMPAT(libpthread, GLIBC_2_2, NEW_VERNUM) int __old_pthread_attr_setstack (pthread_attr_t *attr, void *stackaddr, @@ -71,9 +76,9 @@ __old_pthread_attr_setstack (pthread_attr_t *attr, void *stackaddr, if (stacksize < 16384) return EINVAL; -# ifdef EXTRA_PARAM_CHECKS +# ifdef EXTRA_PARAM_CHECKS EXTRA_PARAM_CHECKS; -# endif +# endif iattr->stacksize = stacksize; iattr->stackaddr = (char *) stackaddr + stacksize; diff --git a/nptl/pthread_attr_setstacksize.c b/nptl/pthread_attr_setstacksize.c index f84a9f68e3..cfafb0a6ac 100644 --- a/nptl/pthread_attr_setstacksize.c +++ b/nptl/pthread_attr_setstacksize.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003, 2006 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2002. @@ -22,6 +22,10 @@ #include #include "pthreadP.h" +#ifndef NEW_VERNUM +# define NEW_VERNUM 2_3_3 +#endif + int __pthread_attr_setstacksize (attr, stacksize) @@ -47,9 +51,9 @@ strong_alias (__pthread_attr_setstacksize, pthread_attr_setstacksize) #else # include versioned_symbol (libpthread, __pthread_attr_setstacksize, - pthread_attr_setstacksize, GLIBC_2_3_3); + pthread_attr_setstacksize, NEW_VERNUM); -# if SHLIB_COMPAT(libpthread, GLIBC_2_1, GLIBC_2_3_3) +# if SHLIB_COMPAT(libpthread, GLIBC_2_1, NEW_VERNUM) int __old_pthread_attr_setstacksize (pthread_attr_t *attr, size_t stacksize) @@ -63,6 +67,10 @@ __old_pthread_attr_setstacksize (pthread_attr_t *attr, size_t stacksize) if (stacksize < 16384) return EINVAL; +# ifdef STACKSIZE_ADJUST + STACKSIZE_ADJUST; +# endif + iattr->stacksize = stacksize; return 0; diff --git a/nptl/sysdeps/unix/sysv/linux/powerpc/Versions b/nptl/sysdeps/unix/sysv/linux/powerpc/Versions index 9977847984..6b5a0362da 100644 --- a/nptl/sysdeps/unix/sysv/linux/powerpc/Versions +++ b/nptl/sysdeps/unix/sysv/linux/powerpc/Versions @@ -2,4 +2,8 @@ libpthread { GLIBC_2.3.4 { longjmp; siglongjmp; } + GLIBC_2.6 { + # Changed PTHREAD_STACK_MIN. + pthread_attr_setstack; pthread_attr_setstacksize; + } } diff --git a/nptl/sysdeps/unix/sysv/linux/powerpc/bits/local_lim.h b/nptl/sysdeps/unix/sysv/linux/powerpc/bits/local_lim.h new file mode 100644 index 0000000000..ab95fb57ee --- /dev/null +++ b/nptl/sysdeps/unix/sysv/linux/powerpc/bits/local_lim.h @@ -0,0 +1,90 @@ +/* Minimum guaranteed maximum values for system limits. Linux/PPC version. + Copyright (C) 1993-1998,2000,2002-2004,2006 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 + modify it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* The kernel header pollutes the namespace with the NR_OPEN symbol + and defines LINK_MAX although filesystems have different maxima. A + similar thing is true for OPEN_MAX: the limit can be changed at + runtime and therefore the macro must not be defined. Remove this + after including the header if necessary. */ +#ifndef NR_OPEN +# define __undef_NR_OPEN +#endif +#ifndef LINK_MAX +# define __undef_LINK_MAX +#endif +#ifndef OPEN_MAX +# define __undef_OPEN_MAX +#endif + +/* The kernel sources contain a file with all the needed information. */ +#include + +/* Have to remove NR_OPEN? */ +#ifdef __undef_NR_OPEN +# undef NR_OPEN +# undef __undef_NR_OPEN +#endif +/* Have to remove LINK_MAX? */ +#ifdef __undef_LINK_MAX +# undef LINK_MAX +# undef __undef_LINK_MAX +#endif +/* Have to remove OPEN_MAX? */ +#ifdef __undef_OPEN_MAX +# undef OPEN_MAX +# undef __undef_OPEN_MAX +#endif + +/* The number of data keys per process. */ +#define _POSIX_THREAD_KEYS_MAX 128 +/* This is the value this implementation supports. */ +#define PTHREAD_KEYS_MAX 1024 + +/* Controlling the iterations of destructors for thread-specific data. */ +#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4 +/* Number of iterations this implementation does. */ +#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS + +/* The number of threads per process. */ +#define _POSIX_THREAD_THREADS_MAX 64 +/* We have no predefined limit on the number of threads. */ +#undef PTHREAD_THREADS_MAX + +/* Maximum amount by which a process can descrease its asynchronous I/O + priority level. */ +#define AIO_PRIO_DELTA_MAX 20 + +/* Minimum size for a thread. At least two pages for systems with 64k + pages. */ +#define PTHREAD_STACK_MIN 131072 + +/* Maximum number of timer expiration overruns. */ +#define DELAYTIMER_MAX 2147483647 + +/* Maximum tty name length. */ +#define TTY_NAME_MAX 32 + +/* Maximum login name length. This is arbitrary. */ +#define LOGIN_NAME_MAX 256 + +/* Maximum host name length. */ +#define HOST_NAME_MAX 64 + +/* Maximum message queue priority level. */ +#define MQ_PRIO_MAX 32768 diff --git a/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_attr_setstack.c b/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_attr_setstack.c new file mode 100644 index 0000000000..2cb0a13bcb --- /dev/null +++ b/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_attr_setstack.c @@ -0,0 +1,2 @@ +#define NEW_VERNUM GLIBC_2_6 +#include diff --git a/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_attr_setstacksize.c b/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_attr_setstacksize.c new file mode 100644 index 0000000000..9472dd17ef --- /dev/null +++ b/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_attr_setstacksize.c @@ -0,0 +1,8 @@ +#define NEW_VERNUM GLIBC_2_6 +#define STACKSIZE_ADJUST \ + do { \ + size_t ps = __getpagesize (); \ + if (stacksize < 2 * ps) \ + stacksize = 2 * ps; \ + } while (0) +#include -- 2.11.4.GIT