summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/pthreads_hacking.txt748
-rw-r--r--docs/threads.txt56
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...
-
- --------------------------------------------------------------------