libc {
  GLIBC_2.0 {
    # necessary for the Hurd brk implementation
    _end;

    # 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;

    # 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_env_variable; _S_msg_set_env_variable;
    _S_msg_get_environment; _S_msg_set_environment;
    _S_msg_get_fd; _S_msg_set_fd;
    _S_msg_get_init_int; _S_msg_set_init_int;
    _S_msg_get_init_ints; _S_msg_set_init_ints;
    _S_msg_get_init_port; _S_msg_set_init_port;
    _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;
    _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;
  }
  GLIBC_2.26 {
    # "quasi-internal" functions
    _hurd_exec_paths;
  }
  GLIBC_2.27 {
    # These always existed as inlines but the real functions were not exported.
    _hurd_fd_error_signal; _hurd_fd_error;
    __hurd_dfail; __hurd_sockfail;
    _hurd_port_locked_set;
    __hurd_threadvar_location_from_sp;
    __hurd_threadvar_location;
    _hurd_userlink_link; _hurd_userlink_unlink; _hurd_userlink_clear;
  }

  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;
  }
}
