platform_bionic/libc/bionic
Florian Mayer fdd5eb1977 Add explicit state for heapprofd hooking.
The double hooking is currently controlled by two separate atomic
booleans. In this state, it is very hard to guard against very subtle
race conditions. Adding an explicit enum to encode the state makes it
easier to reason about the behaviour of the program.

Also introduce a MaybeModifyGlobals to consistently guard accesses to
globals. We would sometimes modify them without swapping the
gGlobalsMutating, introducing a window for race with
HandleHeapprofdSignal.

Test: while true; do atest HeapprofdCtsTest; done
Test: flash blueline and manually test profile
Bug: 150741354
Change-Id: I77102b0bd906b8ec2d6806bd43ba6cbf7191e37c
2020-03-11 10:21:27 -07:00
..
scudo Move bionic_macros.h from private to platform. 2020-01-02 14:09:50 -08:00
__bionic_get_shell_path.cpp Fix internal uses of _PATH_BSHELL. 2019-03-25 17:28:22 -07:00
__cmsg_nxthdr.cpp Modernize codebase by replacing NULL with nullptr 2018-08-02 18:09:44 -07:00
__cxa_guard.cpp Remove now unneeded #undef in __cxa_guard.cpp 2019-08-07 11:10:22 -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 Fix dlclose for libraries with thread_local dtors 2018-01-10 10:24:06 +01:00
__errno.cpp Move errno to a pthread_internal_t field. 2018-12-11 12:59:23 -08:00
__gnu_basename.cpp Modernize codebase by replacing NULL with nullptr 2018-08-02 18:09:44 -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 Move sigrtmin.h into platform headers. 2020-01-02 14:14:15 -08:00
__libc_init_main_thread.cpp Add an android_unsafe_frame_pointer_chase function. 2020-02-03 10:30:45 -08: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 Generalize abort's inline_tgkill, use it in fdsan. 2018-08-31 16:39:23 -07:00
accept.cpp
access.cpp
android_profiling_dynamic.cpp Override SIGSYS during profiling signal handler 2020-02-25 19:00:18 +00:00
android_set_abort_message.cpp Use PR_SET_VMA_ANON_NAME to name the abort message mapping. 2019-03-27 16:50:27 -07:00
android_unsafe_frame_pointer_chase.cpp Handle the alternate signal stack correctly in android_unsafe_frame_pointer_chase. 2020-02-27 10:44:15 -08: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 Modernize codebase by replacing NULL with nullptr 2018-08-02 18:09:44 -07:00
bionic_allocator.cpp Move bionic_macros.h from private to platform. 2020-01-02 14:09:50 -08:00
bionic_arc4random.cpp Replace TLS_SLOT_BIONIC_PREINIT w/ shared globals 2018-12-04 13:51:56 -08:00
bionic_call_ifunc_resolver.cpp Use ifuncs in the linker 2019-11-05 13:37:51 -08:00
bionic_elf_tls.cpp Move bionic_macros.h from private to platform. 2020-01-02 14:09:50 -08:00
bionic_futex.cpp Support priority inheritance mutex in 64bit programs. 2018-01-24 16:11:07 -08:00
bionic_netlink.cpp Add the ScopedFd that we've never quite gotten around to. 2019-10-31 21:16:18 -07:00
bionic_netlink.h Add the ScopedFd that we've never quite gotten around to. 2019-10-31 21:16:18 -07:00
bionic_systrace.cpp bionic: Check /sys/kernel/tracing for tracefs 2020-02-07 11:54:28 -08:00
bionic_time_conversions.cpp Always use CLOCK_MONOTONIC for pthreads and semaphores 2017-08-18 09:11:05 -07:00
brk.cpp Modernize codebase by replacing NULL with nullptr 2018-08-02 18:09:44 -07:00
c16rtomb.cpp Modernize codebase by replacing NULL with nullptr 2018-08-02 18:09:44 -07:00
c32rtomb.cpp Modernize codebase by replacing NULL with nullptr 2018-08-02 18:09:44 -07:00
chmod.cpp
chown.cpp
clearenv.cpp Modernize codebase by replacing NULL with nullptr 2018-08-02 18:09:44 -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 Remove the ___ hack. 2019-06-19 15:38:42 -07:00
clone.cpp Move bionic_macros.h from private to platform. 2020-01-02 14:09:50 -08:00
ctype.cpp <ctype.h>: inline the ASCII functions. 2020-02-05 08:18:51 -08:00
dirent.cpp Modernize codebase by replacing NULL with nullptr 2018-08-02 18:09:44 -07:00
dl_iterate_phdr_static.cpp Add additional dl_phdr_info fields 2019-08-22 12:43:17 -07:00
dup.cpp Add a tool to track down fd leaks. 2020-01-30 13:55:10 -08:00
environ.cpp Mark __BIONIC_WEAK_FOR_NATIVE_BRIDGE symbols 2017-10-27 10:01:46 +02:00
error.cpp Modernize codebase by replacing NULL with nullptr 2018-08-02 18:09:44 -07: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 Fix internal uses of _PATH_BSHELL. 2019-03-25 17:28:22 -07:00
faccessat.cpp Remove the ___ hack. 2019-06-19 15:38:42 -07:00
fchmod.cpp Remove the ___ hack. 2019-06-19 15:38:42 -07:00
fchmodat.cpp Add the ScopedFd that we've never quite gotten around to. 2019-10-31 21:16:18 -07:00
fcntl.cpp Add a tool to track down fd leaks. 2020-01-30 13:55:10 -08:00
fdsan.cpp Add a tool to track down fd leaks. 2020-01-30 13:55:10 -08:00
fdtrack.cpp Move fdtrack APIs to LLNDK. 2020-01-30 13:55:10 -08:00
ffs.cpp
fgetxattr.cpp Remove the ___ hack. 2019-06-19 15:38:42 -07:00
flistxattr.cpp Remove the ___ hack. 2019-06-19 15:38:42 -07:00
flockfile.cpp Revert "Revert "Remove __sinit and __sdidinit."" 2015-12-05 07:30:59 -08:00
fork.cpp Name stack+tls VMAs with PR_SET_VMA_ANON_NAME 2019-07-23 02:06:51 +00:00
fortify.cpp Fix OOB read in fortify str[np]cpy implementations found by hwasan. 2019-08-08 18:54:31 -07:00
fpclassify.cpp Remove some legacy declarations from <math.h>. 2017-10-19 14:15:31 -07:00
fsetxattr.cpp Remove the ___ hack. 2019-06-19 15:38:42 -07:00
ftruncate.cpp Cleanup ftruncate negative test. 2015-06-01 13:22:57 -07:00
fts.c Fix various ftw/nftw "shall fail"s from POSIX. 2018-05-08 15:20:07 -07:00
ftw.cpp Fix various ftw/nftw "shall fail"s from POSIX. 2018-05-08 15:20:07 -07:00
futimens.cpp Modernize codebase by replacing NULL with nullptr 2018-08-02 18:09:44 -07:00
get_device_api_level.cpp Add android_get_device_api_level. 2018-09-06 14:19:46 -07:00
getauxval.cpp Add some MTE-related helpers. 2020-01-30 10:56:50 -08:00
getcwd.cpp Modernize codebase by replacing NULL with nullptr 2018-08-02 18:09:44 -07:00
getdomainname.cpp Add {get,set}domainname(2) 2016-03-25 14:16:58 -07:00
getentropy.cpp Add the ScopedFd that we've never quite gotten around to. 2019-10-31 21:16:18 -07:00
gethostname.cpp
getloadavg.cpp Add getloadavg(3). 2018-10-23 11:23:00 -07:00
getpagesize.cpp Break up the rest of stubs.cpp. 2016-04-06 08:34:58 -07:00
getpgrp.cpp
getpid.cpp Introduce api to track fd ownership in libc. 2018-07-19 14:28:54 -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 Move bionic_macros.h from private to platform. 2020-01-02 14:09:50 -08:00
grp_pwd_file.cpp Add the ScopedFd that we've never quite gotten around to. 2019-10-31 21:16:18 -07:00
grp_pwd_file.h Move bionic_macros.h from private to platform. 2020-01-02 14:09:50 -08:00
gwp_asan_wrappers.cpp [GWP-ASan] Don't intercept calloc. 2020-02-28 16:58:23 +00:00
gwp_asan_wrappers.h [GWP-ASan] [heapprofd] Use ephemeral dispatch table when death prof. 2020-02-17 15:29:33 -08:00
heap_tagging.cpp Update bionic to the v2 MTE patch set. 2020-02-28 01:55:20 +00:00
heap_tagging.h Add tagged pointers to bionic. 2020-01-23 10:37:24 -08:00
iconv.cpp Add missing includes. 2017-10-11 11:25:52 -07:00
icu.cpp Eliminate ICU's .dat lookup from bionic 2019-02-06 20:49:03 +00: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 Cleans up logging and comments in ifaddrs. 2020-02-27 16:02:30 +01:00
initgroups.c
inotify_init.cpp
ioctl.cpp fix the mremap signature 2015-11-06 13:14:43 -08:00
isatty.c
jemalloc.h Rename iterate to malloc_iterate internally. 2019-11-08 11:49:14 -08:00
jemalloc_wrapper.cpp Fix allocations escaping malloc debug. 2019-11-06 10:42:42 -08: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
legacy_32_bit_support.cpp Add a tool to track down fd leaks. 2020-01-30 13:55:10 -08:00
lfs64_support.cpp
libc_init_common.cpp Add a tool to track down fd leaks. 2020-01-30 13:55:10 -08:00
libc_init_common.h Init fork handler after __libc_init_malloc. 2019-11-14 16:02:09 -08:00
libc_init_dynamic.cpp Update a few comments. 2020-02-10 10:30:38 -08:00
libc_init_static.cpp Update a few comments. 2020-02-10 10:30:38 -08:00
libgen.cpp Modernize codebase by replacing NULL with nullptr 2018-08-02 18:09:44 -07:00
link.cpp
locale.cpp Move bionic_macros.h from private to platform. 2020-01-02 14:09:50 -08:00
lockf.cpp Fix lockf for LP32. 2016-01-26 14:32:55 -08:00
lstat.cpp
malloc_common.cpp [GWP-ASan] Fix non-reentrant libc_globals init behaviour. 2020-02-11 14:52:17 -08:00
malloc_common.h [GWP-ASan] Integrate GWP-ASan into bionc's malloc() (using hooks). 2020-02-10 10:51:23 -08:00
malloc_common_dynamic.cpp Rename APEX Namespace 2020-02-20 01:27:35 +00:00
malloc_common_dynamic.h [GWP-ASan] Integrate GWP-ASan into bionc's malloc() (using hooks). 2020-02-10 10:51:23 -08:00
malloc_heapprofd.cpp Add explicit state for heapprofd hooking. 2020-03-11 10:21:27 -07:00
malloc_heapprofd.h allow for heapprofd's signal to be multiplexed 2020-01-15 22:55:03 +00:00
malloc_limit.cpp [malloc dispatch] Install dispatch over the top of GWP-ASan. 2020-02-11 15:29:21 -08:00
malloc_limit.h [malloc dispatch] Install dispatch over the top of GWP-ASan. 2020-02-11 15:29:21 -08:00
malloc_tagged_pointers.h Allow android_mallopt(M_SET_HEAP_TAGGING_LEVEL) to control scudo heap tagging. 2020-02-20 15:25:08 -08:00
mblen.cpp Implement mblen(3). 2016-04-28 16:41:29 -07:00
mbrtoc16.cpp Modernize codebase by replacing NULL with nullptr 2018-08-02 18:09:44 -07:00
mbrtoc32.cpp Modernize codebase by replacing NULL with nullptr 2018-08-02 18:09:44 -07:00
memmem.cpp libc: add const-correct string.h overloads 2017-04-05 13:17:07 -07:00
mempcpy.cpp
mkdir.cpp
mkfifo.cpp
mknod.cpp
mmap.cpp Move bionic_macros.h from private to platform. 2020-01-02 14:09:50 -08:00
mntent.cpp Modernize codebase by replacing NULL with nullptr 2018-08-02 18:09:44 -07:00
mremap.cpp Move bionic_macros.h from private to platform. 2020-01-02 14:09:50 -08:00
ndk_cruft.cpp Move bionic_macros.h from private to platform. 2020-01-02 14:09:50 -08:00
ndk_cruft_data.cpp Optimize tolower(3)/toupper(3) from <ctype.h>. 2019-09-27 14:42:39 -07:00
net_if.cpp Add the ScopedFd that we've never quite gotten around to. 2019-10-31 21:16:18 -07:00
netdb.cpp Complete <netdb.h>. 2017-10-15 10:37:51 -07:00
NetdClient.cpp libnetd_client: support hooking sendto/sendmsg/sendmmsg too. 2019-06-20 08:32:24 -07:00
NetdClientDispatch.cpp Add a tool to track down fd leaks. 2020-01-30 13:55:10 -08:00
netinet_in.cpp POSIX says IPPORT_RESERVED is in <netdb.h>. 2016-08-12 10:38:35 -07:00
new.cpp Modernize codebase by replacing NULL with nullptr 2018-08-02 18:09:44 -07:00
nl_types.cpp Add trivial no-op <nl_types.h>. 2016-04-06 17:22:44 -07:00
open.cpp Add a tool to track down fd leaks. 2020-01-30 13:55:10 -08:00
pathconf.cpp Clean up <sys/limits.h> a bit. 2016-11-30 09:06:53 -08:00
pause.cpp Add sigset64_t and accompanying functions. 2018-01-30 18:47:16 -08:00
pipe.cpp
poll.cpp Move sigrtmin.h into platform headers. 2020-01-02 14:14:15 -08:00
posix_fadvise.cpp
posix_fallocate.cpp
posix_madvise.cpp
posix_timers.cpp Modernize codebase by replacing NULL with nullptr 2018-08-02 18:09:44 -07:00
pthread_atfork.cpp Move bionic_macros.h from private to platform. 2020-01-02 14:09:50 -08:00
pthread_attr.cpp Modernize codebase by replacing NULL with nullptr 2018-08-02 18:09:44 -07:00
pthread_barrier.cpp Fix pthread_barrierattr_getpshared prototype. 2016-08-11 23:18:13 -07:00
pthread_cond.cpp Fix pthread_cond_clockwait() when cond is initialized with CLOCK_MONOTONIC 2019-07-17 10:46:47 -07:00
pthread_create.cpp Add an android_unsafe_frame_pointer_chase function. 2020-02-03 10:30:45 -08:00
pthread_detach.cpp Pass caller names to __pthread_internal_find for better errors. 2019-02-01 16:31:10 -08:00
pthread_equal.cpp
pthread_exit.cpp Implement dynamic TLS accesses and allocation 2019-01-25 17:53:01 -08:00
pthread_getcpuclockid.cpp Make more pthread functions weak for native bridge 2019-09-25 16:55:47 +02:00
pthread_getschedparam.cpp Make pthread_get/setschedparam weak for native bridge 2019-04-25 16:43:24 +02:00
pthread_gettid_np.cpp Pass caller names to __pthread_internal_find for better errors. 2019-02-01 16:31:10 -08:00
pthread_internal.cpp Stop using the __ANDROID_API_x__ constants. 2019-12-20 13:26:14 -08:00
pthread_internal.h Add an android_unsafe_frame_pointer_chase function. 2020-02-03 10:30:45 -08:00
pthread_join.cpp Pass caller names to __pthread_internal_find for better errors. 2019-02-01 16:31:10 -08:00
pthread_key.cpp Reorganize static TLS memory for ELF TLS 2019-01-11 15:34:22 -08:00
pthread_kill.cpp Make more pthread functions weak for native bridge 2019-09-25 16:55:47 +02:00
pthread_mutex.cpp Stop using the __ANDROID_API_x__ constants. 2019-12-20 13:26:14 -08:00
pthread_once.cpp Use FUTEX_WAIT_BITSET to avoid converting timeouts. 2015-11-19 13:42:03 -08:00
pthread_rwlock.cpp Implement new clock wait functions 2019-07-15 09:06:19 -07:00
pthread_self.cpp
pthread_setname_np.cpp Make more pthread functions weak for native bridge 2019-09-25 16:55:47 +02:00
pthread_setschedparam.cpp Make pthread_get/setschedparam weak for native bridge 2019-04-25 16:43:24 +02:00
pthread_sigqueue.cpp Make more pthread functions weak for native bridge 2019-09-25 16:55:47 +02:00
pthread_spinlock.cpp Implement pthread spin. 2015-11-18 17:51:21 -08:00
ptrace.cpp
pty.cpp Modernize codebase by replacing NULL with nullptr 2018-08-02 18:09:44 -07:00
pututline.c
raise.cpp Make raise/abort work with stale cached pid/tid values. 2017-05-10 16:42:04 -07:00
rand.cpp
readlink.cpp Remove outdated _FORTIFY_SOURCE #undefs 2017-07-21 11:25:52 -07:00
realpath.cpp Reimplement realpath. 2020-01-22 18:30:50 -08:00
reboot.cpp Modernize codebase by replacing NULL with nullptr 2018-08-02 18:09:44 -07:00
recv.cpp Modernize codebase by replacing NULL with nullptr 2018-08-02 18:09:44 -07:00
recvmsg.cpp Add a tool to track down fd leaks. 2020-01-30 13:55:10 -08:00
rename.cpp
rmdir.cpp
scandir.cpp Move bionic_macros.h from private to platform. 2020-01-02 14:09:50 -08:00
sched_cpualloc.c bionic: fix assorted static analyzer warnings 2017-06-28 15:03:15 -07:00
sched_cpucount.c Type of second __sched_cpucount should be "const cpu_set_t*". 2018-04-13 16:07:21 -07:00
sched_getaffinity.cpp
sched_getcpu.cpp Modernize codebase by replacing NULL with nullptr 2018-08-02 18:09:44 -07:00
scudo.h Add support for scudo svelte. 2019-12-16 16:22:55 -08:00
scudo_wrapper.cpp Update the scudo wrapper for bionic changes. 2020-02-28 14:34:13 -08:00
semaphore.cpp Stop using the __ANDROID_API_x__ constants. 2019-12-20 13:26:14 -08:00
send.cpp Modernize codebase by replacing NULL with nullptr 2018-08-02 18:09:44 -07:00
setegid.cpp
seteuid.cpp
setjmp_cookie.cpp Replace TLS_SLOT_BIONIC_PREINIT w/ shared globals 2018-12-04 13:51:56 -08:00
setpgrp.cpp
sigaction.cpp Move sigrtmin.h into platform headers. 2020-01-02 14:14:15 -08:00
signal.cpp Move sigrtmin.h into platform headers. 2020-01-02 14:14:15 -08:00
sigprocmask.cpp Move sigrtmin.h into platform headers. 2020-01-02 14:14:15 -08:00
sleep.cpp sleep/usleep: switch to trivial implementations. 2019-10-28 22:25:02 -07:00
spawn.cpp Introduce api to track fd ownership in libc. 2018-07-19 14:28:54 -07:00
stat.cpp
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 There are no typewriters in 2020. 2020-01-21 13:10:13 -08: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 Workaround string-plus-int warning 2019-02-28 15:54:58 -08:00
strtol.cpp Remove bionic's internal ctype-like inlines. 2020-02-05 11:39:35 -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_epoll.cpp Add sigset64_t and accompanying functions. 2018-01-30 18:47:16 -08:00
sys_msg.cpp Remove dead code. 2020-02-13 22:25:02 -08:00
sys_sem.cpp Remove dead code. 2020-02-13 22:25:02 -08:00
sys_shm.cpp Remove dead code. 2020-02-13 22:25:02 -08:00
sys_signalfd.cpp Add sigset64_t and accompanying functions. 2018-01-30 18:47:16 -08:00
sys_statfs.cpp Support statvfs on API levels before 19. 2019-08-29 21:57:58 -07:00
sys_statvfs.cpp Support statvfs on API levels before 19. 2019-08-29 21:57:58 -07:00
sys_time.cpp Add futimes, futimesat, and lutimes. 2016-06-08 19:51:20 -07:00
sysconf.cpp sysconf(_SC_ARG_MAX): go back to imitating the kernel. 2019-11-15 09:24:35 -08:00
sysinfo.cpp Modernize codebase by replacing NULL with nullptr 2018-08-02 18:09:44 -07:00
syslog.cpp Add the %m GNU extension to printf/wprintf. 2018-08-30 16:00:42 -07:00
system.cpp Fix internal uses of _PATH_BSHELL. 2019-03-25 17:28:22 -07:00
system_property_api.cpp Revert "Revert "Make system property reads wait-free"" 2019-11-12 20:41:55 +00:00
system_property_set.cpp Move bionic_macros.h from private to platform. 2020-01-02 14:09:50 -08:00
tdestroy.cpp Modernize codebase by replacing NULL with nullptr 2018-08-02 18:09:44 -07:00
termios.cpp Make inline tcsetattr definition match constants. 2017-07-05 12:00:29 -07:00
thread_private.cpp Reimplement popen(3)/pclose(3). 2018-07-11 12:15:26 -07:00
threads.cpp threads.h: Add C11 thread support. 2019-04-24 09:12:29 -07:00
time64.c
time64_config.h
timespec_get.cpp Add C11 timespec_get. 2018-07-17 13:21:05 -07:00
tmpfile.cpp Modernize codebase by replacing NULL with nullptr 2018-08-02 18:09:44 -07:00
umount.cpp
unlink.cpp
usleep.cpp sleep/usleep: switch to trivial implementations. 2019-10-28 22:25:02 -07:00
vdso.cpp Replace TLS_SLOT_BIONIC_PREINIT w/ shared globals 2018-12-04 13:51:56 -08:00
wait.cpp Modernize codebase by replacing NULL with nullptr 2018-08-02 18:09:44 -07:00
wchar.cpp Modernize codebase by replacing NULL with nullptr 2018-08-02 18:09:44 -07:00
wchar_l.cpp Add remaining _l function stubs. 2018-02-13 23:14:12 -08:00
wcstod.cpp Modernize codebase by replacing NULL with nullptr 2018-08-02 18:09:44 -07:00
wctype.cpp Optimize tolower(3)/toupper(3) from <ctype.h>. 2019-09-27 14:42:39 -07:00
wcwidth.cpp Implement wcwidth(3) in terms of icu4c. 2017-07-27 17:08:24 -07:00
wmempcpy.cpp