+%define SHARED
+%include <shlib-compat.h>
+
libc {
GLIBC_2.0 {
- # Hurd-specific variables
- __hurd_sigthread_stack_base; __hurd_sigthread_stack_end;
- __hurd_sigthread_variables; __hurd_threadvar_max;
- __hurd_threadvar_stack_mask; __hurd_threadvar_stack_offset;
- _hurd_device_master; _hurd_host_priv;
-
- # Hurd-specific exported functions from <hurd.h>
- _hurd_ports; _hurd_ports_use;
- getcrdir; getcwdir; getauth; getproc; getcttyid;
- setcrdir; setcwdir; setauth; setproc; setcttyid;
- file_name_split; file_name_lookup; file_name_lookup_under;
- file_name_path_lookup;
- openport; fopenport; task2pid; pid2task; getdport; vpprintf;
- hurd_thread_self; hurd_thread_cancel; hurd_check_cancel;
- hurd_safe_memset;
- _hurd_init; _hurd_proc_init;
- _hurd_exec;
- _hurd_canonicalize_directory_name_internal;
- getuids; __getuids;
+%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,
+ # these can be removed.
+ __getuids;
+ __hurd_file_name_lookup;
+ _hurd_proc_init; _hurd_umask;
+%endif
- # XXX ought to exist on all platforms
- getumask;
+ # 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;
- # <hurd/lookup.h>
- hurd_file_name_lookup; __hurd_file_name_lookup;
- hurd_file_name_lookup_retry; __hurd_file_name_lookup_retry;
- hurd_file_name_split; __hurd_file_name_split;
- hurd_file_name_path_lookup; __hurd_file_name_path_lookup;
+ # cthreads functions with stubs in libc
+ cthread_keycreate; cthread_getspecific; cthread_setspecific;
+ __libc_getspecific;
- # <hurd/signal.h>
- _hurd_thread_sigstate; _hurd_msgport;
- _hurd_exception2signal;
- hurd_sig_post;
+ # weak refs to libthreads functions that libc calls iff libthreads in use
+ cthread_fork; cthread_detach;
+%endif
- # <hurd/sigpreempt.h>
- hurd_catch_signal;
- hurd_preempt_signals;
+ # necessary for the Hurd brk implementation
+ _end;
- # <hurd/port.h>
- _hurd_port_cleanup;
+ # variables used in macros & inline functions
+ __hurd_sigthread_stack_base; __hurd_sigthread_stack_end;
+ __hurd_sigthread_variables;
+ __hurd_threadvar_max;
+ __hurd_threadvar_stack_mask; __hurd_threadvar_stack_offset;
+
+ # functions used in macros & inline functions
+ __hurd_errno_location;
- # Internal functions referenced by libmachuser and libhurduser.
+ # functions used in libmachuser and libhurduser
_S_catch_exception_raise;
+ _S_catch_exception_raise_state;
+ _S_catch_exception_raise_state_identity;
_S_msg_add_auth; _S_msg_del_auth;
_S_msg_describe_ports;
_S_msg_get_dtable; _S_msg_set_dtable;
_S_msg_get_init_ports; _S_msg_set_init_ports;
_S_msg_proc_newids; _S_msg_report_wait;
_S_msg_sig_post; _S_msg_sig_post_untraced;
- _hurd_intr_rpc_mach_msg; _hurdsig_fault_catch_exception_raise;
+ _hurd_intr_rpc_mach_msg;
+ _hurdsig_fault_catch_exception_raise;
+ _hurdsig_fault_catch_exception_raise_state;
+ _hurdsig_fault_catch_exception_raise_state_identity;
+
+ # "quasi-internal" variables
+ _hurd_device_master;
+ _hurd_dtable; _hurd_dtablesize; _hurd_dtable_lock;
+ _hurd_host_priv;
+ _hurd_msgport;
+ _hurd_ports;
+
+ # "quasi-internal" functions
+ _hurd_canonicalize_directory_name_internal;
+ _hurd_critical_section_lock;
+ _hurd_critical_section_unlock;
+ _hurd_exception2signal;
+ _hurd_exec;
+ _hurd_fd_get;
+ _hurd_init;
+ _hurd_intern_fd;
+ _hurd_port_cleanup;
+ _hurd_port_free;
+ _hurd_port_get;
+ _hurd_port_locked_get;
+ _hurd_ports_use;
+ _hurd_thread_sigstate;
+
+ # functions in normal name space
+
+ # f*
+ file_name_lookup; file_name_lookup_under; file_name_path_lookup;
+ file_name_split;
+ fopenport;
+
+ # g*
+ get_privileged_ports;
+ getauth; getcrdir; getcwdir; getcttyid; getdport; getproc; getumask;
+
+ # h*
+ hurd_catch_signal;
+ hurd_check_cancel;
+ hurd_file_name_lookup; hurd_file_name_lookup_retry;
+ hurd_file_name_path_lookup; hurd_file_name_split;
+ hurd_preempt_signals;
+ hurd_safe_copyin; hurd_safe_copyout;
+ hurd_safe_memmove; hurd_safe_memset;
+ hurd_sig_post;
+ hurd_thread_cancel; hurd_thread_self;
+ hurd_unpreempt_signals;
+
+ # o*
+ openport;
+
+ # p*
+ pid2task;
+
+ # s*
+ setauth; setcrdir; setcwdir; setproc; setcttyid;
+
+ # t*
+ task2pid;
+
+ # v*
+ vpprintf;
+ }
+ GLIBC_2.1 {
+ # "quasi-internal" functions
+ _hurd_proc_init;
+
+ # g*
+ geteuids;
+
+ # s*
+ seteuids;
+ }
+ GLIBC_2.1.3 {
+ # d*
+ directory_name_split;
+
+ # h*
+ hurd_directory_name_split;
+ }
+ GLIBC_2.2.5 {
+ # These always existed as inlines but the real functions were not exported.
+ __hurd_fail;
+ _hurd_self_sigstate;
+
+ # Same for these "quasi-internal" functions
+ _hurd_port_init;
+ _hurd_port_set;
+
+ # internal symbols used by other libraries (e.g. librt)
+ _hurd_raise_signal;
+ _hurdsig_interrupt_timeout;
+ _hurdsig_fault_preemptor; _hurdsig_fault_env;
+ }
+ GLIBC_2.2.6 {
+ # functions used in macros & inline functions
+ __errno_location;
+ }
+
+%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
}