From 693ef46bb12bd665f0eea874dde42fc433b41f44 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Thu, 30 Mar 2000 19:26:35 +0000 Subject: [PATCH] 2000-03-30 Roland McGrath * mach/Versions (libc: GLIBC_2.0) [SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)]: Conditionalize __vm_allocate on this. [SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)]: Conditionalize mutex- and spinlock-related symbols on this. [!SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)] (libc: HURD_CTHREADS_0.3): New version set. Lock-related symbols go here instead in this case. * sysdeps/mach/hurd/Versions (libc: GLIBC_2.0): Remove _cthread_exit_routine, _cthread_init_routine, cthread_keycreate, cthread_getspecific, cthread_setspecific, __libc_getspecific. * hurd/Versions [SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)] (libc: GLIBC_2.0): Put them here instead. [!SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)] (libc: HURD_CTHREADS_0.3): New version set. Those cthreads symbols go here instead in this case. * Versions.def (libc) [USE_IN_LIBIO]: Add HURD_CTHREADS_0.3 version. --- Versions.def | 3 +++ hurd/Versions | 34 +++++++++++++++++++++++++++++++++- mach/Versions | 16 ++++++++++++++++ sysdeps/mach/hurd/Versions | 9 +-------- 4 files changed, 53 insertions(+), 9 deletions(-) diff --git a/Versions.def b/Versions.def index 31674d4..962bcf6 100644 --- a/Versions.def +++ b/Versions.def @@ -9,6 +9,9 @@ libc { GLIBC_2.1.3 GLIBC_2.1.4 GLIBC_2.2 +%ifdef USE_IN_LIBIO + HURD_CTHREADS_0.3 +%endif } libcrypt { GLIBC_2.0 diff --git a/hurd/Versions b/hurd/Versions index a81bc55..6166e99 100644 --- a/hurd/Versions +++ b/hurd/Versions @@ -1,5 +1,9 @@ +%define PIC +%include + libc { GLIBC_2.0 { +%if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1) # These few symbols are here only for binary compatibility # with the pre-versioning libc.so.0.2 ABI. Their replacements # are in the GLIBC_2.1 version set. When the soname changes, @@ -7,6 +11,18 @@ libc { __getuids; __hurd_file_name_lookup; _hurd_proc_init; _hurd_umask; +%endif + + # These go into a different version set if GLIBC_2.0 compatibility + # is not required. See below. +%if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2) + # variables used for detecting cthreads + _cthread_exit_routine; _cthread_init_routine; + + # cthreads functions with stubs in libc + cthread_keycreate; cthread_getspecific; cthread_setspecific; + __libc_getspecific; +%endif # necessary for the Hurd brk implementation _end; @@ -80,7 +96,7 @@ libc { hurd_safe_memmove; hurd_safe_memset; hurd_sig_post; hurd_thread_cancel; hurd_thread_self; - hurd_unpreemt_signals; + hurd_unpreempt_signals; # o* openport; @@ -108,8 +124,10 @@ libc { seteuids; } GLIBC_2.1.3 { +%if SHLIB_COMPAT (libc, GLIBC_2_1_3, HURD_CTHREADS_0_3) # c* cthread_fork; cthread_detach; +%endif # d* directory_name_split; @@ -117,4 +135,18 @@ libc { # h* hurd_directory_name_split; } + +%if !SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2) + HURD_CTHREADS_0.3 { + # weak refs to libthreads functions that libc calls iff libthreads in use + cthread_fork; cthread_detach; + + # variables used for detecting cthreads + _cthread_exit_routine; _cthread_init_routine; + + # cthreads functions with stubs in libc + cthread_keycreate; cthread_getspecific; cthread_setspecific; + __libc_getspecific; + } +%endif } diff --git a/mach/Versions b/mach/Versions index cb282bd..2adf282 100644 --- a/mach/Versions +++ b/mach/Versions @@ -1,9 +1,14 @@ +%define PIC +%include + libc { GLIBC_2.0 { +%if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1) # This symbol is here only for binary compatibility with the # pre-versioning libc.so.0.2 ABI. When the soname changes, # it can be removed. __vm_allocate; +%endif # variables used in Mach-specific macros __mach_task_self_; @@ -11,10 +16,12 @@ libc { # functions used in inline functions and macros __mach_port_deallocate; __mach_thread_self; +%if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2) __mutex_init; __mutex_lock; __mutex_lock_solid; __mutex_trylock; __mutex_unlock; __mutex_unlock_solid; __spin_lock; __spin_lock_init; __spin_lock_solid; __spin_try_lock; __spin_unlock; +%endif # functions used by RPC stubs __mach_msg; @@ -55,4 +62,13 @@ libc { task_create; task_set_special_port; task_suspend; task_terminate; thread_depress_abort; thread_switch; } + +%if !SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2) + HURD_CTHREADS_0.3 { + __mutex_init; __mutex_lock; __mutex_lock_solid; __mutex_trylock; + __mutex_unlock; __mutex_unlock_solid; + __spin_lock; __spin_lock_init; __spin_lock_solid; __spin_try_lock; + __spin_unlock; + } +%endif } diff --git a/sysdeps/mach/hurd/Versions b/sysdeps/mach/hurd/Versions index 9a08c41..863fa50 100644 --- a/sysdeps/mach/hurd/Versions +++ b/sysdeps/mach/hurd/Versions @@ -1,12 +1,5 @@ libc { GLIBC_2.0 { - # variables used for detecting cthreads - _cthread_exit_routine; _cthread_init_routine; - - # cthreads functions with stubs in libc - cthread_keycreate; cthread_getspecific; cthread_setspecific; - __libc_getspecific; - # functions with a weak definition in the dynamic linker __getcwd; __mmap; } @@ -27,6 +20,6 @@ ld.so { __close; __fxstat; __getcwd; __getpid; __libc_read; __libc_write; __lseek; __mmap; __open; __xstat; _exit; _hurd_intr_rpc_mach_msg; - abort; + abort; } } -- 2.7.4