libc {
  GLIBC_2.0 {
    # 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;

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

    # "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_unpreemt_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;
  }
}
