bionic/libc/bionic
Nick Kralevich ac3de8d080 Support GNU_RELRO for static executables.
In 9ec0f03a0d, we added dynamic
linker support for GNU_RELRO protections. These protections
make certain regions of memory read-only, helping protect certain
data structures from accidental or deliberate modifications.

This change adds GNU_RELRO support to STATIC executables.  We can
determine if we're compiled with relro protections by examining
our own program headers, which is passed to us by the kernel
in the AT_PHDR and AT_PHNUM auxiliary vectors.

Parts of this code were stolen from the dynamic linker.

Change-Id: Ic17eb5f932218538ec25347ece314d4dc7549de1
2012-11-15 12:52:06 -08:00
..
__errno.c auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
__fgets_chk.cpp Move the FORTIFY_SOURCE helpers over to .cpp. 2012-10-22 15:32:01 -07:00
__memcpy_chk.cpp Move the FORTIFY_SOURCE helpers over to .cpp. 2012-10-22 15:32:01 -07:00
__memmove_chk.cpp Move the FORTIFY_SOURCE helpers over to .cpp. 2012-10-22 15:32:01 -07:00
__memset_chk.cpp Move the FORTIFY_SOURCE helpers over to .cpp. 2012-10-22 15:32:01 -07:00
__set_errno.c __set_errno: Hide internal symbol __set_syscall_errno 2010-10-15 03:07:22 +08:00
__strcat_chk.cpp Move the FORTIFY_SOURCE helpers over to .cpp. 2012-10-22 15:32:01 -07:00
__strcpy_chk.cpp Move the FORTIFY_SOURCE helpers over to .cpp. 2012-10-22 15:32:01 -07:00
__strlcat_chk.cpp Move the FORTIFY_SOURCE helpers over to .cpp. 2012-10-22 15:32:01 -07:00
__strlcpy_chk.cpp Move the FORTIFY_SOURCE helpers over to .cpp. 2012-10-22 15:32:01 -07:00
__strlen_chk.cpp Move the FORTIFY_SOURCE helpers over to .cpp. 2012-10-22 15:32:01 -07:00
__strncat_chk.cpp Move the FORTIFY_SOURCE helpers over to .cpp. 2012-10-22 15:32:01 -07:00
__strncpy_chk.cpp Move the FORTIFY_SOURCE helpers over to .cpp. 2012-10-22 15:32:01 -07:00
__umask_chk.cpp Move the FORTIFY_SOURCE helpers over to .cpp. 2012-10-22 15:32:01 -07:00
__vsnprintf_chk.cpp Move the FORTIFY_SOURCE helpers over to .cpp. 2012-10-22 15:32:01 -07:00
__vsprintf_chk.cpp Move the FORTIFY_SOURCE helpers over to .cpp. 2012-10-22 15:32:01 -07:00
arc4random.c auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
assert.cpp More upstream NetBSD upgrades. 2012-10-23 16:05:09 -07: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
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
dirent.cpp libc: Fix alphasort() signature (and implementation). 2012-10-29 07:44:27 -07: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.cpp More upstream NetBSD upgrades. 2012-10-23 16:05:09 -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 if the main thread exits. 2012-11-01 17:27:07 -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 Support GNU_RELRO for static executables. 2012-11-15 12:52:06 -08:00
libgen.cpp Clean up the <libgen.h> implementation a little, bring in tests. 2012-10-29 14:27:10 -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_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_check.cpp Fix realloc(3) when chk_malloc debugging is on. 2012-10-12 17:05:05 -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_words.c Add some missing includes. 2011-03-21 20:01:03 -07:00
memmove.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -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
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_debug.c implement pthread mutex deadlock detection 2011-12-09 14:38:57 -08:00
pthread_internal.h Don't corrupt the thread list if the main thread exits. 2012-11-01 17:27:07 -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 Don't corrupt the thread list if the main thread exits. 2012-11-01 17:27:07 -07:00
ptrace.c bionic, libthread_db x86 fixes 2011-07-07 22:46:16 +02:00
ptsname_r.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00
ptsname.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
setlocale.cpp Move setlocale(3) and the wchar stubs over to .cpp. 2012-10-22 17:05:27 -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
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.cpp Per-thread -fstack-protector guards for x86. 2012-10-25 12:04:03 -07: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_r.cpp Use hidden visibility for several internal-use-only functions. 2012-09-21 18:27:40 -07:00
strerror.cpp Make dlerror(3) thread-safe. 2012-10-16 17:58:17 -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 Clean up warnings in stubs.cpp. 2012-10-22 16:04:56 -07:00
sysconf.c Clean up the implementation of the <dirent.h> functions. 2012-10-26 16:42:06 -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.cpp Upgrade more functions to the current upstream NetBSD copy. 2012-10-23 12:29:53 -07:00
thread_atexit.c auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
time64_config.h <time.h>: Add timegm(), timelocal() and others. 2010-12-06 12:25:52 +01:00
time64.c time64: make helper functions static 2010-10-15 02:16:16 +08: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
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.cpp Move setlocale(3) and the wchar stubs over to .cpp. 2012-10-22 17:05:27 -07:00
wcscoll.c Move non-upstream code into the libc/bionic directory. 2012-10-01 17:35:49 -07:00