libc {
  GLIBC_2.0 {
    # functions with required interface outside normal name space
    __xpg_basename;

    # functions used in inline functions or macros
    __strto*_internal;

    # compatibility symbol
    __secure_getenv;

    # a*
    a64l; abort; abs; atexit; atof; atoi; atol; atoll;

    # b*
    bsearch;

    # c*
    canonicalize_file_name; clearenv;

    # d*
    div; drand48; drand48_r;

    # e*
    erand48; erand48_r; exit;

    # g*
    getenv; getsubopt;

    # i*
    initstate; initstate_r;

    # l*
    l64a; labs; lcong48; lcong48_r; ldiv; llabs; lldiv; lrand48; lrand48_r;

    # m*
    mblen; mbrlen; mbrtowc; mbsinit; mbsnrtowcs; mbsrtowcs; mbstowcs;
    mbtowc; mcheck; mcount; mrand48; mrand48_r;

    # n*
    nrand48; nrand48_r;

    # o*
    on_exit;

    # p*
    putenv;

    # q*
    qsort;

    # r*
    rand; rand_r; random; random_r; realpath; rpmatch;

    # s*
    seed48; seed48_r; setcontext; setenv; setstate; setstate_r; srand; srand48;
    srand48_r; srandom; srandom_r; step; strfmon; strtod; strtof; strtol;
    strtold; strtoll; strtoq; strtoul; strtoull; strtouq; system;

    # u*
    unsetenv;

    # w*
    wcstombs; wctomb;
  }
  GLIBC_2.1 {
    # a*
    addseverity;

    # f*
    fmtmsg;

    # g*
    getcontext;

    # m*
    makecontext;

    # s*
    strtoimax; strtoumax; swapcontext;
  }
  GLIBC_2.1.1 {
    # _*
    _Exit;

    # i*
    imaxabs; imaxdiv;
  }
  GLIBC_2.1.3 {
    # used by new G++ ABI
    __cxa_atexit; __cxa_finalize;
  }
  GLIBC_2.3 {
    # Silent change in SUS.
    realpath;
  }
  GLIBC_2.8 {
    qsort_r;
  }
  GLIBC_2.10 {
    quick_exit; __cxa_at_quick_exit;
  }
  GLIBC_2.13 {
    __fentry__;
  }
  GLIBC_2.17 {
    secure_getenv;
  }
  GLIBC_2.18 {
    __cxa_thread_atexit_impl;
  }
  GLIBC_PRIVATE {
    # functions which have an additional interface since they are
    # are cancelable.
    __libc_system;
    # Variable which needs a dynamic symbol table entry.
    __abort_msg;
    # Used from other libraries
    __libc_secure_getenv;
    __call_tls_dtors;
    __strtof_nan; __strtod_nan; __strtold_nan;
  }
}
