diff options
Diffstat (limited to 'docs')
-rw-r--r-- | docs/pthreads_hacking.txt | 748 | ||||
-rw-r--r-- | docs/threads.txt | 56 |
2 files changed, 0 insertions, 804 deletions
diff --git a/docs/pthreads_hacking.txt b/docs/pthreads_hacking.txt deleted file mode 100644 index 6c23257d4..000000000 --- a/docs/pthreads_hacking.txt +++ /dev/null @@ -1,748 +0,0 @@ -# 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 diff --git a/docs/threads.txt b/docs/threads.txt deleted file mode 100644 index 182f1be7e..000000000 --- a/docs/threads.txt +++ /dev/null @@ -1,56 +0,0 @@ -uClibc thread-safety analysis - -Things that are still known to be needed for thread safety: - - none - - - - -Things that might be nice, but are not required: - - getnetent_r <desired, but not required for SuSv3> - gethostent_r <desired, but not required for SuSv3> - getprotoent_r <desired, but not required for SuSv3> - getnetbyname_r <desired, but not required for SuSv3> - getnetbyaddr_r <desired, but not required for SuSv3> - - - - - -Functions that use static data and may still need locking: - - - -------------------------------------------------------------------- - - libc/inet/rpc/rpc_thread.c: - - __rpc_thread_variables is currently disabled, since thread - local storage seems to not be correctly specified as - weak functions. - - -------------------------------------------------------------------- - - unistd/getpass.c: - - static char buf[PWD_BUFFER_SIZE]; - - getpass <fix required> <--- - - NOTE: This function returns a pointer to a static data structure. - This seems like it requires an _r version of this function. Glibc - does the same thing. Oops! So much for thread-safe glibc! - - -------------------------------------------------------------------- - - unistd/sysconf.c: - - static long int ret_vals[_UCLIBC_SYSCONF_NUM_VALID_ARGS]; - - find_or_add_in_table <fix required?> <--- - main <fix required?> <--- - - NOTE: I'm not sure if this needs to be made reentrant... - - -------------------------------------------------------------------- |