libc {
  GLIBC_2.0 {
    # global variables
    _obstack;

    # interface of malloc functions
    __libc_calloc; __libc_free; __libc_mallinfo; __libc_malloc;
    __libc_mallopt; __libc_memalign; __libc_pvalloc; __libc_realloc;
    __libc_valloc;
    __malloc_initialize_hook; __free_hook; __malloc_hook; __realloc_hook;
    __memalign_hook; __after_morecore_hook;
    __malloc_initialized; __default_morecore; __morecore;

    # functions used in inline functions or macros
    _obstack_allocated_p; _obstack_begin; _obstack_begin_1;
    _obstack_free; _obstack_memory_used; _obstack_newchunk;

    # variables in normal name space
    mallwatch; obstack_alloc_failed_handler; obstack_exit_failure;

    # c*
    calloc; cfree;

    # f*
    free;

    # m*
    mallinfo; malloc; malloc_get_state; malloc_set_state; malloc_stats;
    malloc_trim; malloc_usable_size; mallopt; memalign; mprobe; mtrace;
    muntrace;

    # o*
    obstack_free;

    # p*
    pvalloc;

    # r*
    realloc;

    # t*
    tr_break;

    # v*
    valloc;
  }
  GLIBC_2.1 {
    # Special functions.
    __libc_freeres;
  }
  GLIBC_2.2 {
    # m*
    mcheck_check_all; mcheck_pedantic;

    # p*
    posix_memalign;
  }
  GLIBC_2.10 {
    malloc_info;
  }
  GLIBC_2.16 {
    aligned_alloc;
  }
  GLIBC_PRIVATE {
    # Internal startup hook for libpthread.
    __libc_malloc_pthread_startup;

    # Internal destructor hook for libpthread.
    __libc_thread_freeres;
  }
}