diff options
| author | Denis Vlasenko <vda.linux@googlemail.com> | 2009-03-16 02:56:27 +0000 | 
|---|---|---|
| committer | Denis Vlasenko <vda.linux@googlemail.com> | 2009-03-16 02:56:27 +0000 | 
| commit | 527bcddcd081d902d4ec851af13c6bab35e20e4d (patch) | |
| tree | 8b14a037f4c54b47b1c18c42f97ad07087b8c732 | |
| parent | 8f5908bf992da8694bd32705404627ee107046a6 (diff) | |
docs/pthreads_hacking.txt: new file
| -rw-r--r-- | docs/pthreads_hacking.txt | 748 | 
1 files changed, 748 insertions, 0 deletions
diff --git a/docs/pthreads_hacking.txt b/docs/pthreads_hacking.txt new file mode 100644 index 000000000..6c23257d4 --- /dev/null +++ b/docs/pthreads_hacking.txt @@ -0,0 +1,748 @@ +# Run me as a shell script in uclibc lib/* + + +# Dump the list of dynamic symbols from libpthread +# and compare libpthread's exported symbols of uclibc with glibc +# (adjust /lib64/libpthread-*.*.so as needed). +# The resulting diff is suspiciously large. +# We export a lot of stuff which glibc does not. + +readelf -sDW libpthread-*.*.so \ +| grep '^ *[0-9]' \ +| sed 's/^[0-9a-f: ]*[^ ]\(  *[A-Z]\)/\1/' \ +| sed 's/ [0-9] / N /' | sed 's/ [0-9][0-9] /  N /' | sed 's/ [0-9][0-9][0-9] /   N /' \ +| sort -k5 | uniq \ +>uclibc.lst + +readelf -sDW /lib64/libpthread-*.*.so \ +| grep '^ *[0-9]' \ +| sed 's/^[0-9a-f: ]*[^ ]\(  *[A-Z]\)/\1/' \ +| sed 's/ [0-9] / N /' | sed 's/ [0-9][0-9] /  N /' | sed 's/ [0-9][0-9][0-9] /   N /' \ +| sort -k5 | uniq \ +>glibc.lst +diff -u uclibc.lst glibc.lst >ug.diff + + +# Check which exported symbols from libpthread are never referenced +# from other libraries. Generally, I'd expect a very few __functions +# with two underscores to be exported and not used by e.g. libc-X.X.X.so, +# as these names are supposed to be internal, i.e. external programs +# usually don't call them. On my system, I got 141 such __functions. +# Examples: +# __flockfilelist - NOP function (why do we need it at all?) +# __pthread_perform_cleanup - called only from within libpthread + +echo *-*.*.*.so | xargs -n1 | grep -v libpthread | xargs readelf -aW >full_dump.lst +>uclibc_unrefd.lst +>uclibc_refd.lst +sed 's/^.* //g' uclibc.lst \ +| while read symbol; do +	if grep -F -- "$symbol" full_dump.lst >/dev/null 2>&1; then +		echo "$symbol" >>uclibc_refd.lst +	else +		echo "$symbol" >>uclibc_unrefd.lst +	fi +done + +exit + + +In case you don't have a glibc system to try it, +ug.diff from vda's system is below. + +--- uclibc.lst	2009-03-16 03:07:58.000000000 +0100 ++++ glibc.lst	2009-03-16 03:07:58.000000000 +0100 +@@ -1,188 +1,173 @@ +-  NOTYPE GLOBAL DEFAULT ABS __bss_start +-    FUNC GLOBAL DEFAULT   N __compare_and_swap ++  OBJECT GLOBAL DEFAULT ABS GLIBC_2.2.5 ++  OBJECT GLOBAL DEFAULT ABS GLIBC_2.2.6 ++  OBJECT GLOBAL DEFAULT ABS GLIBC_2.3.2 ++  OBJECT GLOBAL DEFAULT ABS GLIBC_2.3.3 ++  OBJECT GLOBAL DEFAULT ABS GLIBC_2.3.4 ++  OBJECT GLOBAL DEFAULT ABS GLIBC_2.4 ++  OBJECT GLOBAL DEFAULT ABS GLIBC_PRIVATE ++    FUNC GLOBAL DEFAULT   N _IO_flockfile ++    FUNC GLOBAL DEFAULT   N _IO_ftrylockfile ++    FUNC GLOBAL DEFAULT   N _IO_funlockfile ++  NOTYPE   WEAK DEFAULT UND _Jv_RegisterClasses ++    FUNC GLOBAL DEFAULT UND __clone ++    FUNC   WEAK DEFAULT   N __close ++    FUNC   WEAK DEFAULT   N __connect ++    FUNC   WEAK DEFAULT UND __cxa_finalize ++    FUNC GLOBAL DEFAULT UND __endmntent +     FUNC GLOBAL DEFAULT   N __errno_location +-    FUNC GLOBAL DEFAULT   N __flockfilelist +-    FUNC GLOBAL DEFAULT   N __fresetlockfiles +-    FUNC GLOBAL DEFAULT   N __funlockfilelist ++    FUNC   WEAK DEFAULT   N __fcntl ++    FUNC GLOBAL DEFAULT   N __fork ++    FUNC GLOBAL DEFAULT UND __fxstat64 ++    FUNC GLOBAL DEFAULT UND __getdelim ++    FUNC GLOBAL DEFAULT UND __getmntent_r ++    FUNC GLOBAL DEFAULT UND __getpagesize ++    FUNC GLOBAL DEFAULT UND __gettimeofday +     FUNC GLOBAL DEFAULT   N __h_errno_location +-    FUNC GLOBAL DEFAULT   N __linuxthreads_create_event +-    FUNC GLOBAL DEFAULT   N __linuxthreads_death_event +-  OBJECT GLOBAL DEFAULT   N __linuxthreads_initial_report_events +-  OBJECT GLOBAL DEFAULT   N __linuxthreads_pthread_key_2ndlevel_size +-  OBJECT GLOBAL DEFAULT   N __linuxthreads_pthread_keys_max +-  OBJECT GLOBAL DEFAULT   N __linuxthreads_pthread_sizeof_descr +-  OBJECT GLOBAL DEFAULT   N __linuxthreads_pthread_threads_max +-    FUNC GLOBAL DEFAULT   N __linuxthreads_reap_event +-  OBJECT GLOBAL DEFAULT   N __linuxthreads_version +-    FUNC GLOBAL DEFAULT   N __pthread_alt_lock +-    FUNC GLOBAL DEFAULT   N __pthread_alt_timedlock +-    FUNC GLOBAL DEFAULT   N __pthread_alt_unlock +-    FUNC GLOBAL DEFAULT   N __pthread_attr_destroy +-    FUNC GLOBAL DEFAULT   N __pthread_attr_getdetachstate +-    FUNC GLOBAL DEFAULT   N __pthread_attr_getguardsize +-    FUNC GLOBAL DEFAULT   N __pthread_attr_getinheritsched +-    FUNC GLOBAL DEFAULT   N __pthread_attr_getschedparam +-    FUNC GLOBAL DEFAULT   N __pthread_attr_getschedpolicy +-    FUNC GLOBAL DEFAULT   N __pthread_attr_getscope +-    FUNC GLOBAL DEFAULT   N __pthread_attr_getstack +-    FUNC GLOBAL DEFAULT   N __pthread_attr_getstacksize +-    FUNC GLOBAL DEFAULT   N __pthread_attr_init +-    FUNC GLOBAL DEFAULT   N __pthread_attr_setdetachstate +-    FUNC GLOBAL DEFAULT   N __pthread_attr_setguardsize +-    FUNC GLOBAL DEFAULT   N __pthread_attr_setinheritsched +-    FUNC GLOBAL DEFAULT   N __pthread_attr_setschedparam +-    FUNC GLOBAL DEFAULT   N __pthread_attr_setschedpolicy +-    FUNC GLOBAL DEFAULT   N __pthread_attr_setscope +-    FUNC GLOBAL DEFAULT   N __pthread_attr_setstack +-    FUNC GLOBAL DEFAULT   N __pthread_attr_setstacksize +-    FUNC GLOBAL DEFAULT   N __pthread_barrierattr_getpshared +-    FUNC GLOBAL DEFAULT   N __pthread_compare_and_swap +-    FUNC GLOBAL DEFAULT   N __pthread_cond_broadcast +-    FUNC GLOBAL DEFAULT   N __pthread_cond_destroy +-    FUNC GLOBAL DEFAULT   N __pthread_cond_init +-    FUNC GLOBAL DEFAULT   N __pthread_cond_signal +-    FUNC GLOBAL DEFAULT   N __pthread_cond_timedwait +-    FUNC GLOBAL DEFAULT   N __pthread_cond_wait +-    FUNC GLOBAL DEFAULT   N __pthread_condattr_destroy +-    FUNC GLOBAL DEFAULT   N __pthread_condattr_init +-    FUNC GLOBAL DEFAULT   N __pthread_create +-    FUNC GLOBAL DEFAULT   N __pthread_destroy_specifics +-    FUNC GLOBAL DEFAULT   N __pthread_do_exit +-    FUNC GLOBAL DEFAULT   N __pthread_equal +-    FUNC GLOBAL DEFAULT   N __pthread_exit +-  OBJECT GLOBAL DEFAULT   N __pthread_exit_code +-  OBJECT GLOBAL DEFAULT   N __pthread_exit_requested +-    FUNC GLOBAL DEFAULT   N __pthread_find_self +-  OBJECT GLOBAL DEFAULT   N __pthread_functions +-    FUNC GLOBAL DEFAULT   N __pthread_getconcurrency +-    FUNC GLOBAL DEFAULT   N __pthread_getschedparam +-    FUNC   WEAK DEFAULT   N __pthread_getspecific +-  OBJECT GLOBAL DEFAULT   N __pthread_handles +-  OBJECT GLOBAL DEFAULT   N __pthread_handles_num +-  OBJECT GLOBAL DEFAULT   N __pthread_has_cas +-    FUNC GLOBAL DEFAULT   N __pthread_init_max_stacksize +-  OBJECT GLOBAL DEFAULT   N __pthread_initial_thread +-  OBJECT GLOBAL DEFAULT   N __pthread_initial_thread_bos +-    FUNC GLOBAL DEFAULT   N __pthread_initialize +-    FUNC GLOBAL DEFAULT   N __pthread_initialize_manager ++    FUNC GLOBAL DEFAULT   N __libc_allocate_rtsig ++    FUNC GLOBAL DEFAULT UND __libc_allocate_rtsig_private ++    FUNC GLOBAL DEFAULT   N __libc_current_sigrtmax ++    FUNC GLOBAL DEFAULT UND __libc_current_sigrtmax_private ++    FUNC GLOBAL DEFAULT   N __libc_current_sigrtmin ++    FUNC GLOBAL DEFAULT UND __libc_current_sigrtmin_private ++    FUNC GLOBAL DEFAULT UND __libc_dl_error_tsd ++    FUNC GLOBAL DEFAULT UND __libc_dlopen_mode ++    FUNC GLOBAL DEFAULT UND __libc_dlsym ++    FUNC GLOBAL DEFAULT UND __libc_fatal ++    FUNC GLOBAL DEFAULT UND __libc_fork ++    FUNC GLOBAL DEFAULT UND __libc_longjmp ++    FUNC GLOBAL DEFAULT UND __libc_pthread_init ++  OBJECT GLOBAL DEFAULT UND __libc_stack_end ++    FUNC GLOBAL DEFAULT UND __libc_system ++    FUNC GLOBAL DEFAULT UND __libc_thread_freeres ++    FUNC   WEAK DEFAULT   N __lseek ++    FUNC   WEAK DEFAULT   N __nanosleep ++    FUNC   WEAK DEFAULT   N __open ++    FUNC   WEAK DEFAULT   N __open64 ++    FUNC   WEAK DEFAULT   N __pread64 ++    FUNC GLOBAL DEFAULT   N __pthread_cleanup_routine ++    FUNC GLOBAL DEFAULT   N __pthread_clock_gettime ++    FUNC GLOBAL DEFAULT   N __pthread_clock_settime ++    FUNC GLOBAL DEFAULT   N __pthread_getspecific +     FUNC GLOBAL DEFAULT   N __pthread_initialize_minimal +-    FUNC GLOBAL DEFAULT   N __pthread_internal_tsd_address +-    FUNC GLOBAL DEFAULT   N __pthread_internal_tsd_get +-    FUNC GLOBAL DEFAULT   N __pthread_internal_tsd_set +-    FUNC   WEAK DEFAULT   N __pthread_key_create +-    FUNC GLOBAL DEFAULT   N __pthread_kill_other_threads_np +-  OBJECT GLOBAL DEFAULT   N __pthread_last_event +-    FUNC GLOBAL DEFAULT   N __pthread_lock +-  OBJECT GLOBAL DEFAULT   N __pthread_main_thread +-    FUNC GLOBAL DEFAULT   N __pthread_manager +-    FUNC GLOBAL DEFAULT   N __pthread_manager_adjust_prio +-    FUNC GLOBAL DEFAULT   N __pthread_manager_event +-  OBJECT GLOBAL DEFAULT   N __pthread_manager_reader +-  OBJECT GLOBAL DEFAULT   N __pthread_manager_request +-    FUNC GLOBAL DEFAULT   N __pthread_manager_sighandler +-  OBJECT GLOBAL DEFAULT   N __pthread_manager_thread +-  OBJECT GLOBAL DEFAULT   N __pthread_manager_thread_bos +-  OBJECT GLOBAL DEFAULT   N __pthread_manager_thread_tos +-  OBJECT GLOBAL DEFAULT   N __pthread_max_stacksize +-    FUNC   WEAK DEFAULT   N __pthread_mutex_destroy +-    FUNC   WEAK DEFAULT   N __pthread_mutex_init +-    FUNC   WEAK DEFAULT   N __pthread_mutex_lock +-    FUNC GLOBAL DEFAULT   N __pthread_mutex_timedlock +-    FUNC   WEAK DEFAULT   N __pthread_mutex_trylock +-    FUNC   WEAK DEFAULT   N __pthread_mutex_unlock +-    FUNC   WEAK DEFAULT   N __pthread_mutexattr_destroy +-    FUNC GLOBAL DEFAULT   N __pthread_mutexattr_getkind_np +-    FUNC GLOBAL DEFAULT   N __pthread_mutexattr_getpshared +-    FUNC GLOBAL DEFAULT   N __pthread_mutexattr_gettype +-    FUNC   WEAK DEFAULT   N __pthread_mutexattr_init +-    FUNC GLOBAL DEFAULT   N __pthread_mutexattr_setkind_np +-    FUNC GLOBAL DEFAULT   N __pthread_mutexattr_setpshared +-    FUNC   WEAK DEFAULT   N __pthread_mutexattr_settype +-  OBJECT GLOBAL DEFAULT   N __pthread_nonstandard_stacks +-    FUNC GLOBAL DEFAULT   N __pthread_null_sighandler +-  OBJECT GLOBAL DEFAULT   N __pthread_offsetof_descr +-  OBJECT GLOBAL DEFAULT   N __pthread_offsetof_pid +-    FUNC   WEAK DEFAULT   N __pthread_once +-    FUNC GLOBAL DEFAULT   N __pthread_once_fork_child +-    FUNC GLOBAL DEFAULT   N __pthread_once_fork_parent +-    FUNC GLOBAL DEFAULT   N __pthread_once_fork_prepare +-    FUNC GLOBAL DEFAULT   N __pthread_perform_cleanup +-    FUNC GLOBAL DEFAULT   N __pthread_raise +-    FUNC GLOBAL DEFAULT   N __pthread_reset_main_thread +-    FUNC GLOBAL DEFAULT   N __pthread_restart_new +-    FUNC   WEAK DEFAULT   N __pthread_rwlock_destroy +-    FUNC   WEAK DEFAULT   N __pthread_rwlock_init +-    FUNC   WEAK DEFAULT   N __pthread_rwlock_rdlock +-    FUNC GLOBAL DEFAULT   N __pthread_rwlock_timedrdlock +-    FUNC GLOBAL DEFAULT   N __pthread_rwlock_timedwrlock +-    FUNC   WEAK DEFAULT   N __pthread_rwlock_tryrdlock +-    FUNC   WEAK DEFAULT   N __pthread_rwlock_trywrlock +-    FUNC   WEAK DEFAULT   N __pthread_rwlock_unlock +-    FUNC   WEAK DEFAULT   N __pthread_rwlock_wrlock +-    FUNC GLOBAL DEFAULT   N __pthread_rwlockattr_destroy +-    FUNC GLOBAL DEFAULT   N __pthread_self +-    FUNC GLOBAL DEFAULT   N __pthread_setcancelstate +-    FUNC GLOBAL DEFAULT   N __pthread_setcanceltype +-    FUNC GLOBAL DEFAULT   N __pthread_setconcurrency +-    FUNC GLOBAL DEFAULT   N __pthread_setschedparam +-    FUNC   WEAK DEFAULT   N __pthread_setspecific +-  OBJECT GLOBAL DEFAULT   N __pthread_sig_cancel +-  OBJECT GLOBAL DEFAULT   N __pthread_sig_debug +-  OBJECT GLOBAL DEFAULT   N __pthread_sig_restart +-    FUNC GLOBAL DEFAULT   N __pthread_sigaction +-    FUNC GLOBAL DEFAULT   N __pthread_sighandler +-    FUNC GLOBAL DEFAULT   N __pthread_sighandler_rt +-    FUNC GLOBAL DEFAULT   N __pthread_sigwait +-  OBJECT GLOBAL DEFAULT   N __pthread_sizeof_handle +-  OBJECT GLOBAL DEFAULT   N __pthread_smp_kernel +-    FUNC GLOBAL DEFAULT   N __pthread_spin_destroy +-    FUNC GLOBAL DEFAULT   N __pthread_spin_init +-    FUNC GLOBAL DEFAULT   N __pthread_spin_lock +-    FUNC GLOBAL DEFAULT   N __pthread_spin_trylock +-    FUNC GLOBAL DEFAULT   N __pthread_spin_unlock +-    FUNC GLOBAL DEFAULT   N __pthread_thread_self +-  OBJECT GLOBAL DEFAULT   N __pthread_threads_debug +-  OBJECT GLOBAL DEFAULT   N __pthread_threads_events +-  OBJECT GLOBAL DEFAULT   N __pthread_threads_max +-    FUNC GLOBAL DEFAULT   N __pthread_timedsuspend_new +-    FUNC GLOBAL DEFAULT   N __pthread_unlock +-    FUNC GLOBAL DEFAULT   N __pthread_wait_for_restart_signal +-    FUNC GLOBAL DEFAULT   N __register_atfork ++    FUNC GLOBAL DEFAULT   N __pthread_key_create ++    FUNC GLOBAL DEFAULT   N __pthread_mutex_destroy ++    FUNC GLOBAL DEFAULT   N __pthread_mutex_init ++    FUNC GLOBAL DEFAULT   N __pthread_mutex_lock ++    FUNC GLOBAL DEFAULT   N __pthread_mutex_trylock ++    FUNC GLOBAL DEFAULT   N __pthread_mutex_unlock ++    FUNC GLOBAL DEFAULT   N __pthread_mutexattr_destroy ++    FUNC GLOBAL DEFAULT   N __pthread_mutexattr_init ++    FUNC GLOBAL DEFAULT   N __pthread_mutexattr_settype ++    FUNC GLOBAL DEFAULT   N __pthread_once ++    FUNC GLOBAL DEFAULT   N __pthread_register_cancel ++    FUNC GLOBAL DEFAULT   N __pthread_register_cancel_defer ++    FUNC GLOBAL DEFAULT   N __pthread_rwlock_destroy ++    FUNC GLOBAL DEFAULT   N __pthread_rwlock_init ++    FUNC GLOBAL DEFAULT   N __pthread_rwlock_rdlock ++    FUNC GLOBAL DEFAULT   N __pthread_rwlock_tryrdlock ++    FUNC GLOBAL DEFAULT   N __pthread_rwlock_trywrlock ++    FUNC GLOBAL DEFAULT   N __pthread_rwlock_unlock ++    FUNC GLOBAL DEFAULT   N __pthread_rwlock_wrlock ++    FUNC GLOBAL DEFAULT   N __pthread_setspecific ++    FUNC GLOBAL DEFAULT   N __pthread_unregister_cancel ++    FUNC GLOBAL DEFAULT   N __pthread_unregister_cancel_restore ++    FUNC GLOBAL DEFAULT   N __pthread_unwind ++    FUNC GLOBAL DEFAULT   N __pthread_unwind_next ++    FUNC   WEAK DEFAULT   N __pwrite64 ++    FUNC   WEAK DEFAULT   N __read ++    FUNC GLOBAL DEFAULT UND __register_atfork ++    FUNC GLOBAL DEFAULT   N __res_state ++     TLS GLOBAL DEFAULT UND __resp ++    FUNC GLOBAL DEFAULT UND __sched_getparam ++    FUNC GLOBAL DEFAULT UND __sched_getscheduler ++    FUNC GLOBAL DEFAULT UND __sched_setscheduler ++    FUNC   WEAK DEFAULT   N __send ++    FUNC GLOBAL DEFAULT UND __setmntent +     FUNC GLOBAL DEFAULT   N __sigaction +-  OBJECT GLOBAL DEFAULT   N __sighandler +-  NOTYPE GLOBAL DEFAULT ABS _edata +-  NOTYPE GLOBAL DEFAULT ABS _end +-    FUNC GLOBAL DEFAULT   N _fini +-    FUNC GLOBAL DEFAULT   N _init ++    FUNC GLOBAL DEFAULT UND __statfs ++    FUNC GLOBAL DEFAULT UND __sysconf ++    FUNC GLOBAL DEFAULT UND __tls_get_addr ++  OBJECT GLOBAL DEFAULT UND __vdso_clock_gettime ++    FUNC GLOBAL DEFAULT   N __vfork ++    FUNC   WEAK DEFAULT   N __wait ++    FUNC   WEAK DEFAULT   N __write ++    FUNC GLOBAL DEFAULT UND _dl_allocate_tls ++    FUNC GLOBAL DEFAULT UND _dl_allocate_tls_init ++    FUNC GLOBAL DEFAULT UND _dl_deallocate_tls ++    FUNC GLOBAL DEFAULT UND _dl_get_tls_static_info ++    FUNC GLOBAL DEFAULT UND _dl_make_stack_executable ++    FUNC GLOBAL DEFAULT UND _exit +     FUNC GLOBAL DEFAULT   N _pthread_cleanup_pop +     FUNC GLOBAL DEFAULT   N _pthread_cleanup_pop_restore +     FUNC GLOBAL DEFAULT   N _pthread_cleanup_push +     FUNC GLOBAL DEFAULT   N _pthread_cleanup_push_defer +-    FUNC GLOBAL DEFAULT   N compare_and_swap_is_available +-    FUNC GLOBAL DEFAULT   N get_eflags ++  OBJECT GLOBAL DEFAULT UND _rtld_global ++    FUNC GLOBAL DEFAULT UND _setjmp ++    FUNC GLOBAL DEFAULT UND abort ++    FUNC   WEAK DEFAULT   N accept ++    FUNC GLOBAL DEFAULT UND calloc ++    FUNC   WEAK DEFAULT   N close ++    FUNC   WEAK DEFAULT   N connect ++     TLS GLOBAL DEFAULT UND errno ++    FUNC GLOBAL DEFAULT UND exit ++    FUNC GLOBAL DEFAULT UND fclose ++    FUNC   WEAK DEFAULT   N fcntl ++    FUNC   WEAK DEFAULT   N flockfile ++    FUNC GLOBAL DEFAULT UND fopen ++    FUNC GLOBAL DEFAULT   N fork ++    FUNC GLOBAL DEFAULT UND free ++    FUNC   WEAK DEFAULT   N fsync ++    FUNC   WEAK DEFAULT   N ftrylockfile ++    FUNC   WEAK DEFAULT   N funlockfile ++    FUNC GLOBAL DEFAULT UND getrlimit ++     TLS GLOBAL DEFAULT UND h_errno ++    FUNC GLOBAL DEFAULT UND link +     FUNC GLOBAL DEFAULT   N longjmp ++    FUNC   WEAK DEFAULT   N lseek ++    FUNC   WEAK DEFAULT   N lseek64 ++    FUNC GLOBAL DEFAULT UND malloc ++    FUNC GLOBAL DEFAULT UND memcpy ++    FUNC GLOBAL DEFAULT UND mempcpy ++    FUNC GLOBAL DEFAULT UND memset ++    FUNC GLOBAL DEFAULT UND mktemp ++    FUNC GLOBAL DEFAULT UND mmap ++    FUNC GLOBAL DEFAULT UND mprotect ++    FUNC   WEAK DEFAULT   N msync ++    FUNC GLOBAL DEFAULT UND munmap ++    FUNC   WEAK DEFAULT   N nanosleep ++    FUNC   WEAK DEFAULT   N open ++    FUNC   WEAK DEFAULT   N open64 ++    FUNC   WEAK DEFAULT   N pause ++    FUNC   WEAK DEFAULT   N pread ++    FUNC   WEAK DEFAULT   N pread64 ++    FUNC GLOBAL DEFAULT   N pthread_atfork +     FUNC GLOBAL DEFAULT   N pthread_attr_destroy ++    FUNC GLOBAL DEFAULT   N pthread_attr_getaffinity_np +     FUNC GLOBAL DEFAULT   N pthread_attr_getdetachstate +-    FUNC   WEAK DEFAULT   N pthread_attr_getguardsize ++    FUNC GLOBAL DEFAULT   N pthread_attr_getguardsize +     FUNC GLOBAL DEFAULT   N pthread_attr_getinheritsched +     FUNC GLOBAL DEFAULT   N pthread_attr_getschedparam +     FUNC GLOBAL DEFAULT   N pthread_attr_getschedpolicy +     FUNC GLOBAL DEFAULT   N pthread_attr_getscope +-    FUNC   WEAK DEFAULT   N pthread_attr_getstack +-    FUNC   WEAK DEFAULT   N pthread_attr_getstacksize ++    FUNC GLOBAL DEFAULT   N pthread_attr_getstack ++    FUNC GLOBAL DEFAULT   N pthread_attr_getstackaddr ++    FUNC GLOBAL DEFAULT   N pthread_attr_getstacksize +     FUNC GLOBAL DEFAULT   N pthread_attr_init ++    FUNC GLOBAL DEFAULT   N pthread_attr_setaffinity_np +     FUNC GLOBAL DEFAULT   N pthread_attr_setdetachstate +-    FUNC   WEAK DEFAULT   N pthread_attr_setguardsize ++    FUNC GLOBAL DEFAULT   N pthread_attr_setguardsize +     FUNC GLOBAL DEFAULT   N pthread_attr_setinheritsched +     FUNC GLOBAL DEFAULT   N pthread_attr_setschedparam +     FUNC GLOBAL DEFAULT   N pthread_attr_setschedpolicy +     FUNC GLOBAL DEFAULT   N pthread_attr_setscope +-    FUNC   WEAK DEFAULT   N pthread_attr_setstack +-    FUNC   WEAK DEFAULT   N pthread_attr_setstacksize ++    FUNC GLOBAL DEFAULT   N pthread_attr_setstack ++    FUNC GLOBAL DEFAULT   N pthread_attr_setstackaddr ++    FUNC GLOBAL DEFAULT   N pthread_attr_setstacksize +     FUNC GLOBAL DEFAULT   N pthread_barrier_destroy +     FUNC GLOBAL DEFAULT   N pthread_barrier_init +     FUNC GLOBAL DEFAULT   N pthread_barrier_wait +     FUNC GLOBAL DEFAULT   N pthread_barrierattr_destroy ++    FUNC GLOBAL DEFAULT   N pthread_barrierattr_getpshared +     FUNC GLOBAL DEFAULT   N pthread_barrierattr_init +     FUNC GLOBAL DEFAULT   N pthread_barrierattr_setpshared +     FUNC GLOBAL DEFAULT   N pthread_cancel +@@ -193,36 +178,49 @@ +     FUNC GLOBAL DEFAULT   N pthread_cond_timedwait +     FUNC GLOBAL DEFAULT   N pthread_cond_wait +     FUNC GLOBAL DEFAULT   N pthread_condattr_destroy ++    FUNC GLOBAL DEFAULT   N pthread_condattr_getclock +     FUNC GLOBAL DEFAULT   N pthread_condattr_getpshared +     FUNC GLOBAL DEFAULT   N pthread_condattr_init ++    FUNC GLOBAL DEFAULT   N pthread_condattr_setclock +     FUNC GLOBAL DEFAULT   N pthread_condattr_setpshared +     FUNC GLOBAL DEFAULT   N pthread_create +     FUNC GLOBAL DEFAULT   N pthread_detach +     FUNC GLOBAL DEFAULT   N pthread_equal +     FUNC GLOBAL DEFAULT   N pthread_exit ++    FUNC GLOBAL DEFAULT   N pthread_getaffinity_np +     FUNC GLOBAL DEFAULT   N pthread_getattr_np +-    FUNC   WEAK DEFAULT   N pthread_getconcurrency ++    FUNC GLOBAL DEFAULT   N pthread_getconcurrency ++    FUNC GLOBAL DEFAULT   N pthread_getcpuclockid +     FUNC GLOBAL DEFAULT   N pthread_getschedparam +     FUNC GLOBAL DEFAULT   N pthread_getspecific +     FUNC GLOBAL DEFAULT   N pthread_join +     FUNC GLOBAL DEFAULT   N pthread_key_create +     FUNC GLOBAL DEFAULT   N pthread_key_delete +     FUNC GLOBAL DEFAULT   N pthread_kill +-    FUNC   WEAK DEFAULT   N pthread_kill_other_threads_np ++    FUNC GLOBAL DEFAULT   N pthread_kill_other_threads_np ++    FUNC GLOBAL DEFAULT   N pthread_mutex_consistent_np +     FUNC GLOBAL DEFAULT   N pthread_mutex_destroy ++    FUNC GLOBAL DEFAULT   N pthread_mutex_getprioceiling +     FUNC GLOBAL DEFAULT   N pthread_mutex_init +     FUNC GLOBAL DEFAULT   N pthread_mutex_lock ++    FUNC GLOBAL DEFAULT   N pthread_mutex_setprioceiling +     FUNC GLOBAL DEFAULT   N pthread_mutex_timedlock +     FUNC GLOBAL DEFAULT   N pthread_mutex_trylock +     FUNC GLOBAL DEFAULT   N pthread_mutex_unlock +     FUNC GLOBAL DEFAULT   N pthread_mutexattr_destroy +     FUNC   WEAK DEFAULT   N pthread_mutexattr_getkind_np +-    FUNC   WEAK DEFAULT   N pthread_mutexattr_getpshared +-    FUNC   WEAK DEFAULT   N pthread_mutexattr_gettype ++    FUNC GLOBAL DEFAULT   N pthread_mutexattr_getprioceiling ++    FUNC GLOBAL DEFAULT   N pthread_mutexattr_getprotocol ++    FUNC GLOBAL DEFAULT   N pthread_mutexattr_getpshared ++    FUNC GLOBAL DEFAULT   N pthread_mutexattr_getrobust_np ++    FUNC GLOBAL DEFAULT   N pthread_mutexattr_gettype +     FUNC GLOBAL DEFAULT   N pthread_mutexattr_init +     FUNC   WEAK DEFAULT   N pthread_mutexattr_setkind_np +-    FUNC   WEAK DEFAULT   N pthread_mutexattr_setpshared +-    FUNC   WEAK DEFAULT   N pthread_mutexattr_settype ++    FUNC GLOBAL DEFAULT   N pthread_mutexattr_setprioceiling ++    FUNC GLOBAL DEFAULT   N pthread_mutexattr_setprotocol ++    FUNC GLOBAL DEFAULT   N pthread_mutexattr_setpshared ++    FUNC GLOBAL DEFAULT   N pthread_mutexattr_setrobust_np ++    FUNC GLOBAL DEFAULT   N pthread_mutexattr_settype +     FUNC GLOBAL DEFAULT   N pthread_once +     FUNC GLOBAL DEFAULT   N pthread_rwlock_destroy +     FUNC GLOBAL DEFAULT   N pthread_rwlock_init +@@ -240,27 +238,35 @@ +     FUNC GLOBAL DEFAULT   N pthread_rwlockattr_setkind_np +     FUNC GLOBAL DEFAULT   N pthread_rwlockattr_setpshared +     FUNC GLOBAL DEFAULT   N pthread_self ++    FUNC GLOBAL DEFAULT   N pthread_setaffinity_np +     FUNC GLOBAL DEFAULT   N pthread_setcancelstate +     FUNC GLOBAL DEFAULT   N pthread_setcanceltype +-    FUNC   WEAK DEFAULT   N pthread_setconcurrency +-    FUNC GLOBAL DEFAULT   N pthread_setegid_np +-    FUNC GLOBAL DEFAULT   N pthread_seteuid_np +-    FUNC GLOBAL DEFAULT   N pthread_setgid_np +-    FUNC GLOBAL DEFAULT   N pthread_setregid_np +-    FUNC GLOBAL DEFAULT   N pthread_setresgid_np +-    FUNC GLOBAL DEFAULT   N pthread_setresuid_np +-    FUNC GLOBAL DEFAULT   N pthread_setreuid_np ++    FUNC GLOBAL DEFAULT   N pthread_setconcurrency +     FUNC GLOBAL DEFAULT   N pthread_setschedparam ++    FUNC GLOBAL DEFAULT   N pthread_setschedprio +     FUNC GLOBAL DEFAULT   N pthread_setspecific +-    FUNC GLOBAL DEFAULT   N pthread_setuid_np +     FUNC GLOBAL DEFAULT   N pthread_sigmask +-    FUNC   WEAK DEFAULT   N pthread_spin_destroy +-    FUNC   WEAK DEFAULT   N pthread_spin_init +-    FUNC   WEAK DEFAULT   N pthread_spin_lock +-    FUNC   WEAK DEFAULT   N pthread_spin_trylock +-    FUNC   WEAK DEFAULT   N pthread_spin_unlock ++    FUNC GLOBAL DEFAULT   N pthread_spin_destroy ++    FUNC GLOBAL DEFAULT   N pthread_spin_init ++    FUNC GLOBAL DEFAULT   N pthread_spin_lock ++    FUNC GLOBAL DEFAULT   N pthread_spin_trylock ++    FUNC GLOBAL DEFAULT   N pthread_spin_unlock +     FUNC GLOBAL DEFAULT   N pthread_testcancel ++    FUNC GLOBAL DEFAULT   N pthread_timedjoin_np ++    FUNC GLOBAL DEFAULT   N pthread_tryjoin_np ++    FUNC GLOBAL DEFAULT   N pthread_yield ++    FUNC   WEAK DEFAULT   N pwrite ++    FUNC   WEAK DEFAULT   N pwrite64 +     FUNC GLOBAL DEFAULT   N raise ++    FUNC   WEAK DEFAULT   N read ++    FUNC GLOBAL DEFAULT UND realloc ++    FUNC   WEAK DEFAULT   N recv ++    FUNC   WEAK DEFAULT   N recvfrom ++    FUNC   WEAK DEFAULT   N recvmsg ++    FUNC GLOBAL DEFAULT UND sched_get_priority_max ++    FUNC GLOBAL DEFAULT UND sched_get_priority_min ++    FUNC GLOBAL DEFAULT UND sched_setparam ++    FUNC GLOBAL DEFAULT UND sched_yield +     FUNC GLOBAL DEFAULT   N sem_close +     FUNC GLOBAL DEFAULT   N sem_destroy +     FUNC GLOBAL DEFAULT   N sem_getvalue +@@ -271,8 +277,23 @@ +     FUNC GLOBAL DEFAULT   N sem_trywait +     FUNC GLOBAL DEFAULT   N sem_unlink +     FUNC GLOBAL DEFAULT   N sem_wait +-    FUNC GLOBAL DEFAULT   N set_eflags +-    FUNC GLOBAL DEFAULT   N sigaction +-    FUNC GLOBAL DEFAULT   N siglongjmp +-    FUNC GLOBAL DEFAULT   N sigwait +-    FUNC GLOBAL DEFAULT   N testandset ++    FUNC   WEAK DEFAULT   N send ++    FUNC   WEAK DEFAULT   N sendmsg ++    FUNC   WEAK DEFAULT   N sendto ++    FUNC   WEAK DEFAULT   N sigaction ++    FUNC   WEAK DEFAULT   N siglongjmp ++    FUNC   WEAK DEFAULT   N sigwait ++    FUNC GLOBAL DEFAULT UND sscanf ++    FUNC GLOBAL DEFAULT UND strcmp ++    FUNC GLOBAL DEFAULT UND strlen ++    FUNC GLOBAL DEFAULT   N system ++    FUNC   WEAK DEFAULT   N tcdrain ++    FUNC GLOBAL DEFAULT UND tdelete ++    FUNC GLOBAL DEFAULT UND tfind ++    FUNC GLOBAL DEFAULT UND tsearch ++    FUNC GLOBAL DEFAULT UND twalk ++    FUNC GLOBAL DEFAULT UND unlink ++    FUNC   WEAK DEFAULT   N vfork ++    FUNC   WEAK DEFAULT   N wait ++    FUNC   WEAK DEFAULT   N waitpid ++    FUNC   WEAK DEFAULT   N write + + +And uclibc_unrefd.lst is: + +__compare_and_swap +__flockfilelist +__fresetlockfiles +__funlockfilelist +__linuxthreads_create_event +__linuxthreads_death_event +__linuxthreads_initial_report_events +__linuxthreads_pthread_key_2ndlevel_size +__linuxthreads_pthread_keys_max +__linuxthreads_pthread_sizeof_descr +__linuxthreads_pthread_threads_max +__linuxthreads_reap_event +__linuxthreads_version +__pthread_alt_lock +__pthread_alt_timedlock +__pthread_alt_unlock +__pthread_attr_destroy +__pthread_attr_getdetachstate +__pthread_attr_getguardsize +__pthread_attr_getinheritsched +__pthread_attr_getschedparam +__pthread_attr_getschedpolicy +__pthread_attr_getscope +__pthread_attr_getstack +__pthread_attr_getstacksize +__pthread_attr_init +__pthread_attr_setdetachstate +__pthread_attr_setguardsize +__pthread_attr_setinheritsched +__pthread_attr_setschedparam +__pthread_attr_setschedpolicy +__pthread_attr_setscope +__pthread_attr_setstack +__pthread_attr_setstacksize +__pthread_barrierattr_getpshared +__pthread_compare_and_swap +__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_destroy_specifics +__pthread_do_exit +__pthread_equal +__pthread_exit_code +__pthread_exit_requested +__pthread_find_self +__pthread_functions +__pthread_getconcurrency +__pthread_getschedparam +__pthread_getspecific +__pthread_handles +__pthread_handles_num +__pthread_has_cas +__pthread_init_max_stacksize +__pthread_initial_thread +__pthread_initial_thread_bos +__pthread_initialize_manager +__pthread_internal_tsd_address +__pthread_internal_tsd_get +__pthread_internal_tsd_set +__pthread_key_create +__pthread_kill_other_threads_np +__pthread_last_event +__pthread_lock +__pthread_main_thread +__pthread_manager +__pthread_manager_adjust_prio +__pthread_manager_event +__pthread_manager_reader +__pthread_manager_request +__pthread_manager_sighandler +__pthread_manager_thread +__pthread_manager_thread_bos +__pthread_manager_thread_tos +__pthread_max_stacksize +__pthread_mutex_destroy +__pthread_mutex_timedlock +__pthread_mutexattr_destroy +__pthread_mutexattr_getkind_np +__pthread_mutexattr_getpshared +__pthread_mutexattr_gettype +__pthread_mutexattr_init +__pthread_mutexattr_setkind_np +__pthread_mutexattr_setpshared +__pthread_mutexattr_settype +__pthread_nonstandard_stacks +__pthread_null_sighandler +__pthread_offsetof_descr +__pthread_offsetof_pid +__pthread_once_fork_child +__pthread_once_fork_parent +__pthread_once_fork_prepare +__pthread_perform_cleanup +__pthread_raise +__pthread_reset_main_thread +__pthread_restart_new +__pthread_rwlock_destroy +__pthread_rwlock_init +__pthread_rwlock_rdlock +__pthread_rwlock_timedrdlock +__pthread_rwlock_timedwrlock +__pthread_rwlock_tryrdlock +__pthread_rwlock_trywrlock +__pthread_rwlock_unlock +__pthread_rwlock_wrlock +__pthread_rwlockattr_destroy +__pthread_self +__pthread_setcancelstate +__pthread_setcanceltype +__pthread_setconcurrency +__pthread_setschedparam +__pthread_setspecific +__pthread_sig_cancel +__pthread_sig_debug +__pthread_sig_restart +__pthread_sigaction +__pthread_sighandler +__pthread_sighandler_rt +__pthread_sigwait +__pthread_sizeof_handle +__pthread_smp_kernel +__pthread_spin_destroy +__pthread_spin_init +__pthread_spin_lock +__pthread_spin_trylock +__pthread_spin_unlock +__pthread_thread_self +__pthread_threads_debug +__pthread_threads_events +__pthread_threads_max +__pthread_timedsuspend_new +__pthread_unlock +__pthread_wait_for_restart_signal +__register_atfork +__sigaction +__sighandler +compare_and_swap_is_available +get_eflags +pthread_attr_getguardsize +pthread_attr_getstack +pthread_attr_getstacksize +pthread_attr_setguardsize +pthread_attr_setstack +pthread_attr_setstacksize +pthread_barrier_destroy +pthread_barrier_init +pthread_barrier_wait +pthread_barrierattr_destroy +pthread_barrierattr_init +pthread_barrierattr_setpshared +pthread_cancel +pthread_condattr_getpshared +pthread_condattr_setpshared +pthread_create +pthread_detach +pthread_getattr_np +pthread_getconcurrency +pthread_getspecific +pthread_join +pthread_key_create +pthread_key_delete +pthread_kill +pthread_kill_other_threads_np +pthread_mutex_timedlock +pthread_mutexattr_destroy +pthread_mutexattr_getkind_np +pthread_mutexattr_getpshared +pthread_mutexattr_gettype +pthread_mutexattr_init +pthread_mutexattr_setkind_np +pthread_mutexattr_setpshared +pthread_mutexattr_settype +pthread_rwlock_destroy +pthread_rwlock_init +pthread_rwlock_rdlock +pthread_rwlock_timedrdlock +pthread_rwlock_timedwrlock +pthread_rwlock_tryrdlock +pthread_rwlock_trywrlock +pthread_rwlock_unlock +pthread_rwlock_wrlock +pthread_rwlockattr_destroy +pthread_rwlockattr_getkind_np +pthread_rwlockattr_getpshared +pthread_rwlockattr_init +pthread_rwlockattr_setkind_np +pthread_rwlockattr_setpshared +pthread_setconcurrency +pthread_setegid_np +pthread_seteuid_np +pthread_setgid_np +pthread_setregid_np +pthread_setresgid_np +pthread_setresuid_np +pthread_setreuid_np +pthread_setspecific +pthread_setuid_np +pthread_sigmask +pthread_spin_destroy +pthread_spin_init +pthread_spin_lock +pthread_spin_trylock +pthread_spin_unlock +pthread_testcancel +sem_close +sem_destroy +sem_getvalue +sem_init +sem_open +sem_post +sem_timedwait +sem_trywait +sem_unlink +sem_wait +set_eflags +testandset  | 
