platform_bionic/libc/bionic
Elliott Hughes 9591df5294 Fix vdso system call fallback failures.
When a vdso call falls back to making a regular system call, the inline
code for the system call doesn't know about errno and just leaves the
usual kernel result to be translated. Add the missing translation.

Also fix the defaults for non-vdso systems so we actually take the
fallback path (and so avoid unintentionally doing the errno translation
twice in those cases).

Bug: http://b/69626243
Test: ran new tests from http://b/63737556
Change-Id: If379632ea2e059e3d3bc3ff41bf3608dc05fb0a3
2017-11-28 09:09:01 -08:00
..
__bionic_get_shell_path.cpp For devices which are not treble enabled, return the system shell. 2017-09-07 17:19:21 -07:00
__cmsg_nxthdr.cpp Move __cmsg_nxthdr to its proper file. 2014-07-10 12:47:13 +01:00
__cxa_guard.cpp Always use CLOCK_MONOTONIC for pthreads and semaphores 2017-08-18 09:11:05 -07:00
__cxa_pure_virtual.cpp Move libc_log code into libasync_safe. 2017-05-03 08:50:43 -07:00
__cxa_thread_atexit_impl.cpp Mark __BIONIC_WEAK_FOR_NATIVE_BRIDGE symbols 2017-10-27 10:01:46 +02:00
__errno.cpp Remove volatile from the __errno declaration. 2017-06-13 16:02:07 -07:00
__gnu_basename.cpp Implement the GNU basename(3) in addition to the POSIX one. 2014-08-19 14:30:30 -07:00
__libc_current_sigrtmax.cpp Make unified headers' SIGRTMIN/SIGRTMAX usable before API 21. 2017-04-26 14:34:36 -07:00
__libc_current_sigrtmin.cpp Make unified headers' SIGRTMIN/SIGRTMAX usable before API 21. 2017-04-26 14:34:36 -07:00
__libc_init_main_thread.cpp The main thread should just INHERIT its scheduler attributes. 2017-10-26 12:56:21 -07:00
__set_errno.cpp Move __set_errno to ndk_cruft.cpp. 2015-10-29 18:11:32 -07:00
__stack_chk_fail.cpp Move libc_log code into libasync_safe. 2017-05-03 08:50:43 -07:00
abort.cpp Shave another uninteresting stack frame off aborts. 2017-06-20 14:58:16 -07:00
accept.cpp Mark sockets on creation (socket()) and accept4(). 2014-05-19 15:19:16 -07:00
accept4.cpp Mark sockets on creation (socket()) and accept4(). 2014-05-19 15:19:16 -07:00
access.cpp
android_set_abort_message.cpp Make __libc_init_main_thread and android_set_abort_message weak 2017-10-19 18:18:23 +02:00
arpa_inet.cpp Fix inet_aton on LP32. 2015-10-09 17:36:05 -07:00
assert.cpp Remove dead longjmperror. 2017-08-23 15:40:03 -07:00
atof.cpp Ensure we always have symbols for atof, strtof, strtold. 2014-03-12 16:12:57 -07:00
bionic_arc4random.cpp Add missing includes. 2017-10-11 11:25:52 -07:00
bionic_futex.cpp Always use CLOCK_MONOTONIC for pthreads and semaphores 2017-08-18 09:11:05 -07:00
bionic_netlink.cpp Fix ifaddrs error handling. 2016-10-14 14:35:26 -07:00
bionic_netlink.h Remove obsolete GCC workaround. 2016-06-10 12:49:04 -07:00
bionic_systrace.cpp Move libc_log code into libasync_safe. 2017-05-03 08:50:43 -07:00
bionic_time_conversions.cpp Always use CLOCK_MONOTONIC for pthreads and semaphores 2017-08-18 09:11:05 -07:00
brk.cpp Fix instances of '#if __LP64__'. 2016-09-15 14:21:28 -07:00
c16rtomb.cpp Hide various mbstate implementation details. 2017-07-14 17:00:05 -07:00
c32rtomb.cpp Hide various mbstate implementation details. 2017-07-14 17:00:05 -07:00
chmod.cpp
chown.cpp Remove bogus transitive includes. 2014-12-29 13:29:50 -08:00
clearenv.cpp Switch to the upstream OpenBSD getenv/putenv/setenv implementation. 2014-04-22 17:41:00 -07:00
clock.cpp Move <sys/sysconf.h> to <bits/sysconf.h>. 2016-04-07 18:02:00 -07:00
clock_getcpuclockid.cpp Minor clock_getcpuclockid optimization. 2016-03-07 11:54:02 -08:00
clock_nanosleep.cpp clock_nanosleep: add CLOCK_THREAD_CPUTIME_ID special case 2016-03-28 10:29:16 -07:00
clone.cpp Mark __BIONIC_WEAK_FOR_NATIVE_BRIDGE symbols 2017-10-27 10:01:46 +02:00
close.cpp Simplify close(2) EINTR handling. 2015-04-23 08:41:45 -07:00
connect.cpp Cosmetic changes to netd client files. 2014-05-18 15:18:36 -07:00
ctype.cpp Remove isascii_l(3). 2014-07-14 15:48:02 -07:00
dirent.cpp Add null checks to <dirent.h> functions. 2017-10-26 16:16:33 -07:00
dl_iterate_phdr_static.cpp All architectures have AT_SYSINFO_EHDR now. 2017-09-22 13:08:50 -07:00
dup2.cpp Fix dup2 in the case where the two fds are equal. 2015-02-23 21:52:56 -08:00
environ.cpp Mark __BIONIC_WEAK_FOR_NATIVE_BRIDGE symbols 2017-10-27 10:01:46 +02:00
epoll_create.cpp epoll_create: reject size <= 0 2016-03-24 16:37:20 -07:00
epoll_pwait.cpp
epoll_wait.cpp
error.cpp Clean up <stdlib.h> slightly. 2015-01-26 14:28:41 -08:00
ether_aton.c Fix our *ether* headers mess. 2016-05-13 11:00:22 -07:00
ether_ntoa.c Fix our *ether* headers mess. 2016-05-13 11:00:22 -07:00
eventfd_read.cpp
eventfd_write.cpp
exec.cpp Add POSIX fexecve. 2017-10-18 16:26:17 -07:00
faccessat.cpp Add details on why AT_SYMLINK_NOFOLLOW is dangerous 2017-02-14 12:55:15 -08:00
fchmod.cpp Add POSIX fexecve. 2017-10-18 16:26:17 -07:00
fchmodat.cpp Ensure raw fchmod/fchmodat syscalls are hidden. 2015-02-03 12:10:30 -08:00
ffs.cpp
fgetxattr.cpp Add POSIX fexecve. 2017-10-18 16:26:17 -07:00
flistxattr.cpp Add POSIX fexecve. 2017-10-18 16:26:17 -07:00
flockfile.cpp Revert "Revert "Remove __sinit and __sdidinit."" 2015-12-05 07:30:59 -08:00
fork.cpp Mark __BIONIC_WEAK_FOR_NATIVE_BRIDGE symbols 2017-10-27 10:01:46 +02:00
fortify.cpp Add more const-correct C++ overloads. 2017-08-23 14:34:40 -07:00
fpclassify.cpp Remove some legacy declarations from <math.h>. 2017-10-19 14:15:31 -07:00
fsetxattr.cpp Add POSIX fexecve. 2017-10-18 16:26:17 -07:00
ftruncate.cpp Cleanup ftruncate negative test. 2015-06-01 13:22:57 -07:00
fts.c bionic: fix assorted static analyzer warnings 2017-06-28 15:03:15 -07:00
ftw.cpp Fix ftw/nftw to only report unreadable directories once. 2016-04-18 12:05:18 -07:00
futimens.cpp
getauxval.cpp set errno to ENOENT in getauxval per glibc 2.19 2015-03-17 19:50:55 -04:00
getcwd.cpp Remove outdated _FORTIFY_SOURCE #undefs 2017-07-21 11:25:52 -07:00
getdomainname.cpp Add {get,set}domainname(2) 2016-03-25 14:16:58 -07:00
getentropy_linux.c bionic: make NONBLOCK call to getrandom 2016-11-23 15:10:52 -08:00
gethostname.cpp gethostname.c: change to report ENAMETOOLONG error when buflen is less 2014-11-12 12:07:33 -08:00
getpagesize.cpp Break up the rest of stubs.cpp. 2016-04-06 08:34:58 -07:00
getpgrp.cpp Take ownership of various simple syscall wrappers. 2014-03-10 17:17:01 -07:00
getpid.cpp Make getpid work before the main thread is initialized. 2016-06-28 15:52:59 -07:00
getpriority.cpp Fix getpriority/setpriority types. 2016-11-29 15:14:11 -08:00
gettid.cpp Shave another uninteresting stack frame off aborts. 2017-06-20 14:58:16 -07:00
grp_pwd.cpp Only use uids and gids for which we've allocated AIDs 2017-11-15 10:31:49 -08:00
iconv.cpp Add missing includes. 2017-10-11 11:25:52 -07:00
icu.cpp Add missing includes. 2017-10-11 11:25:52 -07:00
icu_static.cpp Add libc_nopthread. 2017-10-16 21:31:37 -07:00
icu_wrappers.cpp Implement wcwidth(3) in terms of icu4c. 2017-07-27 17:08:24 -07:00
ifaddrs.cpp Fix google-explicit-constructor warnings. 2016-05-03 12:08:05 -07:00
initgroups.c
inotify_init.cpp
ioctl.cpp fix the mremap signature 2015-11-06 13:14:43 -08:00
isatty.c
jemalloc.h Add support for modifying decay timer. 2017-05-15 16:59:16 -07:00
jemalloc_wrapper.cpp Add a legacy inline for mmap64. 2017-10-05 23:41:47 -07:00
killpg.cpp Replace killpg. 2017-07-11 15:00:17 -07:00
langinfo.cpp Implement <langinfo.h>. 2016-11-19 11:46:54 -08:00
lchown.cpp Remove bogus transitive includes. 2014-12-29 13:29:50 -08:00
legacy_32_bit_support.cpp Fix instances of '#if __LP64__'. 2016-09-15 14:21:28 -07:00
lfs64_support.cpp CLOEXEC support in fdopen, freopen, and mkostemp/mkostemps. 2014-09-23 18:21:52 -07:00
libc_init_common.cpp Don't allow LIBC_DEBUG_MALLOC_OPTIONS to cross security boundaries. 2017-10-26 18:25:19 -07:00
libc_init_common.h Move VDSO pointers to a shared globals struct. 2015-10-09 15:59:04 -07:00
libc_init_dynamic.cpp Fix LP32 large pid detection. 2017-10-23 10:07:55 -07:00
libc_init_static.cpp Add directives to force stop unwinding. 2017-10-05 15:18:47 -07:00
libgen.cpp Allocate thread local buffers in __init_tls. 2017-02-22 16:05:03 -08:00
link.cpp
locale.cpp Add a non-TLS slot implementation of locale.cpp. 2017-07-12 13:47:42 -07:00
lockf.cpp Fix lockf for LP32. 2016-01-26 14:32:55 -08:00
lstat.cpp Implement some of the missing LFS64 support. 2014-02-18 15:39:24 -08:00
malloc_common.cpp Add support for modifying decay timer. 2017-05-15 16:59:16 -07:00
malloc_info.cpp Implement malloc_info(3). 2014-08-22 10:23:12 -07:00
malloc_info.h Implement malloc_info(3). 2014-08-22 10:23:12 -07:00
mblen.cpp Implement mblen(3). 2016-04-28 16:41:29 -07:00
mbrtoc16.cpp Hide various mbstate implementation details. 2017-07-14 17:00:05 -07:00
mbrtoc32.cpp Hide various mbstate implementation details. 2017-07-14 17:00:05 -07:00
memmem.cpp libc: add const-correct string.h overloads 2017-04-05 13:17:07 -07:00
mempcpy.cpp Add GNU extensions mempcpy and wmemcpy. 2015-02-18 22:02:56 -08:00
mkdir.cpp
mkfifo.cpp Add mkfifoat(3). 2014-10-23 19:10:54 -07:00
mknod.cpp
mmap.cpp Add a legacy inline for mmap64. 2017-10-05 23:41:47 -07:00
mntent.cpp Allocate thread local buffers in __init_tls. 2017-02-22 16:05:03 -08:00
mremap.cpp Add a legacy inline for mmap64. 2017-10-05 23:41:47 -07:00
ndk_cruft.cpp Clean up __isthreaded. 2017-05-11 15:29:03 -07:00
net_if.cpp Fix google-explicit-constructor warnings. 2016-05-03 12:08:05 -07:00
netdb.cpp Complete <netdb.h>. 2017-10-15 10:37:51 -07:00
NetdClient.cpp Move libc_log code into libasync_safe. 2017-05-03 08:50:43 -07:00
NetdClientDispatch.cpp Mark sockets on creation (socket()) and accept4(). 2014-05-19 15:19:16 -07:00
netinet_in.cpp POSIX says IPPORT_RESERVED is in <netdb.h>. 2016-08-12 10:38:35 -07:00
new.cpp Move libc_log code into libasync_safe. 2017-05-03 08:50:43 -07:00
nl_types.cpp Add trivial no-op <nl_types.h>. 2016-04-06 17:22:44 -07:00
open.cpp With O_TMPFILE, open(2) takes a mode argument. 2017-08-04 10:20:18 -07:00
pathconf.cpp Clean up <sys/limits.h> a bit. 2016-11-30 09:06:53 -08:00
pause.cpp
pipe.cpp
poll.cpp Remove outdated _FORTIFY_SOURCE #undefs 2017-07-21 11:25:52 -07:00
posix_fadvise.cpp Add posix_fadvise(3). 2014-09-11 08:45:46 -07:00
posix_fallocate.cpp
posix_madvise.cpp implement posix_madvise 2014-12-04 11:01:28 -08:00
posix_timers.cpp Make all rt_sigtimedwait signatures match. 2016-05-23 11:20:19 -07:00
pthread_atfork.cpp Eliminate deadlock in forked child due to delayed resetting mutex lock 2016-11-07 03:32:57 +00:00
pthread_attr.cpp Preserve historical pthread_create scheduler behavior better. 2017-10-27 15:40:15 -07:00
pthread_barrier.cpp Fix pthread_barrierattr_getpshared prototype. 2016-08-11 23:18:13 -07:00
pthread_cond.cpp Fix a comment in the pthread_cond_t implementation. 2017-02-18 16:35:36 -08:00
pthread_create.cpp Preserve historical pthread_create scheduler behavior better. 2017-10-27 15:40:15 -07:00
pthread_detach.cpp Mark __BIONIC_WEAK_FOR_NATIVE_BRIDGE symbols 2017-10-27 10:01:46 +02:00
pthread_equal.cpp
pthread_exit.cpp Mark __BIONIC_WEAK_FOR_NATIVE_BRIDGE symbols 2017-10-27 10:01:46 +02:00
pthread_getcpuclockid.cpp Be more strict about using invalid pthread_ts. 2017-02-13 17:59:29 -08:00
pthread_getschedparam.cpp Be more strict about using invalid pthread_ts. 2017-02-13 17:59:29 -08:00
pthread_gettid_np.cpp Mark __BIONIC_WEAK_FOR_NATIVE_BRIDGE symbols 2017-10-27 10:01:46 +02:00
pthread_internal.cpp Drop thread list lock before abort. 2017-09-18 14:40:35 -07:00
pthread_internal.h Preserve historical pthread_create scheduler behavior better. 2017-10-27 15:40:15 -07:00
pthread_join.cpp Mark __BIONIC_WEAK_FOR_NATIVE_BRIDGE symbols 2017-10-27 10:01:46 +02:00
pthread_key.cpp Mark __BIONIC_WEAK_FOR_NATIVE_BRIDGE symbols 2017-10-27 10:01:46 +02:00
pthread_kill.cpp Be more strict about using invalid pthread_ts. 2017-02-13 17:59:29 -08:00
pthread_mutex.cpp Use clang's nullability instead of nonnull. 2016-05-05 17:11:54 -07:00
pthread_once.cpp Use FUTEX_WAIT_BITSET to avoid converting timeouts. 2015-11-19 13:42:03 -08:00
pthread_rwlock.cpp sem_timedwait with a null timeout doesn't mean "forever". 2015-12-16 15:15:58 -08:00
pthread_self.cpp
pthread_setname_np.cpp Be more strict about using invalid pthread_ts. 2017-02-13 17:59:29 -08:00
pthread_setschedparam.cpp Add pthread_setschedprio. 2017-10-17 09:14:05 -07:00
pthread_sigmask.cpp
pthread_spinlock.cpp Implement pthread spin. 2015-11-18 17:51:21 -08:00
ptrace.cpp ptrace(3) should be varargs. 2014-07-16 16:07:10 -07:00
pty.cpp Add POSIX fexecve. 2017-10-18 16:26:17 -07:00
pututline.c libc should use O_CLOEXEC when opening files for its own use. 2014-08-26 15:56:54 -07:00
raise.cpp Make raise/abort work with stale cached pid/tid values. 2017-05-10 16:42:04 -07:00
rand.cpp Implement rand/srand in terms of random/srandom. 2014-07-14 12:02:22 -07:00
readlink.cpp Remove outdated _FORTIFY_SOURCE #undefs 2017-07-21 11:25:52 -07:00
reboot.cpp Clean up various warnings in bionic. 2014-02-18 12:04:54 -08:00
recv.cpp Remove outdated _FORTIFY_SOURCE #undefs 2017-07-21 11:25:52 -07:00
rename.cpp
rmdir.cpp
scandir.cpp Implement scandirat and scandirat64. 2015-10-27 13:47:36 -07:00
sched_cpualloc.c bionic: fix assorted static analyzer warnings 2017-06-28 15:03:15 -07:00
sched_cpucount.c Fix cpu_set_t 2014-04-30 14:30:15 +01:00
sched_getaffinity.cpp
sched_getcpu.cpp
semaphore.cpp Add and use constants for the Android API levels. 2016-11-16 16:55:42 -08:00
send.cpp add fortified implementations of send/sendto 2017-02-14 15:50:28 -08:00
setegid.cpp
seteuid.cpp
setjmp_cookie.cpp Move libc_log code into libasync_safe. 2017-05-03 08:50:43 -07:00
setpgrp.cpp Take ownership of various simple syscall wrappers. 2014-03-10 17:17:01 -07:00
sigaction.cpp Use the kernel's sa_restorer for aarch64. 2014-09-16 15:49:50 -07:00
sigaddset.cpp Turn on -Wold-style-cast and fix the errors. 2015-01-21 17:09:58 -08:00
sigblock.c
sigdelset.cpp Turn on -Wold-style-cast and fix the errors. 2015-01-21 17:09:58 -08:00
sigemptyset.cpp Reduce <signal.h> namespace pollution. 2015-01-24 14:18:16 -08:00
sigfillset.cpp Reduce <signal.h> namespace pollution. 2015-01-24 14:18:16 -08:00
sighold.cpp Add SysV signal handling 2016-04-04 16:33:29 -07:00
sigignore.cpp Add SysV signal handling 2016-04-04 16:33:29 -07:00
siginterrupt.c
sigismember.cpp Turn on -Wold-style-cast and fix the errors. 2015-01-21 17:09:58 -08:00
signal.cpp Make _signal hidden in all cases. 2015-10-30 17:10:47 -07:00
signalfd.cpp Hide __signalfd4, used to implement signalfd(3). 2014-05-16 15:47:29 -07:00
sigpause.cpp Add SysV signal handling 2016-04-04 16:33:29 -07:00
sigpending.cpp
sigprocmask.cpp
sigqueue.cpp Hide rt_sigqueueinfo. 2015-05-18 11:29:20 -07:00
sigrelse.cpp Add SysV signal handling 2016-04-04 16:33:29 -07:00
sigset.cpp Add SysV signal handling 2016-04-04 16:33:29 -07:00
sigsetmask.c
sigsuspend.cpp
sigtimedwait.cpp support _POSIX_REALTIME_SIGNALS 2014-12-08 21:52:43 -08:00
sigwait.cpp Make all rt_sigtimedwait signatures match. 2016-05-23 11:20:19 -07:00
sigwaitinfo.cpp support _POSIX_REALTIME_SIGNALS 2014-12-08 21:52:43 -08:00
socket.cpp Mark sockets on creation (socket()) and accept4(). 2014-05-19 15:19:16 -07:00
spawn.cpp Simplify the posix_spawn sigdefault logic. 2017-11-14 22:31:43 -08:00
stat.cpp Implement some of the missing LFS64 support. 2014-02-18 15:39:24 -08:00
statvfs.cpp Fix instances of '#if __LP64__'. 2016-09-15 14:21:28 -07:00
stdlib_l.cpp Move non-locale.h APIs out of locale.cpp. 2017-07-12 12:41:47 -07:00
strchr.cpp Remove outdated _FORTIFY_SOURCE #undefs 2017-07-21 11:25:52 -07:00
strchrnul.cpp Add strchrnul. 2015-08-26 09:59:29 -07:00
strerror.cpp Allocate thread local buffers in __init_tls. 2017-02-22 16:05:03 -08:00
strerror_r.cpp Move libc_log code into libasync_safe. 2017-05-03 08:50:43 -07:00
string_l.cpp Move non-locale.h APIs out of locale.cpp. 2017-07-12 12:41:47 -07:00
strings_l.cpp Move non-locale.h APIs out of locale.cpp. 2017-07-12 12:41:47 -07:00
strnlen.c
strrchr.cpp Remove outdated _FORTIFY_SOURCE #undefs 2017-07-21 11:25:52 -07:00
strsignal.cpp Allocate thread local buffers in __init_tls. 2017-02-22 16:05:03 -08:00
strtold.cpp Use __RENAME for long double functions. 2017-09-14 16:10:43 -07:00
swab.cpp Add POSIX swab. 2017-10-18 13:34:32 -07:00
symlink.cpp
sync_file_range.cpp Add sync_file_range to <fcntl.h>. 2016-04-05 12:17:22 -07:00
sys_msg.cpp [mips64] Fix ipc syscalls 2016-09-09 12:24:04 +02:00
sys_sem.cpp [mips64] Fix ipc syscalls 2016-09-09 12:24:04 +02:00
sys_shm.cpp [mips64] Fix ipc syscalls 2016-09-09 12:24:04 +02:00
sys_siglist.c Move <sys/_sigdefs.h> and <sys/_errdefs.h> to private. 2016-04-13 17:45:39 -07:00
sys_signame.c Move <sys/_sigdefs.h> and <sys/_errdefs.h> to private. 2016-04-13 17:45:39 -07:00
sys_time.cpp Add futimes, futimesat, and lutimes. 2016-06-08 19:51:20 -07:00
sysconf.cpp Change ARG_MAX/_SC_ARG_MAX back to a constant. 2017-11-15 15:14:35 -08:00
sysinfo.cpp Fix overflow in get_phys_pages and get_avphys_pages. 2017-08-24 16:51:48 -07:00
syslog.cpp Move libc_log code into libasync_safe. 2017-05-03 08:50:43 -07:00
tdestroy.cpp Finish <search.h>. 2017-08-31 17:38:51 -07:00
termios.cpp Make inline tcsetattr definition match constants. 2017-07-05 12:00:29 -07:00
thread_private.cpp Sync to current upstream arc4random. 2014-06-24 14:13:48 -07:00
time64.c Use snprintf instead of sprintf. 2014-10-07 11:28:47 -07:00
time64_config.h
tmpfile.cpp Implement <spawn.h>. 2017-10-11 14:57:49 -07:00
umount.cpp Take ownership of various simple syscall wrappers. 2014-03-10 17:17:01 -07:00
unlink.cpp
vdso.cpp Fix vdso system call fallback failures. 2017-11-28 09:09:01 -08:00
wait.cpp Removes wait3(2) from LP64. 2014-06-13 16:04:41 -07:00
wchar.cpp Hide various mbstate implementation details. 2017-07-14 17:00:05 -07:00
wchar_l.cpp Move wchar _l functions out of wchar.cpp. 2017-07-13 10:29:20 -07:00
wcstod.cpp Add missing includes. 2017-10-11 11:25:52 -07:00
wctype.cpp Implement wcwidth(3) in terms of icu4c. 2017-07-27 17:08:24 -07:00
wcwidth.cpp Implement wcwidth(3) in terms of icu4c. 2017-07-27 17:08:24 -07:00
wmempcpy.cpp Add GNU extensions mempcpy and wmemcpy. 2015-02-18 22:02:56 -08:00