GLIBC_2.0 {
  global:
    # Hidden entry point (through macros).
    _pthread_cleanup_pop; _pthread_cleanup_pop_restore; _pthread_cleanup_push;
    _pthread_cleanup_push_defer;

    # Internal libc interface to libpthread
    __libc_internal_tsd_get; __libc_internal_tsd_set;

    # Overwritten libc functions.
    close; connect; fcntl; fork; fsync; lseek; msync; nanosleep; open;
    pause; raise; read; recv; recvfrom; recvmsg; send; sendmsg; sendto;
    system; tcdrain; wait; waitpid; write;
    __close; __connect; __fcntl; __lseek; __open; __read; __send; __wait;
    __write;

    # POSIX.1c extensions to libc.
    flockfile; funlockfile; ftrylockfile;

    # Non-standard POSIX1.x functions.
    pthread_kill_other_threads_np; pthread_mutexattr_getkind_np;
    pthread_mutexattr_setkind_np;

    # Real POSIX.1c functions.
    pthread_atfork; pthread_attr_destroy; pthread_attr_getdetachstate;
    pthread_attr_getinheritsched; pthread_attr_getschedparam;
    pthread_attr_getschedpolicy; pthread_attr_getscope; pthread_attr_init;
    pthread_attr_setdetachstate; pthread_attr_setinheritsched;
    pthread_attr_setschedparam; pthread_attr_setschedpolicy;
    pthread_attr_setscope; pthread_cancel; pthread_cond_broadcast;
    pthread_cond_destroy; pthread_cond_init; pthread_cond_signal;
    pthread_cond_timedwait; pthread_cond_wait; pthread_condattr_destroy;
    pthread_condattr_init; pthread_create; pthread_detach; pthread_equal;
    pthread_exit; pthread_getschedparam; pthread_getspecific; pthread_join;
    pthread_key_create; pthread_key_delete; pthread_kill;
    pthread_mutex_destroy; pthread_mutex_init; pthread_mutex_lock;
    pthread_mutex_trylock; pthread_mutex_unlock; pthread_mutexattr_destroy;
    pthread_mutexattr_init; pthread_once; pthread_self; pthread_setcancelstate;
    pthread_setcanceltype; pthread_setschedparam; pthread_setspecific;
    pthread_sigmask; pthread_testcancel;

    sem_destroy; sem_getvalue; sem_init; sem_post; sem_trywait; sem_wait;
    sigwait;

    # Protected names for functions used in other shared objects.
    __pthread_getspecific; __pthread_initialize; __pthread_mutex_destroy;
    __pthread_mutex_init; __pthread_mutex_lock; __pthread_mutex_trylock;
    __pthread_mutex_unlock; __pthread_mutexattr_destroy;
    __pthread_mutexattr_init; __pthread_mutexattr_setkind_np;
    __pthread_setspecific;

    # The error functions.
    __errno_location; __h_errno_location;

  local:
    *;
};


GLIBC_2.1 {
  global:
    # Functions with changed interface.
    pthread_attr_init; pthread_create;

    # Unix98 extensions.
    pthread_rwlock_init; pthread_rwlock_destroy; pthread_rwlock_rdlock;
    pthread_rwlock_tryrdlock; pthread_rwlock_wrlock; pthread_rwlock_trywrlock;
    pthread_rwlock_unlock; pthread_rwlockattr_init; pthread_rwlockattr_destroy;
    pthread_rwlockattr_getpshared; pthread_rwlockattr_setpshared;
    pthread_rwlockattr_getkind_np; pthread_rwlockattr_setkind_np;

    pthread_attr_getguardsize; pthread_attr_setguardsize;
    pthread_attr_getstackaddr; pthread_attr_setstackaddr;
    pthread_attr_getstacksize; pthread_attr_setstacksize;

    pthread_getconcurrency; pthread_setconcurrency;
} GLIBC_2.0;
