platform_bionic/libc/bionic
Elliott Hughes 5419b94747 Make dlerror(3) thread-safe.
I gave up trying to use the usual thread-local buffer idiom; calls to
calloc(3) and free(3) from any of the "dl" functions -- which live in
the dynamic linker -- end up resolving to the dynamic linker's stubs.
I tried to work around that, but was just making things more complicated.
This alternative costs us a well-known TLS slot (instead of the
dynamically-allocated TLS slot we'd have used otherwise, so no difference
there), plus an extra buffer inside every pthread_internal_t.

Bug: 5404023
Change-Id: Ie9614edd05b6d1eeaf7bf9172792d616c6361767
2012-10-16 17:58:17 -07:00
..
__errno.c auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
__fgets_chk.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
__memcpy_chk.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
__memmove_chk.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
__memset_chk.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
__set_errno.c __set_errno: Hide internal symbol __set_syscall_errno 2010-10-15 03:07:22 +08:00
__snprintf_chk.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
__sprintf_chk.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
__strcat_chk.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
__strcpy_chk.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
__strlcat_chk.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
__strlcpy_chk.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
__strlen_chk.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
__strncat_chk.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
__strncpy_chk.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
__umask_chk.c FORTIFY_SOURCE: add umask check 2012-09-26 10:19:31 -07:00
__vsnprintf_chk.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
__vsprintf_chk.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
arc4random.c auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
atoi.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
atol.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
atoll.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
basename.c auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
basename_r.c auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
bindresvport.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
bionic_clone.c enable clone system call for x86 2012-08-15 17:04:50 -07:00
brk.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
clearenv.c Change-Id: I68cc462aeb2460345a53bdb9941ce4bfc10456fb 2010-06-27 20:53:04 -07:00
cpuacct.c Prevent deadlock when using fork 2011-12-06 08:39:18 -08:00
crtbrand.c Add a .note.android.ident section to Android ELF binaries. 2012-07-31 16:18:22 +12:00
daemon.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
dirname.c auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
dirname_r.c auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
dl_iterate_phdr_static.c Add link.h for all platforms with dl_phdr_info 2012-08-17 12:44:23 -07:00
dlmalloc.c Upgrade to dlmalloc 2.8.5. 2012-08-20 14:12:20 -07:00
dlmalloc.h Avoid malloc lock while calling pthread_atfork. 2012-08-31 11:11:40 -07:00
err.c Add fts, err, and sys/queue for grep 2010-01-15 15:57:02 -08:00
ether_aton.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
ether_ntoa.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
eventfd.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
fcntl.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
fdprintf.c Add implementation of fdprintf, clearenv, and stubs for ttyname_r, *usershell 2010-01-15 16:52:35 -08:00
flockfile.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
fork.c Handle pthread-related changes (mutex/atfork) 2012-03-26 15:38:59 -07:00
fstatfs.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
ftime.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
ftok.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
fts.c Remove compiler warnings when building Bionic. 2010-06-22 17:51:41 -07:00
getcwd.cpp Fix a getcwd(3) bug and make our tests run correctly under valgrind. 2012-10-09 17:17:24 -07:00
getdtablesize.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
gethostname.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
getpgrp.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
getpriority.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
getpt.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
hash.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
if_indextoname.c auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
if_nametoindex.c auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
initgroups.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
ioctl.c auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
isatty.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
issetugid.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
ldexp.c auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
libc_init_common.c Don't corrupt the thread list in static executables. 2012-09-05 17:47:37 -07:00
libc_init_common.h libc: remove ctors/dtors sections 2012-08-22 20:45:26 +02:00
libc_init_dynamic.c bionic: import heaptracker as chk_malloc 2012-06-01 15:54:34 -07:00
libc_init_static.c Don't corrupt the thread list in static executables. 2012-09-05 17:47:37 -07:00
locale.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
logd_write.c Adding event logging to libc. 2012-06-08 12:14:48 -07:00
lseek64.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
malloc_debug_check.cpp Fix realloc(3) when chk_malloc debugging is on. 2012-10-12 17:05:05 -07:00
malloc_debug_check_mapinfo.cpp Clean up warnings in the malloc_debug_* files. 2012-08-29 12:08:13 -07:00
malloc_debug_check_mapinfo.h Clean up warnings in the malloc_debug_* files. 2012-08-29 12:08:13 -07:00
malloc_debug_common.cpp Fix dlerror(3). 2012-10-11 16:08:51 -07:00
malloc_debug_common.h Fix dlerror(3). 2012-10-11 16:08:51 -07:00
malloc_debug_leak.cpp Fix dlerror(3). 2012-10-11 16:08:51 -07:00
malloc_debug_qemu.cpp Clean up warnings in the malloc_debug_* files. 2012-08-29 12:08:13 -07:00
malloc_debug_stacktrace.cpp Clean up warnings in the malloc_debug_* files. 2012-08-29 12:08:13 -07:00
md5.c am 08a4ce98: am 0c398985: Merge "[ENDIAN] Build md5 code correctly for bigendian targets" 2011-03-14 11:50:56 -07:00
md5.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
memccpy.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
memchr.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
memcmp.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
memcpy.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
memmem.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
memmove.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
memmove_words.c Add some missing includes. 2011-03-21 20:01:03 -07:00
memrchr.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
memset.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
memswap.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
mmap.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
open.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
openat.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
opendir.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
pathconf.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
perror.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
pread.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
pselect.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
pthread-atfork.c Handle pthread-related changes (mutex/atfork) 2012-03-26 15:38:59 -07:00
pthread-rwlocks.c Add pthread_rwlock_t implementation to the C library (DO NOT MERGE) 2010-05-19 14:53:18 -07:00
pthread-timers.c Give the timer_create SIGEV_THREAD helper threads sensible names. 2012-06-06 10:32:56 -07:00
pthread.c Make dlerror(3) thread-safe. 2012-10-16 17:58:17 -07:00
pthread_debug.c implement pthread mutex deadlock detection 2011-12-09 14:38:57 -08:00
pthread_internal.h Make dlerror(3) thread-safe. 2012-10-16 17:58:17 -07:00
ptrace.c bionic, libthread_db x86 fixes 2011-07-07 22:46:16 +02:00
ptsname.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
ptsname_r.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
pututline.c bionic: ftell() returns a long, not an int 2010-02-05 16:05:52 -02:00
pwrite.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
raise.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
realpath.c New additions/bug fixes required/found when porting perf. 2012-03-20 12:54:55 -07:00
reboot.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
recv.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
sbrk.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
sched_cpualloc.c <sched.h>: Add sched_getcpu() and cpu_set_t 2010-12-06 13:42:54 +01:00
sched_cpucount.c <sched.h>: Add sched_getcpu() and cpu_set_t 2010-12-06 13:42:54 +01:00
sched_getaffinity.c <sched.h>: Add sched_getcpu() and cpu_set_t 2010-12-06 13:42:54 +01:00
sched_getcpu.c <sched.h>: Add sched_getcpu() and cpu_set_t 2010-12-06 13:42:54 +01:00
semaphore.c bionic: Do not use <sys/atomics.h> for platform code. 2011-11-16 16:28:10 +01:00
send.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
setegid.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
seteuid.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
setpgrp.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
setresuid.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
setreuid.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
setuid.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
sha1.c auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
sigblock.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
siginterrupt.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
siglist.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
signal.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
signame.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
sigsetmask.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
sigsuspend.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
sigwait.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
sleep.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
socketcalls.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
ssp.c bionic: equalize the <unknown> program name between ssp.c and libc_init_common.c 2010-02-05 17:48:07 -02:00
statfs.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
strcoll.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
strerror.cpp Make dlerror(3) thread-safe. 2012-10-16 17:58:17 -07:00
strerror_r.cpp Use hidden visibility for several internal-use-only functions. 2012-09-21 18:27:40 -07:00
strndup.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
strnlen.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
strntoimax.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
strntoumax.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
strsignal.cpp Make dlerror(3) thread-safe. 2012-10-16 17:58:17 -07:00
strtotimeval.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
stubs.cpp Print out shared app gids correctly 2012-09-13 15:25:09 -07:00
sysconf.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
system_properties.c Correction to use of TEMP_FAILURE_RETRY in send_prop_msg 2012-07-27 15:18:23 +02:00
tcgetpgrp.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
tcsetpgrp.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
tdestroy.c Switch to upstream NetBSD tdelete/tfind/tsearch. 2012-08-13 17:41:49 -07:00
thread_atexit.c auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
time64.c time64: make helper functions static 2010-10-15 02:16:16 +08:00
time64_config.h <time.h>: Add timegm(), timelocal() and others. 2010-12-06 12:25:52 +01:00
tmpfile.cpp Fix several compiler warnings. 2012-09-26 14:20:22 -07:00
umount.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
unlockpt.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
usleep.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
utime.c auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
utmp.c auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
wait.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
wchar.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
wcscoll.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00