svn commit: [25671] branches/uClibc-nptl: docs extra/Configs libc/sysdeps/linux/c etc...
kraj at uclibc.org
kraj at uclibc.org
Mon Mar 16 06:52:01 UTC 2009
Author: kraj
Date: 2009-03-16 06:52:00 +0000 (Mon, 16 Mar 2009)
New Revision: 25671
Log:
Merged revisions 25638,25640,25642,25649-25650,25667-25668 via svnmerge from
svn+ssh://svn.uclibc.org/svn/trunk/uClibc
........
r25638 | vda | 2009-03-12 13:56:59 -0700 (Thu, 12 Mar 2009) | 10 lines
linuxthreads fixes from Will Newton (will.newton AT gmail.com):
* share Sys V semaphores in order to get appropriate SEM_UNDO semantics.
* correct guardaddr in pthread_free() for TLS case
* move spinlock unlocking before restart()
* When exit was called from a signal handler, the restart
from the manager processing the exit request instead restarted the thread
in pthread_cond_timedwait.
(see http://sources.redhat.com/ml/libc-ports/2006-05/msg00000.html)
........
r25640 | vda | 2009-03-12 16:04:19 -0700 (Thu, 12 Mar 2009) | 3 lines
add linuxthreads support for arm. By Will Newton (will.newton AT gmail.com)
........
r25642 | vapier | 2009-03-12 23:17:48 -0700 (Thu, 12 Mar 2009) | 1 line
add GNU extension for select timeouts where the sub-second field is actually longer than one second
........
r25649 | vapier | 2009-03-14 04:23:28 -0700 (Sat, 14 Mar 2009) | 1 line
force DOPIC for FDPIC ELF targets
........
r25650 | vapier | 2009-03-14 04:30:56 -0700 (Sat, 14 Mar 2009) | 1 line
default linux-2.4 module support to off for Blackfin targets
........
r25667 | vda | 2009-03-15 19:56:27 -0700 (Sun, 15 Mar 2009) | 3 lines
docs/pthreads_hacking.txt: new file
........
r25668 | kraj | 2009-03-15 23:02:47 -0700 (Sun, 15 Mar 2009) | 2 lines
Update copyright header.
........
Added:
branches/uClibc-nptl/docs/pthreads_hacking.txt
Modified:
branches/uClibc-nptl/
branches/uClibc-nptl/extra/Configs/Config.in
branches/uClibc-nptl/extra/Configs/Config.in.arch
branches/uClibc-nptl/libc/sysdeps/linux/common/creat.c
branches/uClibc-nptl/libc/sysdeps/linux/common/select.c
Changeset:
Property changes on: branches/uClibc-nptl
___________________________________________________________________
Modified: svnmerge-integrated
- /trunk/uClibc:1-25623
+ /trunk/uClibc:1-25668
Copied: branches/uClibc-nptl/docs/pthreads_hacking.txt (from rev 25668, trunk/uClibc/docs/pthreads_hacking.txt)
===================================================================
--- branches/uClibc-nptl/docs/pthreads_hacking.txt (rev 0)
+++ branches/uClibc-nptl/docs/pthreads_hacking.txt 2009-03-16 06:52:00 UTC (rev 25671)
@@ -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
Modified: branches/uClibc-nptl/extra/Configs/Config.in
===================================================================
--- branches/uClibc-nptl/extra/Configs/Config.in 2009-03-16 06:16:15 UTC (rev 25670)
+++ branches/uClibc-nptl/extra/Configs/Config.in 2009-03-16 06:52:00 UTC (rev 25671)
@@ -790,12 +790,13 @@
config UCLIBC_LINUX_MODULE_24
bool "Linux kernel module functions"
- default y
+ default !(TARGET_bfin)
help
create_module, query_module
are used in linux (prior to 2.6) for loadable kernel modules.
- Say N if you do not use kernel modules.
+ Say N if you do not use kernel modules, or you only support
+ Linux 2.6+.
config UCLIBC_LINUX_SPECIFIC
bool "Linux specific functions"
Modified: branches/uClibc-nptl/extra/Configs/Config.in.arch
===================================================================
--- branches/uClibc-nptl/extra/Configs/Config.in.arch 2009-03-16 06:16:15 UTC (rev 25670)
+++ branches/uClibc-nptl/extra/Configs/Config.in.arch 2009-03-16 06:52:00 UTC (rev 25671)
@@ -16,6 +16,7 @@
config UCLIBC_FORMAT_FDPIC_ELF
bool "FDPIC ELF"
depends on !ARCH_USE_MMU
+ select DOPIC
config UCLIBC_FORMAT_FLAT
bool "STATIC FLAT"
depends on !ARCH_USE_MMU
Modified: branches/uClibc-nptl/libc/sysdeps/linux/common/creat.c
===================================================================
--- branches/uClibc-nptl/libc/sysdeps/linux/common/creat.c 2009-03-16 06:16:15 UTC (rev 25670)
+++ branches/uClibc-nptl/libc/sysdeps/linux/common/creat.c 2009-03-16 06:52:00 UTC (rev 25671)
@@ -2,7 +2,7 @@
/*
* creat() for uClibc
*
- * Copyright (C) 2009 <kraj at uclibc.org>
+ * Copyright (C) 2000-2006 Erik Andersen <andersen at uclibc.org>
*
* Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
*/
Modified: branches/uClibc-nptl/libc/sysdeps/linux/common/select.c
===================================================================
--- branches/uClibc-nptl/libc/sysdeps/linux/common/select.c 2009-03-16 06:16:15 UTC (rev 25670)
+++ branches/uClibc-nptl/libc/sysdeps/linux/common/select.c 2009-03-16 06:52:00 UTC (rev 25671)
@@ -9,6 +9,7 @@
#include <sys/syscall.h>
#include <sys/select.h>
+#include <stdint.h>
#ifdef __UCLIBC_HAS_THREADS_NATIVE__
#include <sysdep-cancel.h>
@@ -16,20 +17,65 @@
#define SINGLE_THREAD_P 1
#endif
+#define USEC_PER_SEC 1000000L
-libc_hidden_proto(select)
+extern __typeof(select) __libc_select;
+#if !defined(__NR__newselect) && !defined(__NR_select) && defined __USE_XOPEN2K
+# define __NR___libc_pselect6 __NR_pselect6
+_syscall6(int, __libc_pselect6, int, n, fd_set *, readfds, fd_set *, writefds,
+ fd_set *, exceptfds, const struct timespec *, timeout,
+ const sigset_t *, sigmask)
+
+int __libc_select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
+ struct timeval *timeout)
+{
+ struct timespec _ts, *ts = 0;
+ if (timeout) {
+ uint32_t usec;
+ _ts.tv_sec = timeout->tv_sec;
+
+ /* GNU extension: allow for timespec values where the sub-sec
+ * field is equal to or more than 1 second. The kernel will
+ * reject this on us, so take care of the time shift ourself.
+ * Some applications (like readline and linphone) do this.
+ * See 'clarification on select() type calls and invalid timeouts'
+ * on the POSIX general list for more information.
+ */
+ usec = timeout->tv_usec;
+ if (usec >= USEC_PER_SEC) {
+ _ts.tv_sec += usec / USEC_PER_SEC;
+ usec %= USEC_PER_SEC;
+ }
+ _ts.tv_nsec = usec * 1000;
+
+ ts = &_ts;
+ }
+
+ if (SINGLE_THREAD_P)
+ return __libc_pselect6(n, readfds, writefds, exceptfds, ts, 0);
+#ifdef __UCLIBC_HAS_THREADS_NATIVE__
+ int oldtype = LIBC_CANCEL_ASYNC ();
+ int result = __libc_pselect6(n, readfds, writefds, exceptfds, ts, 0);
+ LIBC_CANCEL_RESET (oldtype);
+ return result;
+#endif
+
+}
+
+#else
+
#ifdef __NR__newselect
-# undef __NR_select
-# define __NR_select __NR__newselect
+# define __NR___syscall_select __NR__newselect
+#else
+# define __NR___syscall_select __NR_select
#endif
-#define __NR___syscall_select __NR_select
-static inline _syscall5(int, __syscall_select, int, n, fd_set *, readfds,
+_syscall5(int, __syscall_select, int, n, fd_set *, readfds,
fd_set *, writefds, fd_set *, exceptfds, struct timeval *, timeout);
-int select(int n, fd_set * readfds, fd_set * writefds, fd_set * exceptfds,
- struct timeval * timeout)
+int __libc_select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
+ struct timeval *timeout)
{
if (SINGLE_THREAD_P)
return __syscall_select(n, readfds, writefds, exceptfds, timeout);
@@ -42,4 +88,7 @@
#endif
}
-libc_hidden_def(select)
+#endif
+
+weak_alias(__libc_select,select)
+libc_hidden_weak(select)
More information about the uClibc-cvs
mailing list