diff options
author | Ulrich Drepper <drepper@redhat.com> | 2004-11-20 07:16:31 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2004-11-20 07:16:31 +0000 |
commit | b639d0c9395381757a65b0ab9920e866cdec9120 (patch) | |
tree | dbbe2e4db176d0448b1db845f3da5c020850fb66 /nptl | |
parent | 6cce65407e2fc5015c69bb38741d6942b3e412c3 (diff) | |
download | glibc-b639d0c9395381757a65b0ab9920e866cdec9120.tar.gz glibc-b639d0c9395381757a65b0ab9920e866cdec9120.tar.xz glibc-b639d0c9395381757a65b0ab9920e866cdec9120.zip |
Update.
2004-11-20 Jakub Jelinek <jakub@redhat.com> * sysdeps/unix/sysv/linux/bits/socket.h (SCM_RIGHTS): Avoid comma at the end of enum if __USE_BSD is not defined. (calc_inveclosure, calc_eclosure): Skip OP_DELETED_SUBEXP nodes.
Diffstat (limited to 'nptl')
-rw-r--r-- | nptl/ChangeLog | 15 | ||||
-rw-r--r-- | nptl/Makefile | 2 | ||||
-rw-r--r-- | nptl/allocatestack.c | 1 | ||||
-rw-r--r-- | nptl/init.c | 6 | ||||
-rw-r--r-- | nptl/pthreadP.h | 15 | ||||
-rw-r--r-- | nptl/pthread_create.c | 16 | ||||
-rw-r--r-- | nptl/sysdeps/pthread/createthread.c | 2 | ||||
-rw-r--r-- | nptl/vars.c | 43 |
8 files changed, 85 insertions, 15 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog index d1cb65559c..214e2efb18 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,18 @@ +2004-11-20 Jakub Jelinek <jakub@redhat.com> + + * Makefile (libpthread-routines): Add vars. + * sysdeps/pthread/createthread.c (__pthread_multiple_threads): Remove. + * init.c (__default_stacksize, __is_smp): Remove. + * vars.c: New file. + * pthreadP.h (__find_thread_by_id): If !SHARED, add weak_function + and define a wrapper macro. + (PTHREAD_STATIC_FN_REQUIRE): Define. + * allocatestack.c (__find_thread_by_id): Undefine. + * pthread_create (__pthread_keys): Remove. + (pthread_mutex_lock, pthread_mutex_unlock, pthread_once, + pthread_key_create, pthread_setspecific, pthread_getspecific): Add + PTHREAD_STATIC_FN_REQUIRE. + 2004-11-18 Kaz Kojima <kkojima@rr.iij4u.or.jp> * sysdeps/sh/tls.h (DB_THREAD_SELF): Set the correct bias diff --git a/nptl/Makefile b/nptl/Makefile index 7b1759a08f..0c5043f9f5 100644 --- a/nptl/Makefile +++ b/nptl/Makefile @@ -30,7 +30,7 @@ install-lib-ldscripts := libpthread.so routines = alloca_cutoff forward libc-lowlevellock libc-cancellation shared-only-routines = forward -libpthread-routines = init events version \ +libpthread-routines = init vars events version \ pthread_create pthread_exit pthread_detach \ pthread_join pthread_tryjoin pthread_timedjoin \ pthread_self pthread_equal pthread_yield \ diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c index 6c2367cc89..89a034e0ec 100644 --- a/nptl/allocatestack.c +++ b/nptl/allocatestack.c @@ -771,6 +771,7 @@ __reclaim_stacks (void) #if HP_TIMING_AVAIL +# undef __find_thread_by_id /* Find a thread given the thread ID. */ attribute_hidden struct pthread * diff --git a/nptl/init.c b/nptl/init.c index aad2c9001f..a18078edb8 100644 --- a/nptl/init.c +++ b/nptl/init.c @@ -56,16 +56,10 @@ #endif -/* Default stack size. */ -size_t __default_stacksize attribute_hidden; - /* Size and alignment of static TLS block. */ size_t __static_tls_size; size_t __static_tls_align_m1; -/* Flag whether the machine is SMP or not. */ -int __is_smp attribute_hidden; - /* Version of the library, used in libthread_db to detect mismatches. */ static const char nptl_version[] __attribute_used__ = VERSION; diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h index f73c817f60..24168146fa 100644 --- a/nptl/pthreadP.h +++ b/nptl/pthreadP.h @@ -278,7 +278,14 @@ extern int *__libc_multiple_threads_ptr attribute_hidden; #endif /* Find a thread given its TID. */ -extern struct pthread *__find_thread_by_id (pid_t tid) attribute_hidden; +extern struct pthread *__find_thread_by_id (pid_t tid) attribute_hidden +#ifdef SHARED +; +#else +weak_function; +#define __find_thread_by_id(tid) \ + (__find_thread_by_id ? (__find_thread_by_id) (tid) : (struct pthread *) NULL) +#endif extern void __pthread_init_static_tls (struct link_map *) attribute_hidden; @@ -450,4 +457,10 @@ extern void __nptl_deallocate_tsd (void) attribute_hidden; extern int __nptl_setxid (struct xid_command *cmdp) attribute_hidden; +#ifdef SHARED +# define PTHREAD_STATIC_FN_REQUIRE(name) +#else +# define PTHREAD_STATIC_FN_REQUIRE(name) __asm (".globl " #name); +#endif + #endif /* pthreadP.h */ diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c index 82a3c683aa..fcfc5c6d97 100644 --- a/nptl/pthread_create.c +++ b/nptl/pthread_create.c @@ -55,11 +55,6 @@ unsigned int __nptl_nthreads = 1; #include "createthread.c" -/* Table of the key information. */ -struct pthread_key_struct __pthread_keys[PTHREAD_KEYS_MAX] - __attribute__ ((nocommon)); -hidden_data_def (__pthread_keys) - struct pthread * internal_function __find_in_stack_list (pd) @@ -513,3 +508,14 @@ compat_symbol (libpthread, __pthread_create_2_0, pthread_create, /* Information for libthread_db. */ #include "../nptl_db/db_info.c" + +/* If pthread_create is present, libgcc_eh.a and libsupc++.a expects some other POSIX thread + functions to be present as well. */ +PTHREAD_STATIC_FN_REQUIRE (pthread_mutex_lock) +PTHREAD_STATIC_FN_REQUIRE (pthread_mutex_unlock) + +PTHREAD_STATIC_FN_REQUIRE (pthread_once) + +PTHREAD_STATIC_FN_REQUIRE (pthread_key_create) +PTHREAD_STATIC_FN_REQUIRE (pthread_setspecific) +PTHREAD_STATIC_FN_REQUIRE (pthread_getspecific) diff --git a/nptl/sysdeps/pthread/createthread.c b/nptl/sysdeps/pthread/createthread.c index 25a2703ae1..03a0f1aa37 100644 --- a/nptl/sysdeps/pthread/createthread.c +++ b/nptl/sysdeps/pthread/createthread.c @@ -42,8 +42,6 @@ #ifndef TLS_MULTIPLE_THREADS_IN_TCB -/* Variable set to a nonzero value if more than one thread runs or ran. */ -int __pthread_multiple_threads attribute_hidden; /* Pointer to the corresponding variable in libc. */ int *__libc_multiple_threads_ptr attribute_hidden; #endif diff --git a/nptl/vars.c b/nptl/vars.c new file mode 100644 index 0000000000..1e1a3cf5be --- /dev/null +++ b/nptl/vars.c @@ -0,0 +1,43 @@ +/* Copyright (C) 2004 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; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include <pthreadP.h> +#include <stdlib.h> +#include <tls.h> +#include <unistd.h> + +/* Default stack size. */ +size_t __default_stacksize attribute_hidden +#ifdef SHARED +; +#else + = PTHREAD_STACK_MIN; +#endif + +/* Flag whether the machine is SMP or not. */ +int __is_smp attribute_hidden; + +#ifndef TLS_MULTIPLE_THREADS_IN_TCB +/* Variable set to a nonzero value if more than one thread runs or ran. */ +int __pthread_multiple_threads attribute_hidden; +#endif + +/* Table of the key information. */ +struct pthread_key_struct __pthread_keys[PTHREAD_KEYS_MAX] + __attribute__ ((nocommon)); +hidden_data_def (__pthread_keys) |