summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2009-03-16 02:56:27 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2009-03-16 02:56:27 +0000
commit527bcddcd081d902d4ec851af13c6bab35e20e4d (patch)
tree8b14a037f4c54b47b1c18c42f97ad07087b8c732
parent8f5908bf992da8694bd32705404627ee107046a6 (diff)
docs/pthreads_hacking.txt: new file
-rw-r--r--docs/pthreads_hacking.txt748
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