summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Kaivo <jkk@ung.org>2024-05-28 14:56:06 -0400
committerJakob Kaivo <jkk@ung.org>2024-05-28 14:56:06 -0400
commitb4cd7036bea6c6440fbbcdaebe53c864c87a5646 (patch)
tree260670ad9a9637c8c36d84b9cf77ec412017b038
parenta69b11fd8974a898a26081950bd4add7c82ea45d (diff)
integrate jkmalloc/prep for readonly
-rw-r--r--mk/__jkmalloc.d10
-rw-r--r--mk/__readonly.d10
-rw-r--r--mk/aligned_alloc.d1
-rw-r--r--mk/all.mk850
-rw-r--r--mk/calloc.d1
-rw-r--r--mk/deps.mk2794
-rw-r--r--mk/fputws.d1
-rw-r--r--mk/free.d1
-rw-r--r--mk/malloc.d1
-rw-r--r--mk/realloc.d2
-rw-r--r--mk/setlocale.d1
-rw-r--r--mk/strerror.d1
-rw-r--r--mk/wcrtomb.d1
-rw-r--r--src/__readonly.c37
-rw-r--r--src/_readonly.h12
-rw-r--r--src/_syscall.h1
-rw-r--r--src/locale/setlocale.c10
-rw-r--r--src/signal/sigaction.c9
-rw-r--r--src/signal/siginfo_t.h75
-rw-r--r--src/stdlib/__jkmalloc.c381
-rw-r--r--src/stdlib/_jkmalloc.h6
-rw-r--r--src/stdlib/aligned_alloc.c5
-rw-r--r--src/stdlib/calloc.c19
-rw-r--r--src/stdlib/free.c7
-rw-r--r--src/stdlib/malloc.c7
-rw-r--r--src/stdlib/realloc.c46
-rw-r--r--src/string/strerror.c13
-rw-r--r--src/tgmath/acos.h19
28 files changed, 2420 insertions, 1901 deletions
diff --git a/mk/__jkmalloc.d b/mk/__jkmalloc.d
new file mode 100644
index 00000000..49f04dd2
--- /dev/null
+++ b/mk/__jkmalloc.d
@@ -0,0 +1,10 @@
+libc_C.0: libc.a(__jkmalloc.o)
+libc.a(__jkmalloc.o): $(OBJDIR)/__jkmalloc.o
+ @$(AR) $(ARFLAGS) $@ $(OBJDIR)/$%
+
+$(OBJDIR)/__jkmalloc.o: src/stdlib/__jkmalloc.c
+$(OBJDIR)/__jkmalloc.o: src/_syscall.h
+$(OBJDIR)/__jkmalloc.o: src/stdlib/_jkmalloc.h
+$(OBJDIR)/__jkmalloc.o:
+ @mkdir -p $(@D)
+ $(CC) -c -o $@ $(CFLAGS) src/stdlib/__jkmalloc.c
diff --git a/mk/__readonly.d b/mk/__readonly.d
new file mode 100644
index 00000000..e2bf7865
--- /dev/null
+++ b/mk/__readonly.d
@@ -0,0 +1,10 @@
+libc_C.0: libc.a(__readonly.o)
+libc.a(__readonly.o): $(OBJDIR)/__readonly.o
+ @$(AR) $(ARFLAGS) $@ $(OBJDIR)/$%
+
+$(OBJDIR)/__readonly.o: src/__readonly.c
+$(OBJDIR)/__readonly.o: src/_readonly.h
+$(OBJDIR)/__readonly.o: src/_syscall.h
+$(OBJDIR)/__readonly.o:
+ @mkdir -p $(@D)
+ $(CC) -c -o $@ $(CFLAGS) src/__readonly.c
diff --git a/mk/aligned_alloc.d b/mk/aligned_alloc.d
index 3f68f78c..da70e98d 100644
--- a/mk/aligned_alloc.d
+++ b/mk/aligned_alloc.d
@@ -4,6 +4,7 @@ libc.a(aligned_alloc.o): $(OBJDIR)/aligned_alloc.o
$(OBJDIR)/aligned_alloc.o: src/stdlib/aligned_alloc.c
$(OBJDIR)/aligned_alloc.o: src/stdlib/_stdlib.h
+$(OBJDIR)/aligned_alloc.o: src/stdlib/_jkmalloc.h
$(OBJDIR)/aligned_alloc.o:
@mkdir -p $(@D)
$(CC) -c -o $@ $(CFLAGS) src/stdlib/aligned_alloc.c
diff --git a/mk/all.mk b/mk/all.mk
index 27ac6bd2..cdd17bf1 100644
--- a/mk/all.mk
+++ b/mk/all.mk
@@ -1,473 +1,475 @@
-include mk/atomic_fetch_and.d
-include mk/atomic_flag_clear_explicit.d
-include mk/atomic_compare_exchange_strong.d
-include mk/atomic_fetch_xor_explicit.d
-include mk/atomic_compare_exchange_weak_explicit.d
-include mk/atomic_thread_fence.d
-include mk/atomic_load.d
-include mk/atomic_fetch_and_explicit.d
-include mk/atomic_store_explicit.d
-include mk/atomic_flag.d
-include mk/atomic_fetch_sub.d
-include mk/atomic_fetch_add.d
-include mk/atomic_fetch_add_explicit.d
-include mk/atomic_fetch_or_explicit.d
-include mk/atomic_exchange_explicit.d
-include mk/atomic_compare_exchange_strong_explicit.d
-include mk/atomic_compare_exchange_weak.d
-include mk/atomic_exchange.d
-include mk/atomic_signal_fence.d
-include mk/atomic_init.d
-include mk/atomic_fetch_sub_explicit.d
-include mk/atomic_fetch_or.d
-include mk/atomic_is_lock_free.d
-include mk/atomic_flag_test_and_set_explicit.d
-include mk/atomic_store.d
-include mk/atomic_fetch_xor.d
-include mk/atomic_flag_clear.d
-include mk/atomic_load_explicit.d
-include mk/atomic_flag_test_and_set.d
-include mk/creal.d
+include mk/__undefined.d
include mk/ctan.d
-include mk/csqrt.d
include mk/catan.d
-include mk/cimag.d
-include mk/csinh.d
include mk/ccos.d
-include mk/conj.d
-include mk/ccosh.d
-include mk/catanh.d
include mk/cabs.d
+include mk/creal.d
+include mk/csinh.d
+include mk/catanh.d
include mk/cpow.d
-include mk/cexp.d
-include mk/ctanh.d
-include mk/casin.d
-include mk/casinh.d
-include mk/cacosh.d
-include mk/carg.d
include mk/clog.d
-include mk/cproj.d
+include mk/cimag.d
include mk/csin.d
+include mk/casinh.d
include mk/cacos.d
-include mk/__undefined.d
-include mk/strspn.d
-include mk/memmove_s.d
-include mk/strtok.d
-include mk/strcoll.d
-include mk/strnlen_s.d
-include mk/strncmp.d
-include mk/memset.d
-include mk/strerror.d
-include mk/strncpy_s.d
-include mk/memcpy.d
-include mk/strxfrm.d
-include mk/memmove.d
-include mk/memcpy_s.d
-include mk/strcpy_s.d
-include mk/strerrorlen_s.d
-include mk/strpbrk.d
-include mk/memcmp.d
-include mk/strcmp.d
-include mk/strcat.d
-include mk/strncat_s.d
-include mk/strrchr.d
-include mk/strcpy.d
-include mk/strtok_s.d
-include mk/strerror_s.d
-include mk/strncpy.d
-include mk/strstr.d
-include mk/strcat_s.d
-include mk/memchr.d
-include mk/strcspn.d
-include mk/strlen.d
-include mk/strchr.d
-include mk/strncat.d
-include mk/memset_s.d
-include mk/wcsrtombs.d
+include mk/ctanh.d
+include mk/cproj.d
+include mk/ccosh.d
+include mk/carg.d
+include mk/conj.d
+include mk/cexp.d
+include mk/csqrt.d
+include mk/cacosh.d
+include mk/casin.d
+include mk/__get_locale.d
+include mk/localeconv.d
+include mk/setlocale.d
+include mk/__load_locale.d
+include mk/__checked_call.d
+include mk/iswspace.d
+include mk/iswcntrl.d
+include mk/iswxdigit.d
+include mk/wctype.d
+include mk/iswalnum.d
+include mk/iswprint.d
+include mk/iswctype.d
+include mk/towupper.d
+include mk/iswblank.d
+include mk/iswdigit.d
+include mk/iswupper.d
+include mk/iswlower.d
+include mk/wctrans.d
+include mk/towctrans.d
+include mk/iswpunct.d
+include mk/iswalpha.d
+include mk/iswgraph.d
+include mk/towlower.d
+include mk/assert.d
+include mk/__assert.d
+include mk/feraiseexcept.d
+include mk/fesetexceptflag.d
+include mk/fetestexcept.d
+include mk/fegetexceptflag.d
+include mk/fesetround.d
+include mk/__fenv.d
+include mk/feupdateenv.d
+include mk/feholdexcept.d
+include mk/fesetenv.d
+include mk/feclearexcept.d
+include mk/fegetround.d
+include mk/fegetenv.d
+include mk/atomic_store.d
+include mk/atomic_compare_exchange_weak.d
+include mk/atomic_fetch_xor.d
+include mk/atomic_thread_fence.d
+include mk/atomic_flag_clear.d
+include mk/atomic_flag.d
+include mk/atomic_fetch_sub_explicit.d
+include mk/atomic_compare_exchange_strong_explicit.d
+include mk/atomic_fetch_or_explicit.d
+include mk/atomic_compare_exchange_strong.d
+include mk/atomic_load.d
+include mk/atomic_store_explicit.d
+include mk/atomic_fetch_sub.d
+include mk/atomic_is_lock_free.d
+include mk/atomic_exchange.d
+include mk/atomic_fetch_or.d
+include mk/atomic_load_explicit.d
+include mk/atomic_flag_test_and_set_explicit.d
+include mk/atomic_exchange_explicit.d
+include mk/atomic_signal_fence.d
+include mk/atomic_init.d
+include mk/atomic_fetch_and.d
+include mk/atomic_fetch_and_explicit.d
+include mk/atomic_compare_exchange_weak_explicit.d
+include mk/atomic_fetch_add_explicit.d
+include mk/atomic_fetch_add.d
+include mk/atomic_flag_clear_explicit.d
+include mk/atomic_flag_test_and_set.d
+include mk/atomic_fetch_xor_explicit.d
+include mk/__main.d
+include mk/__errno.d
+include mk/isspace.d
+include mk/isalpha.d
+include mk/isupper.d
+include mk/iscntrl.d
+include mk/toupper.d
+include mk/isblank.d
+include mk/isgraph.d
+include mk/isalnum.d
+include mk/ispunct.d
+include mk/isdigit.d
+include mk/tolower.d
+include mk/isxdigit.d
+include mk/isprint.d
+include mk/islower.d
+include mk/mbsrtowcs.d
+include mk/mbrtowc.d
+include mk/wcstod.d
+include mk/wcscat.d
+include mk/vfwprintf_s.d
+include mk/wcsxfrm.d
+include mk/vswscanf.d
include mk/btowc.d
+include mk/fgetwc.d
+include mk/wcrtomb_s.d
+include mk/wcrtomb.d
include mk/wctob.d
-include mk/wcslen.d
-include mk/wcsspn.d
-include mk/wcsncat.d
-include mk/wcscpy_s.d
-include mk/swscanf.d
-include mk/getwc.d
-include mk/vfwprintf.d
-include mk/wcstoll.d
-include mk/wmemcpy.d
+include mk/wcstold.d
include mk/fgetws.d
-include mk/fwprintf_s.d
+include mk/wcsstr.d
+include mk/vsnwprintf_s.d
+include mk/fwscanf_s.d
+include mk/swprintf.d
+include mk/wcsncat_s.d
+include mk/wcstok_s.d
include mk/wcschr.d
-include mk/wmemcpy_s.d
-include mk/vfwscanf_s.d
-include mk/wcstof.d
-include mk/wmemcmp.d
-include mk/vswscanf.d
-include mk/fputwc.d
include mk/swprintf_s.d
-include mk/fwprintf.d
-include mk/wcscpy.d
-include mk/wcstok.d
-include mk/fwscanf_s.d
-include mk/vfwprintf_s.d
-include mk/wmemset.d
-include mk/wprintf_s.d
-include mk/snwprintf_s.d
-include mk/wcsncpy.d
+include mk/vfwscanf.d
+include mk/fputws.d
include mk/wmemchr.d
-include mk/putwc.d
-include mk/mbrlen.d
+include mk/wcsncat.d
+include mk/vswprintf.d
+include mk/wcscat_s.d
include mk/mbsrtowcs_s.d
-include mk/vwscanf_s.d
-include mk/vwscanf.d
-include mk/fwide.d
-include mk/wcstol.d
-include mk/wprintf.d
-include mk/getwchar.d
-include mk/wcspbrk.d
-include mk/wcsncat_s.d
-include mk/wcrtomb_s.d
-include mk/mbsinit.d
-include mk/swscanf_s.d
-include mk/wcscat.d
-include mk/ungetwc.d
-include mk/fputws.d
-include mk/wcstok_s.d
-include mk/vswscanf_s.d
include mk/wcsncmp.d
-include mk/vswprintf.d
-include mk/wmemmove_s.d
-include mk/putwchar.d
-include mk/wcstoull.d
-include mk/vfwscanf.d
+include mk/wcscmp.d
+include mk/vfwprintf.d
+include mk/vwscanf_s.d
include mk/wcscspn.d
-include mk/vsnwprintf_s.d
-include mk/mbrtowc.d
-include mk/wcsftime.d
-include mk/wcsrchr.d
-include mk/mbsrtowcs.d
+include mk/wcstoll.d
+include mk/wcstok.d
+include mk/wcscpy_s.d
+include mk/vwprintf.d
+include mk/vwprintf_s.d
+include mk/wcstoull.d
+include mk/fwprintf.d
+include mk/wscanf_s.d
include mk/wcsrtombs_s.d
-include mk/wcsstr.d
-include mk/swprintf.d
-include mk/wcsnlen_s.d
+include mk/putwchar.d
+include mk/wcstof.d
+include mk/fwprintf_s.d
+include mk/swscanf.d
+include mk/wcsrchr.d
include mk/wscanf.d
-include mk/wcsxfrm.d
-include mk/wmemmove.d
-include mk/fwscanf.d
-include mk/fgetwc.d
-include mk/vwprintf_s.d
-include mk/wcscmp.d
-include mk/wcstold.d
-include mk/wcstod.d
+include mk/wcscpy.d
+include mk/wcspbrk.d
+include mk/wcslen.d
+include mk/wcsnlen_s.d
+include mk/mbrlen.d
+include mk/putwc.d
include mk/wcsncpy_s.d
-include mk/wcrtomb.d
-include mk/wscanf_s.d
-include mk/wcscat_s.d
-include mk/wcstoul.d
+include mk/wmemmove.d
+include mk/wcsftime.d
+include mk/fwide.d
include mk/vswprintf_s.d
-include mk/vwprintf.d
+include mk/snwprintf_s.d
+include mk/wprintf.d
+include mk/wcstoul.d
+include mk/vswscanf_s.d
include mk/wcscoll.d
-include mk/strtoumax.d
-include mk/imaxabs.d
-include mk/strtoimax.d
-include mk/wcstoimax.d
-include mk/wcstoumax.d
-include mk/imaxdiv.d
-include mk/__checked_call.d
-include mk/setlocale.d
-include mk/localeconv.d
-include mk/__load_locale.d
-include mk/__get_locale.d
-include mk/atof.d
-include mk/srand.d
-include mk/wctomb_s.d
-include mk/ignore_handler_s.d
-include mk/strtoul.d
-include mk/strtod.d
-include mk/ldiv.d
-include mk/atoi.d
-include mk/at_quick_exit.d
-include mk/labs.d
-include mk/abort.d
-include mk/bsearch_s.d
-include mk/exit.d
-include mk/system.d
-include mk/div.d
-include mk/strtol.d
-include mk/strtof.d
-include mk/wcstombs.d
-include mk/strtold.d
-include mk/malloc.d
-include mk/rand.d
-include mk/__stdlib.d
-include mk/atexit.d
-include mk/realloc.d
-include mk/free.d
-include mk/wcstombs_s.d
-include mk/abort_handler_s.d
-include mk/mbstowcs.d
-include mk/calloc.d
-include mk/set_constraint_handler_s.d
-include mk/mblen.d
-include mk/aligned_alloc.d
-include mk/qsort_s.d
-include mk/lldiv.d
-include mk/strtoll.d
-include mk/abs.d
-include mk/atoll.d
-include mk/bsearch.d
-include mk/mbtowc.d
-include mk/llabs.d
-include mk/quick_exit.d
-include mk/strtoull.d
-include mk/wctomb.d
-include mk/getenv.d
-include mk/qsort.d
-include mk/_Exit.d
-include mk/getenv_s.d
-include mk/mbstowcs_s.d
-include mk/atol.d
-include mk/modf.d
-include mk/sinh.d
-include mk/acosh.d
-include mk/tanh.d
-include mk/fma.d
-include mk/nextafter.d
-include mk/llround.d
-include mk/exp2.d
-include mk/fdim.d
-include mk/nexttoward.d
-include mk/sqrt.d
-include mk/pow.d
-include mk/erfc.d
-include mk/lround.d
-include mk/acos.d
-include mk/exp.d
-include mk/cos.d
-include mk/asinh.d
-include mk/atanh.d
-include mk/log1p.d
-include mk/atan.d
-include mk/logb.d
-include mk/scalbln.d
-include mk/nan.d
-include mk/log2.d
-include mk/hypot.d
-include mk/rint.d
-include mk/asin.d
-include mk/copysign.d
-include mk/cosh.d
-include mk/log.d
-include mk/scalbn.d
-include mk/lrint.d
-include mk/ldexp.d
-include mk/cbrt.d
-include mk/floor.d
-include mk/atan2.d
-include mk/remquo.d
-include mk/ilogb.d
-include mk/log10.d
-include mk/lgamma.d
-include mk/erf.d
-include mk/fmin.d
-include mk/nearbyint.d
-include mk/fmax.d
-include mk/__fpclassify.d
-include mk/ceil.d
-include mk/expm1.d
-include mk/frexp.d
-include mk/fabs.d
-include mk/tan.d
-include mk/round.d
-include mk/fmod.d
-include mk/llrint.d
-include mk/tgamma.d
-include mk/trunc.d
-include mk/sin.d
-include mk/__sigsegv.d
-include mk/signal.d
-include mk/sigaction.d
-include mk/__signal_handler.d
-include mk/raise.d
-include mk/__signal.d
-include mk/kill.d
-include mk/mbrtoc32.d
-include mk/c32rtomb.d
+include mk/wmemset.d
+include mk/vfwscanf_s.d
+include mk/wmemcpy_s.d
+include mk/fputwc.d
+include mk/ungetwc.d
+include mk/swscanf_s.d
+include mk/wcsncpy.d
+include mk/wcstol.d
+include mk/mbsinit.d
+include mk/wcsspn.d
+include mk/wmemmove_s.d
+include mk/wcsrtombs.d
+include mk/getwchar.d
+include mk/wmemcpy.d
+include mk/getwc.d
+include mk/wmemcmp.d
+include mk/fwscanf.d
+include mk/vwscanf.d
+include mk/wprintf_s.d
include mk/c16rtomb.d
+include mk/c32rtomb.d
include mk/mbrtoc16.d
-include mk/__assert.d
-include mk/assert.d
-include mk/iscntrl.d
-include mk/isalpha.d
-include mk/toupper.d
-include mk/isdigit.d
-include mk/isupper.d
-include mk/isspace.d
-include mk/ispunct.d
-include mk/islower.d
-include mk/isxdigit.d
-include mk/isgraph.d
-include mk/isblank.d
-include mk/tolower.d
-include mk/isprint.d
-include mk/isalnum.d
-include mk/strftime.d
-include mk/time.d
-include mk/asctime.d
+include mk/mbrtoc32.d
+include mk/va_copy.d
+include mk/va_start.d
+include mk/va_arg.d
+include mk/va_end.d
+include mk/environ.d
+include mk/timespec_get.d
include mk/ctime.d
-include mk/clock.d
+include mk/asctime_s.d
include mk/ctime_s.d
+include mk/time.d
include mk/gmtime.d
-include mk/gmtime_s.d
include mk/difftime.d
+include mk/clock.d
+include mk/gmtime_s.d
+include mk/strftime.d
include mk/localtime.d
-include mk/nanosleep.d
include mk/__time.d
-include mk/timespec_get.d
include mk/localtime_s.d
-include mk/asctime_s.d
+include mk/nanosleep.d
include mk/mktime.d
-include mk/__main.d
-include mk/environ.d
-include mk/setjmp.d
+include mk/asctime.d
+include mk/__readonly.d
include mk/longjmp.d
-include mk/fputs.d
-include mk/fwrite.d
-include mk/vscanf.d
-include mk/fputc.d
-include mk/vfprintf.d
-include mk/getchar_unlocked.d
-include mk/ferror.d
-include mk/fgetc.d
+include mk/setjmp.d
+include mk/thrd_join.d
+include mk/thrd_sleep.d
+include mk/cnd_destroy.d
+include mk/mtx_unlock.d
+include mk/mtx_timedlock.d
+include mk/mtx_init.d
+include mk/tss_set.d
+include mk/tss_get.d
+include mk/thrd_detach.d
+include mk/mtx_lock.d
+include mk/cnd_wait.d
+include mk/thrd_yield.d
+include mk/call_once.d
+include mk/thrd_equal.d
+include mk/cnd_broadcast.d
+include mk/tss_delete.d
+include mk/cnd_init.d
+include mk/thrd_current.d
+include mk/mtx_trylock.d
+include mk/mtx_destroy.d
+include mk/tss_create.d
+include mk/thrd_create.d
+include mk/cnd_signal.d
+include mk/thrd_exit.d
+include mk/cnd_timedwait.d
+include mk/vfprintf_s.d
include mk/funlockfile.d
-include mk/fprintf_s.d
-include mk/putc.d
+include mk/scanf_s.d
+include mk/rewind.d
+include mk/ferror.d
+include mk/vfscanf_s.d
+include mk/vsprintf_s.d
+include mk/sprintf_s.d
+include mk/freopen.d
+include mk/fscanf_s.d
+include mk/getchar_unlocked.d
+include mk/tmpnam.d
+include mk/fsetpos.d
+include mk/__stdio.d
include mk/scanf.d
-include mk/sscanf_s.d
-include mk/sscanf.d
+include mk/gets_s.d
+include mk/gets.d
+include mk/fflush.d
include mk/ftell.d
-include mk/__printf.d
-include mk/printf_s.d
+include mk/vfscanf.d
+include mk/clearerr.d
+include mk/setbuf.d
+include mk/putchar.d
+include mk/fprintf.d
include mk/fseek.d
-include mk/puts.d
-include mk/__stdin.d
-include mk/vprintf.d
+include mk/remove.d
+include mk/printf.d
+include mk/vsprintf.d
+include mk/__stdout.d
include mk/fread.d
-include mk/vscanf_s.d
-include mk/__stderr.d
-include mk/freopen.d
+include mk/snprintf.d
include mk/putchar_unlocked.d
-include mk/setbuf.d
+include mk/flockfile.d
+include mk/fprintf_s.d
include mk/freopen_s.d
-include mk/scanf_s.d
-include mk/vsnprintf_s.d
-include mk/tmpfile_s.d
-include mk/vsnprintf.d
-include mk/rewind.d
-include mk/__stdio.d
include mk/sprintf.d
-include mk/vfscanf_s.d
-include mk/vfscanf.d
-include mk/clearerr.d
-include mk/fopen.d
-include mk/tmpnam_s.d
-include mk/__stdout.d
+include mk/fscanf.d
+include mk/vscanf_s.d
+include mk/vsnprintf_s.d
+include mk/setvbuf.d
+include mk/sscanf.d
+include mk/fclose.d
include mk/fgets.d
-include mk/snprintf_s.d
-include mk/getc_unlocked.d
-include mk/fprintf.d
+include mk/vsscanf_s.d
+include mk/__stderr.d
+include mk/fgetc.d
+include mk/tmpfile.d
+include mk/vfprintf.d
include mk/getc.d
-include mk/vsprintf_s.d
-include mk/rename.d
-include mk/flockfile.d
-include mk/perror.d
-include mk/putc_unlocked.d
-include mk/fsetpos.d
-include mk/tmpnam.d
-include mk/fclose.d
+include mk/puts.d
include mk/__scanf.d
+include mk/fwrite.d
+include mk/perror.d
+include mk/sscanf_s.d
include mk/feof.d
-include mk/fscanf.d
-include mk/fscanf_s.d
-include mk/vfprintf_s.d
-include mk/snprintf.d
-include mk/gets.d
-include mk/sprintf_s.d
-include mk/vprintf_s.d
+include mk/__stdin.d
+include mk/printf_s.d
+include mk/vprintf.d
+include mk/tmpnam_s.d
+include mk/rename.d
include mk/getchar.d
-include mk/fopen_s.d
-include mk/remove.d
-include mk/putchar.d
-include mk/vsprintf.d
-include mk/vsscanf_s.d
-include mk/printf.d
-include mk/ungetc.d
-include mk/gets_s.d
-include mk/vsscanf.d
include mk/fgetpos.d
-include mk/tmpfile.d
-include mk/setvbuf.d
-include mk/fflush.d
-include mk/__errno.d
-include mk/thrd_current.d
-include mk/cnd_timedwait.d
-include mk/call_once.d
-include mk/thrd_join.d
-include mk/thrd_equal.d
-include mk/thrd_create.d
-include mk/tss_create.d
-include mk/mtx_timedlock.d
-include mk/cnd_wait.d
-include mk/cnd_destroy.d
-include mk/thrd_detach.d
-include mk/cnd_signal.d
-include mk/mtx_init.d
-include mk/mtx_unlock.d
-include mk/mtx_lock.d
-include mk/thrd_sleep.d
-include mk/tss_delete.d
-include mk/thrd_yield.d
-include mk/cnd_init.d
-include mk/tss_get.d
-include mk/mtx_trylock.d
-include mk/mtx_destroy.d
-include mk/thrd_exit.d
-include mk/tss_set.d
-include mk/cnd_broadcast.d
-include mk/iswlower.d
-include mk/iswxdigit.d
-include mk/iswpunct.d
-include mk/towupper.d
-include mk/iswcntrl.d
-include mk/iswprint.d
-include mk/iswblank.d
-include mk/iswgraph.d
-include mk/towctrans.d
-include mk/iswdigit.d
-include mk/iswctype.d
-include mk/wctype.d
-include mk/wctrans.d
-include mk/iswalnum.d
-include mk/iswupper.d
-include mk/iswalpha.d
-include mk/iswspace.d
-include mk/towlower.d
-include mk/feclearexcept.d
-include mk/fesetround.d
-include mk/feholdexcept.d
-include mk/feraiseexcept.d
-include mk/feupdateenv.d
-include mk/fegetenv.d
-include mk/fesetenv.d
-include mk/fesetexceptflag.d
-include mk/fegetround.d
-include mk/fetestexcept.d
-include mk/fegetexceptflag.d
-include mk/__fenv.d
-include mk/va_copy.d
-include mk/va_start.d
-include mk/va_arg.d
-include mk/va_end.d
+include mk/fputc.d
+include mk/vsnprintf.d
+include mk/vsscanf.d
+include mk/putc_unlocked.d
+include mk/tmpfile_s.d
+include mk/snprintf_s.d
+include mk/ungetc.d
+include mk/__printf.d
+include mk/fopen.d
+include mk/putc.d
+include mk/vscanf.d
+include mk/vprintf_s.d
+include mk/fopen_s.d
+include mk/getc_unlocked.d
+include mk/fputs.d
+include mk/strncat.d
+include mk/strncat_s.d
+include mk/memcpy_s.d
+include mk/strcmp.d
+include mk/memcpy.d
+include mk/memcmp.d
+include mk/strlen.d
+include mk/strcspn.d
+include mk/strchr.d
+include mk/strerror_s.d
+include mk/strpbrk.d
+include mk/strerrorlen_s.d
+include mk/strerror.d
+include mk/strstr.d
+include mk/strncmp.d
+include mk/memchr.d
+include mk/strtok_s.d
+include mk/strrchr.d
+include mk/strspn.d
+include mk/strcoll.d
+include mk/strcpy_s.d
+include mk/memmove_s.d
+include mk/strcpy.d
+include mk/strtok.d
+include mk/memset.d
+include mk/memmove.d
+include mk/strncpy.d
+include mk/strcat_s.d
+include mk/strnlen_s.d
+include mk/strncpy_s.d
+include mk/strcat.d
+include mk/memset_s.d
+include mk/strxfrm.d
+include mk/imaxabs.d
+include mk/strtoimax.d
+include mk/imaxdiv.d
+include mk/wcstoumax.d
+include mk/strtoumax.d
+include mk/wcstoimax.d
+include mk/kill.d
+include mk/sigaction.d
+include mk/signal.d
+include mk/raise.d
+include mk/__signal_handler.d
+include mk/__sigsegv.d
+include mk/__signal.d
+include mk/frexp.d
+include mk/erfc.d
+include mk/rint.d
+include mk/asinh.d
+include mk/atanh.d
+include mk/copysign.d
+include mk/modf.d
+include mk/remquo.d
+include mk/lgamma.d
+include mk/acos.d
+include mk/exp2.d
+include mk/__fpclassify.d
+include mk/tanh.d
+include mk/fmod.d
+include mk/fmax.d
+include mk/pow.d
+include mk/nextafter.d
+include mk/llround.d
+include mk/lrint.d
+include mk/ilogb.d
+include mk/log10.d
+include mk/nan.d
+include mk/fma.d
+include mk/nearbyint.d
+include mk/log2.d
+include mk/round.d
+include mk/fdim.d
+include mk/lround.d
+include mk/atan2.d
+include mk/nexttoward.d
+include mk/tgamma.d
+include mk/asin.d
+include mk/scalbn.d
+include mk/cbrt.d
+include mk/sin.d
+include mk/sinh.d
+include mk/trunc.d
+include mk/log.d
+include mk/exp.d
+include mk/expm1.d
+include mk/floor.d
+include mk/ldexp.d
+include mk/fabs.d
+include mk/cosh.d
+include mk/sqrt.d
+include mk/scalbln.d
+include mk/hypot.d
+include mk/log1p.d
+include mk/tan.d
+include mk/atan.d
+include mk/llrint.d
+include mk/logb.d
+include mk/fmin.d
+include mk/ceil.d
+include mk/erf.d
+include mk/cos.d
+include mk/acosh.d
+include mk/aligned_alloc.d
+include mk/_Exit.d
+include mk/llabs.d
+include mk/labs.d
+include mk/wctomb.d
+include mk/strtoll.d
+include mk/ldiv.d
+include mk/quick_exit.d
+include mk/strtoul.d
+include mk/mbtowc.d
+include mk/strtof.d
+include mk/system.d
+include mk/abort.d
+include mk/abort_handler_s.d
+include mk/mbstowcs_s.d
+include mk/atoll.d
+include mk/wcstombs.d
+include mk/qsort.d
+include mk/strtold.d
+include mk/free.d
+include mk/strtoull.d
+include mk/mblen.d
+include mk/abs.d
+include mk/lldiv.d
+include mk/ignore_handler_s.d
+include mk/atof.d
+include mk/srand.d
+include mk/at_quick_exit.d
+include mk/mbstowcs.d
+include mk/wcstombs_s.d
+include mk/getenv.d
+include mk/qsort_s.d
+include mk/malloc.d
+include mk/atoi.d
+include mk/getenv_s.d
+include mk/exit.d
+include mk/rand.d
+include mk/bsearch.d
+include mk/set_constraint_handler_s.d
+include mk/strtol.d
+include mk/atexit.d
+include mk/atol.d
+include mk/__jkmalloc.d
+include mk/wctomb_s.d
+include mk/strtod.d
+include mk/bsearch_s.d
+include mk/realloc.d
+include mk/__stdlib.d
+include mk/calloc.d
+include mk/div.d
include mk/__sys.x86-64.s.d
-include mk/__setjmp.x86-64.s.d
include mk/__longjmp.x86-64.s.d
+include mk/__setjmp.x86-64.s.d
diff --git a/mk/calloc.d b/mk/calloc.d
index ca0779c7..db2aa9b9 100644
--- a/mk/calloc.d
+++ b/mk/calloc.d
@@ -4,6 +4,7 @@ libc.a(calloc.o): $(OBJDIR)/calloc.o
$(OBJDIR)/calloc.o: src/stdlib/calloc.c
$(OBJDIR)/calloc.o: src/stdlib/_stdlib.h
+$(OBJDIR)/calloc.o: src/stdlib/_jkmalloc.h
$(OBJDIR)/calloc.o:
@mkdir -p $(@D)
$(CC) -c -o $@ $(CFLAGS) src/stdlib/calloc.c
diff --git a/mk/deps.mk b/mk/deps.mk
index 55d8f523..f77b06bc 100644
--- a/mk/deps.mk
+++ b/mk/deps.mk
@@ -2,1895 +2,1903 @@
all:
-all: mk/atomic_fetch_and.d
-mk/atomic_fetch_and.d: src/stdatomic/atomic_fetch_and.c
- sh mk/deps.sh src/stdatomic/atomic_fetch_and.c
-
-all: mk/atomic_flag_clear_explicit.d
-mk/atomic_flag_clear_explicit.d: src/stdatomic/atomic_flag_clear_explicit.c
- sh mk/deps.sh src/stdatomic/atomic_flag_clear_explicit.c
-
-all: mk/atomic_compare_exchange_strong.d
-mk/atomic_compare_exchange_strong.d: src/stdatomic/atomic_compare_exchange_strong.c
- sh mk/deps.sh src/stdatomic/atomic_compare_exchange_strong.c
+all: mk/__undefined.d
+mk/__undefined.d: src/__undefined.c
+ sh mk/deps.sh src/__undefined.c
-all: mk/atomic_fetch_xor_explicit.d
-mk/atomic_fetch_xor_explicit.d: src/stdatomic/atomic_fetch_xor_explicit.c
- sh mk/deps.sh src/stdatomic/atomic_fetch_xor_explicit.c
+all: mk/ctan.d
+mk/ctan.d: src/complex/ctan.c
+ sh mk/deps.sh src/complex/ctan.c
-all: mk/atomic_compare_exchange_weak_explicit.d
-mk/atomic_compare_exchange_weak_explicit.d: src/stdatomic/atomic_compare_exchange_weak_explicit.c
- sh mk/deps.sh src/stdatomic/atomic_compare_exchange_weak_explicit.c
+all: mk/catan.d
+mk/catan.d: src/complex/catan.c
+ sh mk/deps.sh src/complex/catan.c
-all: mk/atomic_thread_fence.d
-mk/atomic_thread_fence.d: src/stdatomic/atomic_thread_fence.c
- sh mk/deps.sh src/stdatomic/atomic_thread_fence.c
+all: mk/ccos.d
+mk/ccos.d: src/complex/ccos.c
+ sh mk/deps.sh src/complex/ccos.c
-all: mk/atomic_load.d
-mk/atomic_load.d: src/stdatomic/atomic_load.c
- sh mk/deps.sh src/stdatomic/atomic_load.c
+all: mk/cabs.d
+mk/cabs.d: src/complex/cabs.c
+ sh mk/deps.sh src/complex/cabs.c
-all: mk/atomic_fetch_and_explicit.d
-mk/atomic_fetch_and_explicit.d: src/stdatomic/atomic_fetch_and_explicit.c
- sh mk/deps.sh src/stdatomic/atomic_fetch_and_explicit.c
+all: mk/creal.d
+mk/creal.d: src/complex/creal.c
+ sh mk/deps.sh src/complex/creal.c
-all: mk/atomic_store_explicit.d
-mk/atomic_store_explicit.d: src/stdatomic/atomic_store_explicit.c
- sh mk/deps.sh src/stdatomic/atomic_store_explicit.c
+all: mk/csinh.d
+mk/csinh.d: src/complex/csinh.c
+ sh mk/deps.sh src/complex/csinh.c
-all: mk/atomic_flag.d
-mk/atomic_flag.d: src/stdatomic/atomic_flag.c
- sh mk/deps.sh src/stdatomic/atomic_flag.c
+all: mk/catanh.d
+mk/catanh.d: src/complex/catanh.c
+ sh mk/deps.sh src/complex/catanh.c
-all: mk/atomic_fetch_sub.d
-mk/atomic_fetch_sub.d: src/stdatomic/atomic_fetch_sub.c
- sh mk/deps.sh src/stdatomic/atomic_fetch_sub.c
+all: mk/cpow.d
+mk/cpow.d: src/complex/cpow.c
+ sh mk/deps.sh src/complex/cpow.c
-all: mk/atomic_fetch_add.d
-mk/atomic_fetch_add.d: src/stdatomic/atomic_fetch_add.c
- sh mk/deps.sh src/stdatomic/atomic_fetch_add.c
+all: mk/clog.d
+mk/clog.d: src/complex/clog.c
+ sh mk/deps.sh src/complex/clog.c
-all: mk/atomic_fetch_add_explicit.d
-mk/atomic_fetch_add_explicit.d: src/stdatomic/atomic_fetch_add_explicit.c
- sh mk/deps.sh src/stdatomic/atomic_fetch_add_explicit.c
+all: mk/cimag.d
+mk/cimag.d: src/complex/cimag.c
+ sh mk/deps.sh src/complex/cimag.c
-all: mk/atomic_fetch_or_explicit.d
-mk/atomic_fetch_or_explicit.d: src/stdatomic/atomic_fetch_or_explicit.c
- sh mk/deps.sh src/stdatomic/atomic_fetch_or_explicit.c
+all: mk/csin.d
+mk/csin.d: src/complex/csin.c
+ sh mk/deps.sh src/complex/csin.c
-all: mk/atomic_exchange_explicit.d
-mk/atomic_exchange_explicit.d: src/stdatomic/atomic_exchange_explicit.c
- sh mk/deps.sh src/stdatomic/atomic_exchange_explicit.c
+all: mk/casinh.d
+mk/casinh.d: src/complex/casinh.c
+ sh mk/deps.sh src/complex/casinh.c
-all: mk/atomic_compare_exchange_strong_explicit.d
-mk/atomic_compare_exchange_strong_explicit.d: src/stdatomic/atomic_compare_exchange_strong_explicit.c
- sh mk/deps.sh src/stdatomic/atomic_compare_exchange_strong_explicit.c
+all: mk/cacos.d
+mk/cacos.d: src/complex/cacos.c
+ sh mk/deps.sh src/complex/cacos.c
-all: mk/atomic_compare_exchange_weak.d
-mk/atomic_compare_exchange_weak.d: src/stdatomic/atomic_compare_exchange_weak.c
- sh mk/deps.sh src/stdatomic/atomic_compare_exchange_weak.c
+all: mk/ctanh.d
+mk/ctanh.d: src/complex/ctanh.c
+ sh mk/deps.sh src/complex/ctanh.c
-all: mk/atomic_exchange.d
-mk/atomic_exchange.d: src/stdatomic/atomic_exchange.c
- sh mk/deps.sh src/stdatomic/atomic_exchange.c
+all: mk/cproj.d
+mk/cproj.d: src/complex/cproj.c
+ sh mk/deps.sh src/complex/cproj.c
-all: mk/atomic_signal_fence.d
-mk/atomic_signal_fence.d: src/stdatomic/atomic_signal_fence.c
- sh mk/deps.sh src/stdatomic/atomic_signal_fence.c
+all: mk/ccosh.d
+mk/ccosh.d: src/complex/ccosh.c
+ sh mk/deps.sh src/complex/ccosh.c
-all: mk/atomic_init.d
-mk/atomic_init.d: src/stdatomic/atomic_init.c
- sh mk/deps.sh src/stdatomic/atomic_init.c
+all: mk/carg.d
+mk/carg.d: src/complex/carg.c
+ sh mk/deps.sh src/complex/carg.c
-all: mk/atomic_fetch_sub_explicit.d
-mk/atomic_fetch_sub_explicit.d: src/stdatomic/atomic_fetch_sub_explicit.c
- sh mk/deps.sh src/stdatomic/atomic_fetch_sub_explicit.c
+all: mk/conj.d
+mk/conj.d: src/complex/conj.c
+ sh mk/deps.sh src/complex/conj.c
-all: mk/atomic_fetch_or.d
-mk/atomic_fetch_or.d: src/stdatomic/atomic_fetch_or.c
- sh mk/deps.sh src/stdatomic/atomic_fetch_or.c
+all: mk/cexp.d
+mk/cexp.d: src/complex/cexp.c
+ sh mk/deps.sh src/complex/cexp.c
-all: mk/atomic_is_lock_free.d
-mk/atomic_is_lock_free.d: src/stdatomic/atomic_is_lock_free.c
- sh mk/deps.sh src/stdatomic/atomic_is_lock_free.c
+all: mk/csqrt.d
+mk/csqrt.d: src/complex/csqrt.c
+ sh mk/deps.sh src/complex/csqrt.c
-all: mk/atomic_flag_test_and_set_explicit.d
-mk/atomic_flag_test_and_set_explicit.d: src/stdatomic/atomic_flag_test_and_set_explicit.c
- sh mk/deps.sh src/stdatomic/atomic_flag_test_and_set_explicit.c
+all: mk/cacosh.d
+mk/cacosh.d: src/complex/cacosh.c
+ sh mk/deps.sh src/complex/cacosh.c
-all: mk/atomic_store.d
-mk/atomic_store.d: src/stdatomic/atomic_store.c
- sh mk/deps.sh src/stdatomic/atomic_store.c
+all: mk/casin.d
+mk/casin.d: src/complex/casin.c
+ sh mk/deps.sh src/complex/casin.c
-all: mk/atomic_fetch_xor.d
-mk/atomic_fetch_xor.d: src/stdatomic/atomic_fetch_xor.c
- sh mk/deps.sh src/stdatomic/atomic_fetch_xor.c
+all: mk/__get_locale.d
+mk/__get_locale.d: src/locale/__get_locale.c
+ sh mk/deps.sh src/locale/__get_locale.c
-all: mk/atomic_flag_clear.d
-mk/atomic_flag_clear.d: src/stdatomic/atomic_flag_clear.c
- sh mk/deps.sh src/stdatomic/atomic_flag_clear.c
+all: mk/localeconv.d
+mk/localeconv.d: src/locale/localeconv.c
+ sh mk/deps.sh src/locale/localeconv.c
-all: mk/atomic_load_explicit.d
-mk/atomic_load_explicit.d: src/stdatomic/atomic_load_explicit.c
- sh mk/deps.sh src/stdatomic/atomic_load_explicit.c
+all: mk/setlocale.d
+mk/setlocale.d: src/locale/setlocale.c
+ sh mk/deps.sh src/locale/setlocale.c
-all: mk/atomic_flag_test_and_set.d
-mk/atomic_flag_test_and_set.d: src/stdatomic/atomic_flag_test_and_set.c
- sh mk/deps.sh src/stdatomic/atomic_flag_test_and_set.c
+all: mk/__load_locale.d
+mk/__load_locale.d: src/locale/__load_locale.c
+ sh mk/deps.sh src/locale/__load_locale.c
-all: mk/creal.d
-mk/creal.d: src/complex/creal.c
- sh mk/deps.sh src/complex/creal.c
+all: mk/__checked_call.d
+mk/__checked_call.d: src/__checked_call.c
+ sh mk/deps.sh src/__checked_call.c
-all: mk/ctan.d
-mk/ctan.d: src/complex/ctan.c
- sh mk/deps.sh src/complex/ctan.c
+all: mk/iswspace.d
+mk/iswspace.d: src/wctype/iswspace.c
+ sh mk/deps.sh src/wctype/iswspace.c
-all: mk/csqrt.d
-mk/csqrt.d: src/complex/csqrt.c
- sh mk/deps.sh src/complex/csqrt.c
+all: mk/iswcntrl.d
+mk/iswcntrl.d: src/wctype/iswcntrl.c
+ sh mk/deps.sh src/wctype/iswcntrl.c
-all: mk/catan.d
-mk/catan.d: src/complex/catan.c
- sh mk/deps.sh src/complex/catan.c
+all: mk/iswxdigit.d
+mk/iswxdigit.d: src/wctype/iswxdigit.c
+ sh mk/deps.sh src/wctype/iswxdigit.c
-all: mk/cimag.d
-mk/cimag.d: src/complex/cimag.c
- sh mk/deps.sh src/complex/cimag.c
+all: mk/wctype.d
+mk/wctype.d: src/wctype/wctype.c
+ sh mk/deps.sh src/wctype/wctype.c
-all: mk/csinh.d
-mk/csinh.d: src/complex/csinh.c
- sh mk/deps.sh src/complex/csinh.c
+all: mk/iswalnum.d
+mk/iswalnum.d: src/wctype/iswalnum.c
+ sh mk/deps.sh src/wctype/iswalnum.c
-all: mk/ccos.d
-mk/ccos.d: src/complex/ccos.c
- sh mk/deps.sh src/complex/ccos.c
+all: mk/iswprint.d
+mk/iswprint.d: src/wctype/iswprint.c
+ sh mk/deps.sh src/wctype/iswprint.c
-all: mk/conj.d
-mk/conj.d: src/complex/conj.c
- sh mk/deps.sh src/complex/conj.c
+all: mk/iswctype.d
+mk/iswctype.d: src/wctype/iswctype.c
+ sh mk/deps.sh src/wctype/iswctype.c
-all: mk/ccosh.d
-mk/ccosh.d: src/complex/ccosh.c
- sh mk/deps.sh src/complex/ccosh.c
+all: mk/towupper.d
+mk/towupper.d: src/wctype/towupper.c
+ sh mk/deps.sh src/wctype/towupper.c
-all: mk/catanh.d
-mk/catanh.d: src/complex/catanh.c
- sh mk/deps.sh src/complex/catanh.c
+all: mk/iswblank.d
+mk/iswblank.d: src/wctype/iswblank.c
+ sh mk/deps.sh src/wctype/iswblank.c
-all: mk/cabs.d
-mk/cabs.d: src/complex/cabs.c
- sh mk/deps.sh src/complex/cabs.c
+all: mk/iswdigit.d
+mk/iswdigit.d: src/wctype/iswdigit.c
+ sh mk/deps.sh src/wctype/iswdigit.c
-all: mk/cpow.d
-mk/cpow.d: src/complex/cpow.c
- sh mk/deps.sh src/complex/cpow.c
+all: mk/iswupper.d
+mk/iswupper.d: src/wctype/iswupper.c
+ sh mk/deps.sh src/wctype/iswupper.c
-all: mk/cexp.d
-mk/cexp.d: src/complex/cexp.c
- sh mk/deps.sh src/complex/cexp.c
+all: mk/iswlower.d
+mk/iswlower.d: src/wctype/iswlower.c
+ sh mk/deps.sh src/wctype/iswlower.c
-all: mk/ctanh.d
-mk/ctanh.d: src/complex/ctanh.c
- sh mk/deps.sh src/complex/ctanh.c
+all: mk/wctrans.d
+mk/wctrans.d: src/wctype/wctrans.c
+ sh mk/deps.sh src/wctype/wctrans.c
-all: mk/casin.d
-mk/casin.d: src/complex/casin.c
- sh mk/deps.sh src/complex/casin.c
+all: mk/towctrans.d
+mk/towctrans.d: src/wctype/towctrans.c
+ sh mk/deps.sh src/wctype/towctrans.c
-all: mk/casinh.d
-mk/casinh.d: src/complex/casinh.c
- sh mk/deps.sh src/complex/casinh.c
+all: mk/iswpunct.d
+mk/iswpunct.d: src/wctype/iswpunct.c
+ sh mk/deps.sh src/wctype/iswpunct.c
-all: mk/cacosh.d
-mk/cacosh.d: src/complex/cacosh.c
- sh mk/deps.sh src/complex/cacosh.c
+all: mk/iswalpha.d
+mk/iswalpha.d: src/wctype/iswalpha.c
+ sh mk/deps.sh src/wctype/iswalpha.c
-all: mk/carg.d
-mk/carg.d: src/complex/carg.c
- sh mk/deps.sh src/complex/carg.c
+all: mk/iswgraph.d
+mk/iswgraph.d: src/wctype/iswgraph.c
+ sh mk/deps.sh src/wctype/iswgraph.c
-all: mk/clog.d
-mk/clog.d: src/complex/clog.c
- sh mk/deps.sh src/complex/clog.c
+all: mk/towlower.d
+mk/towlower.d: src/wctype/towlower.c
+ sh mk/deps.sh src/wctype/towlower.c
-all: mk/cproj.d
-mk/cproj.d: src/complex/cproj.c
- sh mk/deps.sh src/complex/cproj.c
+all: mk/assert.d
+mk/assert.d: src/assert/assert.c
+ sh mk/deps.sh src/assert/assert.c
-all: mk/csin.d
-mk/csin.d: src/complex/csin.c
- sh mk/deps.sh src/complex/csin.c
+all: mk/__assert.d
+mk/__assert.d: src/assert/__assert.c
+ sh mk/deps.sh src/assert/__assert.c
-all: mk/cacos.d
-mk/cacos.d: src/complex/cacos.c
- sh mk/deps.sh src/complex/cacos.c
+all: mk/feraiseexcept.d
+mk/feraiseexcept.d: src/fenv/feraiseexcept.c
+ sh mk/deps.sh src/fenv/feraiseexcept.c
-all: mk/__undefined.d
-mk/__undefined.d: src/__undefined.c
- sh mk/deps.sh src/__undefined.c
+all: mk/fesetexceptflag.d
+mk/fesetexceptflag.d: src/fenv/fesetexceptflag.c
+ sh mk/deps.sh src/fenv/fesetexceptflag.c
-all: mk/strspn.d
-mk/strspn.d: src/string/strspn.c
- sh mk/deps.sh src/string/strspn.c
+all: mk/fetestexcept.d
+mk/fetestexcept.d: src/fenv/fetestexcept.c
+ sh mk/deps.sh src/fenv/fetestexcept.c
-all: mk/memmove_s.d
-mk/memmove_s.d: src/string/memmove_s.c
- sh mk/deps.sh src/string/memmove_s.c
+all: mk/fegetexceptflag.d
+mk/fegetexceptflag.d: src/fenv/fegetexceptflag.c
+ sh mk/deps.sh src/fenv/fegetexceptflag.c
-all: mk/strtok.d
-mk/strtok.d: src/string/strtok.c
- sh mk/deps.sh src/string/strtok.c
+all: mk/fesetround.d
+mk/fesetround.d: src/fenv/fesetround.c
+ sh mk/deps.sh src/fenv/fesetround.c
-all: mk/strcoll.d
-mk/strcoll.d: src/string/strcoll.c
- sh mk/deps.sh src/string/strcoll.c
+all: mk/__fenv.d
+mk/__fenv.d: src/fenv/__fenv.c
+ sh mk/deps.sh src/fenv/__fenv.c
-all: mk/strnlen_s.d
-mk/strnlen_s.d: src/string/strnlen_s.c
- sh mk/deps.sh src/string/strnlen_s.c
+all: mk/feupdateenv.d
+mk/feupdateenv.d: src/fenv/feupdateenv.c
+ sh mk/deps.sh src/fenv/feupdateenv.c
-all: mk/strncmp.d
-mk/strncmp.d: src/string/strncmp.c
- sh mk/deps.sh src/string/strncmp.c
+all: mk/feholdexcept.d
+mk/feholdexcept.d: src/fenv/feholdexcept.c
+ sh mk/deps.sh src/fenv/feholdexcept.c
-all: mk/memset.d
-mk/memset.d: src/string/memset.c
- sh mk/deps.sh src/string/memset.c
+all: mk/fesetenv.d
+mk/fesetenv.d: src/fenv/fesetenv.c
+ sh mk/deps.sh src/fenv/fesetenv.c
-all: mk/strerror.d
-mk/strerror.d: src/string/strerror.c
- sh mk/deps.sh src/string/strerror.c
+all: mk/feclearexcept.d
+mk/feclearexcept.d: src/fenv/feclearexcept.c
+ sh mk/deps.sh src/fenv/feclearexcept.c
-all: mk/strncpy_s.d
-mk/strncpy_s.d: src/string/strncpy_s.c
- sh mk/deps.sh src/string/strncpy_s.c
+all: mk/fegetround.d
+mk/fegetround.d: src/fenv/fegetround.c
+ sh mk/deps.sh src/fenv/fegetround.c
-all: mk/memcpy.d
-mk/memcpy.d: src/string/memcpy.c
- sh mk/deps.sh src/string/memcpy.c
+all: mk/fegetenv.d
+mk/fegetenv.d: src/fenv/fegetenv.c
+ sh mk/deps.sh src/fenv/fegetenv.c
-all: mk/strxfrm.d
-mk/strxfrm.d: src/string/strxfrm.c
- sh mk/deps.sh src/string/strxfrm.c
+all: mk/atomic_store.d
+mk/atomic_store.d: src/stdatomic/atomic_store.c
+ sh mk/deps.sh src/stdatomic/atomic_store.c
-all: mk/memmove.d
-mk/memmove.d: src/string/memmove.c
- sh mk/deps.sh src/string/memmove.c
+all: mk/atomic_compare_exchange_weak.d
+mk/atomic_compare_exchange_weak.d: src/stdatomic/atomic_compare_exchange_weak.c
+ sh mk/deps.sh src/stdatomic/atomic_compare_exchange_weak.c
-all: mk/memcpy_s.d
-mk/memcpy_s.d: src/string/memcpy_s.c
- sh mk/deps.sh src/string/memcpy_s.c
+all: mk/atomic_fetch_xor.d
+mk/atomic_fetch_xor.d: src/stdatomic/atomic_fetch_xor.c
+ sh mk/deps.sh src/stdatomic/atomic_fetch_xor.c
-all: mk/strcpy_s.d
-mk/strcpy_s.d: src/string/strcpy_s.c
- sh mk/deps.sh src/string/strcpy_s.c
+all: mk/atomic_thread_fence.d
+mk/atomic_thread_fence.d: src/stdatomic/atomic_thread_fence.c
+ sh mk/deps.sh src/stdatomic/atomic_thread_fence.c
-all: mk/strerrorlen_s.d
-mk/strerrorlen_s.d: src/string/strerrorlen_s.c
- sh mk/deps.sh src/string/strerrorlen_s.c
+all: mk/atomic_flag_clear.d
+mk/atomic_flag_clear.d: src/stdatomic/atomic_flag_clear.c
+ sh mk/deps.sh src/stdatomic/atomic_flag_clear.c
-all: mk/strpbrk.d
-mk/strpbrk.d: src/string/strpbrk.c
- sh mk/deps.sh src/string/strpbrk.c
+all: mk/atomic_flag.d
+mk/atomic_flag.d: src/stdatomic/atomic_flag.c
+ sh mk/deps.sh src/stdatomic/atomic_flag.c
-all: mk/memcmp.d
-mk/memcmp.d: src/string/memcmp.c
- sh mk/deps.sh src/string/memcmp.c
+all: mk/atomic_fetch_sub_explicit.d
+mk/atomic_fetch_sub_explicit.d: src/stdatomic/atomic_fetch_sub_explicit.c
+ sh mk/deps.sh src/stdatomic/atomic_fetch_sub_explicit.c
-all: mk/strcmp.d
-mk/strcmp.d: src/string/strcmp.c
- sh mk/deps.sh src/string/strcmp.c
+all: mk/atomic_compare_exchange_strong_explicit.d
+mk/atomic_compare_exchange_strong_explicit.d: src/stdatomic/atomic_compare_exchange_strong_explicit.c
+ sh mk/deps.sh src/stdatomic/atomic_compare_exchange_strong_explicit.c
-all: mk/strcat.d
-mk/strcat.d: src/string/strcat.c
- sh mk/deps.sh src/string/strcat.c
+all: mk/atomic_fetch_or_explicit.d
+mk/atomic_fetch_or_explicit.d: src/stdatomic/atomic_fetch_or_explicit.c
+ sh mk/deps.sh src/stdatomic/atomic_fetch_or_explicit.c
-all: mk/strncat_s.d
-mk/strncat_s.d: src/string/strncat_s.c
- sh mk/deps.sh src/string/strncat_s.c
+all: mk/atomic_compare_exchange_strong.d
+mk/atomic_compare_exchange_strong.d: src/stdatomic/atomic_compare_exchange_strong.c
+ sh mk/deps.sh src/stdatomic/atomic_compare_exchange_strong.c
-all: mk/strrchr.d
-mk/strrchr.d: src/string/strrchr.c
- sh mk/deps.sh src/string/strrchr.c
+all: mk/atomic_load.d
+mk/atomic_load.d: src/stdatomic/atomic_load.c
+ sh mk/deps.sh src/stdatomic/atomic_load.c
-all: mk/strcpy.d
-mk/strcpy.d: src/string/strcpy.c
- sh mk/deps.sh src/string/strcpy.c
+all: mk/atomic_store_explicit.d
+mk/atomic_store_explicit.d: src/stdatomic/atomic_store_explicit.c
+ sh mk/deps.sh src/stdatomic/atomic_store_explicit.c
-all: mk/strtok_s.d
-mk/strtok_s.d: src/string/strtok_s.c
- sh mk/deps.sh src/string/strtok_s.c
+all: mk/atomic_fetch_sub.d
+mk/atomic_fetch_sub.d: src/stdatomic/atomic_fetch_sub.c
+ sh mk/deps.sh src/stdatomic/atomic_fetch_sub.c
-all: mk/strerror_s.d
-mk/strerror_s.d: src/string/strerror_s.c
- sh mk/deps.sh src/string/strerror_s.c
+all: mk/atomic_is_lock_free.d
+mk/atomic_is_lock_free.d: src/stdatomic/atomic_is_lock_free.c
+ sh mk/deps.sh src/stdatomic/atomic_is_lock_free.c
-all: mk/strncpy.d
-mk/strncpy.d: src/string/strncpy.c
- sh mk/deps.sh src/string/strncpy.c
+all: mk/atomic_exchange.d
+mk/atomic_exchange.d: src/stdatomic/atomic_exchange.c
+ sh mk/deps.sh src/stdatomic/atomic_exchange.c
-all: mk/strstr.d
-mk/strstr.d: src/string/strstr.c
- sh mk/deps.sh src/string/strstr.c
+all: mk/atomic_fetch_or.d
+mk/atomic_fetch_or.d: src/stdatomic/atomic_fetch_or.c
+ sh mk/deps.sh src/stdatomic/atomic_fetch_or.c
-all: mk/strcat_s.d
-mk/strcat_s.d: src/string/strcat_s.c
- sh mk/deps.sh src/string/strcat_s.c
+all: mk/atomic_load_explicit.d
+mk/atomic_load_explicit.d: src/stdatomic/atomic_load_explicit.c
+ sh mk/deps.sh src/stdatomic/atomic_load_explicit.c
-all: mk/memchr.d
-mk/memchr.d: src/string/memchr.c
- sh mk/deps.sh src/string/memchr.c
+all: mk/atomic_flag_test_and_set_explicit.d
+mk/atomic_flag_test_and_set_explicit.d: src/stdatomic/atomic_flag_test_and_set_explicit.c
+ sh mk/deps.sh src/stdatomic/atomic_flag_test_and_set_explicit.c
-all: mk/strcspn.d
-mk/strcspn.d: src/string/strcspn.c
- sh mk/deps.sh src/string/strcspn.c
+all: mk/atomic_exchange_explicit.d
+mk/atomic_exchange_explicit.d: src/stdatomic/atomic_exchange_explicit.c
+ sh mk/deps.sh src/stdatomic/atomic_exchange_explicit.c
-all: mk/strlen.d
-mk/strlen.d: src/string/strlen.c
- sh mk/deps.sh src/string/strlen.c
+all: mk/atomic_signal_fence.d
+mk/atomic_signal_fence.d: src/stdatomic/atomic_signal_fence.c
+ sh mk/deps.sh src/stdatomic/atomic_signal_fence.c
-all: mk/strchr.d
-mk/strchr.d: src/string/strchr.c
- sh mk/deps.sh src/string/strchr.c
+all: mk/atomic_init.d
+mk/atomic_init.d: src/stdatomic/atomic_init.c
+ sh mk/deps.sh src/stdatomic/atomic_init.c
-all: mk/strncat.d
-mk/strncat.d: src/string/strncat.c
- sh mk/deps.sh src/string/strncat.c
+all: mk/atomic_fetch_and.d
+mk/atomic_fetch_and.d: src/stdatomic/atomic_fetch_and.c
+ sh mk/deps.sh src/stdatomic/atomic_fetch_and.c
-all: mk/memset_s.d
-mk/memset_s.d: src/string/memset_s.c
- sh mk/deps.sh src/string/memset_s.c
+all: mk/atomic_fetch_and_explicit.d
+mk/atomic_fetch_and_explicit.d: src/stdatomic/atomic_fetch_and_explicit.c
+ sh mk/deps.sh src/stdatomic/atomic_fetch_and_explicit.c
-all: mk/wcsrtombs.d
-mk/wcsrtombs.d: src/wchar/wcsrtombs.c
- sh mk/deps.sh src/wchar/wcsrtombs.c
+all: mk/atomic_compare_exchange_weak_explicit.d
+mk/atomic_compare_exchange_weak_explicit.d: src/stdatomic/atomic_compare_exchange_weak_explicit.c
+ sh mk/deps.sh src/stdatomic/atomic_compare_exchange_weak_explicit.c
-all: mk/btowc.d
-mk/btowc.d: src/wchar/btowc.c
- sh mk/deps.sh src/wchar/btowc.c
+all: mk/atomic_fetch_add_explicit.d
+mk/atomic_fetch_add_explicit.d: src/stdatomic/atomic_fetch_add_explicit.c
+ sh mk/deps.sh src/stdatomic/atomic_fetch_add_explicit.c
-all: mk/wctob.d
-mk/wctob.d: src/wchar/wctob.c
- sh mk/deps.sh src/wchar/wctob.c
+all: mk/atomic_fetch_add.d
+mk/atomic_fetch_add.d: src/stdatomic/atomic_fetch_add.c
+ sh mk/deps.sh src/stdatomic/atomic_fetch_add.c
-all: mk/wcslen.d
-mk/wcslen.d: src/wchar/wcslen.c
- sh mk/deps.sh src/wchar/wcslen.c
+all: mk/atomic_flag_clear_explicit.d
+mk/atomic_flag_clear_explicit.d: src/stdatomic/atomic_flag_clear_explicit.c
+ sh mk/deps.sh src/stdatomic/atomic_flag_clear_explicit.c
-all: mk/wcsspn.d
-mk/wcsspn.d: src/wchar/wcsspn.c
- sh mk/deps.sh src/wchar/wcsspn.c
+all: mk/atomic_flag_test_and_set.d
+mk/atomic_flag_test_and_set.d: src/stdatomic/atomic_flag_test_and_set.c
+ sh mk/deps.sh src/stdatomic/atomic_flag_test_and_set.c
-all: mk/wcsncat.d
-mk/wcsncat.d: src/wchar/wcsncat.c
- sh mk/deps.sh src/wchar/wcsncat.c
+all: mk/atomic_fetch_xor_explicit.d
+mk/atomic_fetch_xor_explicit.d: src/stdatomic/atomic_fetch_xor_explicit.c
+ sh mk/deps.sh src/stdatomic/atomic_fetch_xor_explicit.c
-all: mk/wcscpy_s.d
-mk/wcscpy_s.d: src/wchar/wcscpy_s.c
- sh mk/deps.sh src/wchar/wcscpy_s.c
+all: mk/__main.d
+mk/__main.d: src/__main.c
+ sh mk/deps.sh src/__main.c
-all: mk/swscanf.d
-mk/swscanf.d: src/wchar/swscanf.c
- sh mk/deps.sh src/wchar/swscanf.c
+all: mk/__errno.d
+mk/__errno.d: src/errno/__errno.c
+ sh mk/deps.sh src/errno/__errno.c
-all: mk/getwc.d
-mk/getwc.d: src/wchar/getwc.c
- sh mk/deps.sh src/wchar/getwc.c
+all: mk/isspace.d
+mk/isspace.d: src/ctype/isspace.c
+ sh mk/deps.sh src/ctype/isspace.c
-all: mk/vfwprintf.d
-mk/vfwprintf.d: src/wchar/vfwprintf.c
- sh mk/deps.sh src/wchar/vfwprintf.c
+all: mk/isalpha.d
+mk/isalpha.d: src/ctype/isalpha.c
+ sh mk/deps.sh src/ctype/isalpha.c
-all: mk/wcstoll.d
-mk/wcstoll.d: src/wchar/wcstoll.c
- sh mk/deps.sh src/wchar/wcstoll.c
+all: mk/isupper.d
+mk/isupper.d: src/ctype/isupper.c
+ sh mk/deps.sh src/ctype/isupper.c
-all: mk/wmemcpy.d
-mk/wmemcpy.d: src/wchar/wmemcpy.c
- sh mk/deps.sh src/wchar/wmemcpy.c
+all: mk/iscntrl.d
+mk/iscntrl.d: src/ctype/iscntrl.c
+ sh mk/deps.sh src/ctype/iscntrl.c
-all: mk/fgetws.d
-mk/fgetws.d: src/wchar/fgetws.c
- sh mk/deps.sh src/wchar/fgetws.c
+all: mk/toupper.d
+mk/toupper.d: src/ctype/toupper.c
+ sh mk/deps.sh src/ctype/toupper.c
-all: mk/fwprintf_s.d
-mk/fwprintf_s.d: src/wchar/fwprintf_s.c
- sh mk/deps.sh src/wchar/fwprintf_s.c
+all: mk/isblank.d
+mk/isblank.d: src/ctype/isblank.c
+ sh mk/deps.sh src/ctype/isblank.c
-all: mk/wcschr.d
-mk/wcschr.d: src/wchar/wcschr.c
- sh mk/deps.sh src/wchar/wcschr.c
+all: mk/isgraph.d
+mk/isgraph.d: src/ctype/isgraph.c
+ sh mk/deps.sh src/ctype/isgraph.c
-all: mk/wmemcpy_s.d
-mk/wmemcpy_s.d: src/wchar/wmemcpy_s.c
- sh mk/deps.sh src/wchar/wmemcpy_s.c
+all: mk/isalnum.d
+mk/isalnum.d: src/ctype/isalnum.c
+ sh mk/deps.sh src/ctype/isalnum.c
-all: mk/vfwscanf_s.d
-mk/vfwscanf_s.d: src/wchar/vfwscanf_s.c
- sh mk/deps.sh src/wchar/vfwscanf_s.c
+all: mk/ispunct.d
+mk/ispunct.d: src/ctype/ispunct.c
+ sh mk/deps.sh src/ctype/ispunct.c
-all: mk/wcstof.d
-mk/wcstof.d: src/wchar/wcstof.c
- sh mk/deps.sh src/wchar/wcstof.c
+all: mk/isdigit.d
+mk/isdigit.d: src/ctype/isdigit.c
+ sh mk/deps.sh src/ctype/isdigit.c
-all: mk/wmemcmp.d
-mk/wmemcmp.d: src/wchar/wmemcmp.c
- sh mk/deps.sh src/wchar/wmemcmp.c
+all: mk/tolower.d
+mk/tolower.d: src/ctype/tolower.c
+ sh mk/deps.sh src/ctype/tolower.c
-all: mk/vswscanf.d
-mk/vswscanf.d: src/wchar/vswscanf.c
- sh mk/deps.sh src/wchar/vswscanf.c
+all: mk/isxdigit.d
+mk/isxdigit.d: src/ctype/isxdigit.c
+ sh mk/deps.sh src/ctype/isxdigit.c
-all: mk/fputwc.d
-mk/fputwc.d: src/wchar/fputwc.c
- sh mk/deps.sh src/wchar/fputwc.c
+all: mk/isprint.d
+mk/isprint.d: src/ctype/isprint.c
+ sh mk/deps.sh src/ctype/isprint.c
-all: mk/swprintf_s.d
-mk/swprintf_s.d: src/wchar/swprintf_s.c
- sh mk/deps.sh src/wchar/swprintf_s.c
+all: mk/islower.d
+mk/islower.d: src/ctype/islower.c
+ sh mk/deps.sh src/ctype/islower.c
-all: mk/fwprintf.d
-mk/fwprintf.d: src/wchar/fwprintf.c
- sh mk/deps.sh src/wchar/fwprintf.c
+all: mk/mbsrtowcs.d
+mk/mbsrtowcs.d: src/wchar/mbsrtowcs.c
+ sh mk/deps.sh src/wchar/mbsrtowcs.c
-all: mk/wcscpy.d
-mk/wcscpy.d: src/wchar/wcscpy.c
- sh mk/deps.sh src/wchar/wcscpy.c
+all: mk/mbrtowc.d
+mk/mbrtowc.d: src/wchar/mbrtowc.c
+ sh mk/deps.sh src/wchar/mbrtowc.c
-all: mk/wcstok.d
-mk/wcstok.d: src/wchar/wcstok.c
- sh mk/deps.sh src/wchar/wcstok.c
+all: mk/wcstod.d
+mk/wcstod.d: src/wchar/wcstod.c
+ sh mk/deps.sh src/wchar/wcstod.c
-all: mk/fwscanf_s.d
-mk/fwscanf_s.d: src/wchar/fwscanf_s.c
- sh mk/deps.sh src/wchar/fwscanf_s.c
+all: mk/wcscat.d
+mk/wcscat.d: src/wchar/wcscat.c
+ sh mk/deps.sh src/wchar/wcscat.c
all: mk/vfwprintf_s.d
mk/vfwprintf_s.d: src/wchar/vfwprintf_s.c
sh mk/deps.sh src/wchar/vfwprintf_s.c
-all: mk/wmemset.d
-mk/wmemset.d: src/wchar/wmemset.c
- sh mk/deps.sh src/wchar/wmemset.c
-
-all: mk/wprintf_s.d
-mk/wprintf_s.d: src/wchar/wprintf_s.c
- sh mk/deps.sh src/wchar/wprintf_s.c
-
-all: mk/snwprintf_s.d
-mk/snwprintf_s.d: src/wchar/snwprintf_s.c
- sh mk/deps.sh src/wchar/snwprintf_s.c
+all: mk/wcsxfrm.d
+mk/wcsxfrm.d: src/wchar/wcsxfrm.c
+ sh mk/deps.sh src/wchar/wcsxfrm.c
-all: mk/wcsncpy.d
-mk/wcsncpy.d: src/wchar/wcsncpy.c
- sh mk/deps.sh src/wchar/wcsncpy.c
+all: mk/vswscanf.d
+mk/vswscanf.d: src/wchar/vswscanf.c
+ sh mk/deps.sh src/wchar/vswscanf.c
-all: mk/wmemchr.d
-mk/wmemchr.d: src/wchar/wmemchr.c
- sh mk/deps.sh src/wchar/wmemchr.c
+all: mk/btowc.d
+mk/btowc.d: src/wchar/btowc.c
+ sh mk/deps.sh src/wchar/btowc.c
-all: mk/putwc.d
-mk/putwc.d: src/wchar/putwc.c
- sh mk/deps.sh src/wchar/putwc.c
+all: mk/fgetwc.d
+mk/fgetwc.d: src/wchar/fgetwc.c
+ sh mk/deps.sh src/wchar/fgetwc.c
-all: mk/mbrlen.d
-mk/mbrlen.d: src/wchar/mbrlen.c
- sh mk/deps.sh src/wchar/mbrlen.c
+all: mk/wcrtomb_s.d
+mk/wcrtomb_s.d: src/wchar/wcrtomb_s.c
+ sh mk/deps.sh src/wchar/wcrtomb_s.c
-all: mk/mbsrtowcs_s.d
-mk/mbsrtowcs_s.d: src/wchar/mbsrtowcs_s.c
- sh mk/deps.sh src/wchar/mbsrtowcs_s.c
+all: mk/wcrtomb.d
+mk/wcrtomb.d: src/wchar/wcrtomb.c
+ sh mk/deps.sh src/wchar/wcrtomb.c
-all: mk/vwscanf_s.d
-mk/vwscanf_s.d: src/wchar/vwscanf_s.c
- sh mk/deps.sh src/wchar/vwscanf_s.c
+all: mk/wctob.d
+mk/wctob.d: src/wchar/wctob.c
+ sh mk/deps.sh src/wchar/wctob.c
-all: mk/vwscanf.d
-mk/vwscanf.d: src/wchar/vwscanf.c
- sh mk/deps.sh src/wchar/vwscanf.c
+all: mk/wcstold.d
+mk/wcstold.d: src/wchar/wcstold.c
+ sh mk/deps.sh src/wchar/wcstold.c
-all: mk/fwide.d
-mk/fwide.d: src/wchar/fwide.c
- sh mk/deps.sh src/wchar/fwide.c
+all: mk/fgetws.d
+mk/fgetws.d: src/wchar/fgetws.c
+ sh mk/deps.sh src/wchar/fgetws.c
-all: mk/wcstol.d
-mk/wcstol.d: src/wchar/wcstol.c
- sh mk/deps.sh src/wchar/wcstol.c
+all: mk/wcsstr.d
+mk/wcsstr.d: src/wchar/wcsstr.c
+ sh mk/deps.sh src/wchar/wcsstr.c
-all: mk/wprintf.d
-mk/wprintf.d: src/wchar/wprintf.c
- sh mk/deps.sh src/wchar/wprintf.c
+all: mk/vsnwprintf_s.d
+mk/vsnwprintf_s.d: src/wchar/vsnwprintf_s.c
+ sh mk/deps.sh src/wchar/vsnwprintf_s.c
-all: mk/getwchar.d
-mk/getwchar.d: src/wchar/getwchar.c
- sh mk/deps.sh src/wchar/getwchar.c
+all: mk/fwscanf_s.d
+mk/fwscanf_s.d: src/wchar/fwscanf_s.c
+ sh mk/deps.sh src/wchar/fwscanf_s.c
-all: mk/wcspbrk.d
-mk/wcspbrk.d: src/wchar/wcspbrk.c
- sh mk/deps.sh src/wchar/wcspbrk.c
+all: mk/swprintf.d
+mk/swprintf.d: src/wchar/swprintf.c
+ sh mk/deps.sh src/wchar/swprintf.c
all: mk/wcsncat_s.d
mk/wcsncat_s.d: src/wchar/wcsncat_s.c
sh mk/deps.sh src/wchar/wcsncat_s.c
-all: mk/wcrtomb_s.d
-mk/wcrtomb_s.d: src/wchar/wcrtomb_s.c
- sh mk/deps.sh src/wchar/wcrtomb_s.c
-
-all: mk/mbsinit.d
-mk/mbsinit.d: src/wchar/mbsinit.c
- sh mk/deps.sh src/wchar/mbsinit.c
+all: mk/wcstok_s.d
+mk/wcstok_s.d: src/wchar/wcstok_s.c
+ sh mk/deps.sh src/wchar/wcstok_s.c
-all: mk/swscanf_s.d
-mk/swscanf_s.d: src/wchar/swscanf_s.c
- sh mk/deps.sh src/wchar/swscanf_s.c
+all: mk/wcschr.d
+mk/wcschr.d: src/wchar/wcschr.c
+ sh mk/deps.sh src/wchar/wcschr.c
-all: mk/wcscat.d
-mk/wcscat.d: src/wchar/wcscat.c
- sh mk/deps.sh src/wchar/wcscat.c
+all: mk/swprintf_s.d
+mk/swprintf_s.d: src/wchar/swprintf_s.c
+ sh mk/deps.sh src/wchar/swprintf_s.c
-all: mk/ungetwc.d
-mk/ungetwc.d: src/wchar/ungetwc.c
- sh mk/deps.sh src/wchar/ungetwc.c
+all: mk/vfwscanf.d
+mk/vfwscanf.d: src/wchar/vfwscanf.c
+ sh mk/deps.sh src/wchar/vfwscanf.c
all: mk/fputws.d
mk/fputws.d: src/wchar/fputws.c
sh mk/deps.sh src/wchar/fputws.c
-all: mk/wcstok_s.d
-mk/wcstok_s.d: src/wchar/wcstok_s.c
- sh mk/deps.sh src/wchar/wcstok_s.c
-
-all: mk/vswscanf_s.d
-mk/vswscanf_s.d: src/wchar/vswscanf_s.c
- sh mk/deps.sh src/wchar/vswscanf_s.c
+all: mk/wmemchr.d
+mk/wmemchr.d: src/wchar/wmemchr.c
+ sh mk/deps.sh src/wchar/wmemchr.c
-all: mk/wcsncmp.d
-mk/wcsncmp.d: src/wchar/wcsncmp.c
- sh mk/deps.sh src/wchar/wcsncmp.c
+all: mk/wcsncat.d
+mk/wcsncat.d: src/wchar/wcsncat.c
+ sh mk/deps.sh src/wchar/wcsncat.c
all: mk/vswprintf.d
mk/vswprintf.d: src/wchar/vswprintf.c
sh mk/deps.sh src/wchar/vswprintf.c
-all: mk/wmemmove_s.d
-mk/wmemmove_s.d: src/wchar/wmemmove_s.c
- sh mk/deps.sh src/wchar/wmemmove_s.c
+all: mk/wcscat_s.d
+mk/wcscat_s.d: src/wchar/wcscat_s.c
+ sh mk/deps.sh src/wchar/wcscat_s.c
-all: mk/putwchar.d
-mk/putwchar.d: src/wchar/putwchar.c
- sh mk/deps.sh src/wchar/putwchar.c
+all: mk/mbsrtowcs_s.d
+mk/mbsrtowcs_s.d: src/wchar/mbsrtowcs_s.c
+ sh mk/deps.sh src/wchar/mbsrtowcs_s.c
-all: mk/wcstoull.d
-mk/wcstoull.d: src/wchar/wcstoull.c
- sh mk/deps.sh src/wchar/wcstoull.c
+all: mk/wcsncmp.d
+mk/wcsncmp.d: src/wchar/wcsncmp.c
+ sh mk/deps.sh src/wchar/wcsncmp.c
-all: mk/vfwscanf.d
-mk/vfwscanf.d: src/wchar/vfwscanf.c
- sh mk/deps.sh src/wchar/vfwscanf.c
+all: mk/wcscmp.d
+mk/wcscmp.d: src/wchar/wcscmp.c
+ sh mk/deps.sh src/wchar/wcscmp.c
+
+all: mk/vfwprintf.d
+mk/vfwprintf.d: src/wchar/vfwprintf.c
+ sh mk/deps.sh src/wchar/vfwprintf.c
+
+all: mk/vwscanf_s.d
+mk/vwscanf_s.d: src/wchar/vwscanf_s.c
+ sh mk/deps.sh src/wchar/vwscanf_s.c
all: mk/wcscspn.d
mk/wcscspn.d: src/wchar/wcscspn.c
sh mk/deps.sh src/wchar/wcscspn.c
-all: mk/vsnwprintf_s.d
-mk/vsnwprintf_s.d: src/wchar/vsnwprintf_s.c
- sh mk/deps.sh src/wchar/vsnwprintf_s.c
+all: mk/wcstoll.d
+mk/wcstoll.d: src/wchar/wcstoll.c
+ sh mk/deps.sh src/wchar/wcstoll.c
-all: mk/mbrtowc.d
-mk/mbrtowc.d: src/wchar/mbrtowc.c
- sh mk/deps.sh src/wchar/mbrtowc.c
+all: mk/wcstok.d
+mk/wcstok.d: src/wchar/wcstok.c
+ sh mk/deps.sh src/wchar/wcstok.c
-all: mk/wcsftime.d
-mk/wcsftime.d: src/wchar/wcsftime.c
- sh mk/deps.sh src/wchar/wcsftime.c
+all: mk/wcscpy_s.d
+mk/wcscpy_s.d: src/wchar/wcscpy_s.c
+ sh mk/deps.sh src/wchar/wcscpy_s.c
-all: mk/wcsrchr.d
-mk/wcsrchr.d: src/wchar/wcsrchr.c
- sh mk/deps.sh src/wchar/wcsrchr.c
+all: mk/vwprintf.d
+mk/vwprintf.d: src/wchar/vwprintf.c
+ sh mk/deps.sh src/wchar/vwprintf.c
-all: mk/mbsrtowcs.d
-mk/mbsrtowcs.d: src/wchar/mbsrtowcs.c
- sh mk/deps.sh src/wchar/mbsrtowcs.c
+all: mk/vwprintf_s.d
+mk/vwprintf_s.d: src/wchar/vwprintf_s.c
+ sh mk/deps.sh src/wchar/vwprintf_s.c
+
+all: mk/wcstoull.d
+mk/wcstoull.d: src/wchar/wcstoull.c
+ sh mk/deps.sh src/wchar/wcstoull.c
+
+all: mk/fwprintf.d
+mk/fwprintf.d: src/wchar/fwprintf.c
+ sh mk/deps.sh src/wchar/fwprintf.c
+
+all: mk/wscanf_s.d
+mk/wscanf_s.d: src/wchar/wscanf_s.c
+ sh mk/deps.sh src/wchar/wscanf_s.c
all: mk/wcsrtombs_s.d
mk/wcsrtombs_s.d: src/wchar/wcsrtombs_s.c
sh mk/deps.sh src/wchar/wcsrtombs_s.c
-all: mk/wcsstr.d
-mk/wcsstr.d: src/wchar/wcsstr.c
- sh mk/deps.sh src/wchar/wcsstr.c
+all: mk/putwchar.d
+mk/putwchar.d: src/wchar/putwchar.c
+ sh mk/deps.sh src/wchar/putwchar.c
-all: mk/swprintf.d
-mk/swprintf.d: src/wchar/swprintf.c
- sh mk/deps.sh src/wchar/swprintf.c
+all: mk/wcstof.d
+mk/wcstof.d: src/wchar/wcstof.c
+ sh mk/deps.sh src/wchar/wcstof.c
-all: mk/wcsnlen_s.d
-mk/wcsnlen_s.d: src/wchar/wcsnlen_s.c
- sh mk/deps.sh src/wchar/wcsnlen_s.c
+all: mk/fwprintf_s.d
+mk/fwprintf_s.d: src/wchar/fwprintf_s.c
+ sh mk/deps.sh src/wchar/fwprintf_s.c
+
+all: mk/swscanf.d
+mk/swscanf.d: src/wchar/swscanf.c
+ sh mk/deps.sh src/wchar/swscanf.c
+
+all: mk/wcsrchr.d
+mk/wcsrchr.d: src/wchar/wcsrchr.c
+ sh mk/deps.sh src/wchar/wcsrchr.c
all: mk/wscanf.d
mk/wscanf.d: src/wchar/wscanf.c
sh mk/deps.sh src/wchar/wscanf.c
-all: mk/wcsxfrm.d
-mk/wcsxfrm.d: src/wchar/wcsxfrm.c
- sh mk/deps.sh src/wchar/wcsxfrm.c
-
-all: mk/wmemmove.d
-mk/wmemmove.d: src/wchar/wmemmove.c
- sh mk/deps.sh src/wchar/wmemmove.c
-
-all: mk/fwscanf.d
-mk/fwscanf.d: src/wchar/fwscanf.c
- sh mk/deps.sh src/wchar/fwscanf.c
+all: mk/wcscpy.d
+mk/wcscpy.d: src/wchar/wcscpy.c
+ sh mk/deps.sh src/wchar/wcscpy.c
-all: mk/fgetwc.d
-mk/fgetwc.d: src/wchar/fgetwc.c
- sh mk/deps.sh src/wchar/fgetwc.c
+all: mk/wcspbrk.d
+mk/wcspbrk.d: src/wchar/wcspbrk.c
+ sh mk/deps.sh src/wchar/wcspbrk.c
-all: mk/vwprintf_s.d
-mk/vwprintf_s.d: src/wchar/vwprintf_s.c
- sh mk/deps.sh src/wchar/vwprintf_s.c
+all: mk/wcslen.d
+mk/wcslen.d: src/wchar/wcslen.c
+ sh mk/deps.sh src/wchar/wcslen.c
-all: mk/wcscmp.d
-mk/wcscmp.d: src/wchar/wcscmp.c
- sh mk/deps.sh src/wchar/wcscmp.c
+all: mk/wcsnlen_s.d
+mk/wcsnlen_s.d: src/wchar/wcsnlen_s.c
+ sh mk/deps.sh src/wchar/wcsnlen_s.c
-all: mk/wcstold.d
-mk/wcstold.d: src/wchar/wcstold.c
- sh mk/deps.sh src/wchar/wcstold.c
+all: mk/mbrlen.d
+mk/mbrlen.d: src/wchar/mbrlen.c
+ sh mk/deps.sh src/wchar/mbrlen.c
-all: mk/wcstod.d
-mk/wcstod.d: src/wchar/wcstod.c
- sh mk/deps.sh src/wchar/wcstod.c
+all: mk/putwc.d
+mk/putwc.d: src/wchar/putwc.c
+ sh mk/deps.sh src/wchar/putwc.c
all: mk/wcsncpy_s.d
mk/wcsncpy_s.d: src/wchar/wcsncpy_s.c
sh mk/deps.sh src/wchar/wcsncpy_s.c
-all: mk/wcrtomb.d
-mk/wcrtomb.d: src/wchar/wcrtomb.c
- sh mk/deps.sh src/wchar/wcrtomb.c
-
-all: mk/wscanf_s.d
-mk/wscanf_s.d: src/wchar/wscanf_s.c
- sh mk/deps.sh src/wchar/wscanf_s.c
+all: mk/wmemmove.d
+mk/wmemmove.d: src/wchar/wmemmove.c
+ sh mk/deps.sh src/wchar/wmemmove.c
-all: mk/wcscat_s.d
-mk/wcscat_s.d: src/wchar/wcscat_s.c
- sh mk/deps.sh src/wchar/wcscat_s.c
+all: mk/wcsftime.d
+mk/wcsftime.d: src/wchar/wcsftime.c
+ sh mk/deps.sh src/wchar/wcsftime.c
-all: mk/wcstoul.d
-mk/wcstoul.d: src/wchar/wcstoul.c
- sh mk/deps.sh src/wchar/wcstoul.c
+all: mk/fwide.d
+mk/fwide.d: src/wchar/fwide.c
+ sh mk/deps.sh src/wchar/fwide.c
all: mk/vswprintf_s.d
mk/vswprintf_s.d: src/wchar/vswprintf_s.c
sh mk/deps.sh src/wchar/vswprintf_s.c
-all: mk/vwprintf.d
-mk/vwprintf.d: src/wchar/vwprintf.c
- sh mk/deps.sh src/wchar/vwprintf.c
+all: mk/snwprintf_s.d
+mk/snwprintf_s.d: src/wchar/snwprintf_s.c
+ sh mk/deps.sh src/wchar/snwprintf_s.c
+
+all: mk/wprintf.d
+mk/wprintf.d: src/wchar/wprintf.c
+ sh mk/deps.sh src/wchar/wprintf.c
+
+all: mk/wcstoul.d
+mk/wcstoul.d: src/wchar/wcstoul.c
+ sh mk/deps.sh src/wchar/wcstoul.c
+
+all: mk/vswscanf_s.d
+mk/vswscanf_s.d: src/wchar/vswscanf_s.c
+ sh mk/deps.sh src/wchar/vswscanf_s.c
all: mk/wcscoll.d
mk/wcscoll.d: src/wchar/wcscoll.c
sh mk/deps.sh src/wchar/wcscoll.c
-all: mk/strtoumax.d
-mk/strtoumax.d: src/inttypes/strtoumax.c
- sh mk/deps.sh src/inttypes/strtoumax.c
+all: mk/wmemset.d
+mk/wmemset.d: src/wchar/wmemset.c
+ sh mk/deps.sh src/wchar/wmemset.c
-all: mk/imaxabs.d
-mk/imaxabs.d: src/inttypes/imaxabs.c
- sh mk/deps.sh src/inttypes/imaxabs.c
+all: mk/vfwscanf_s.d
+mk/vfwscanf_s.d: src/wchar/vfwscanf_s.c
+ sh mk/deps.sh src/wchar/vfwscanf_s.c
-all: mk/strtoimax.d
-mk/strtoimax.d: src/inttypes/strtoimax.c
- sh mk/deps.sh src/inttypes/strtoimax.c
+all: mk/wmemcpy_s.d
+mk/wmemcpy_s.d: src/wchar/wmemcpy_s.c
+ sh mk/deps.sh src/wchar/wmemcpy_s.c
-all: mk/wcstoimax.d
-mk/wcstoimax.d: src/inttypes/wcstoimax.c
- sh mk/deps.sh src/inttypes/wcstoimax.c
+all: mk/fputwc.d
+mk/fputwc.d: src/wchar/fputwc.c
+ sh mk/deps.sh src/wchar/fputwc.c
-all: mk/wcstoumax.d
-mk/wcstoumax.d: src/inttypes/wcstoumax.c
- sh mk/deps.sh src/inttypes/wcstoumax.c
+all: mk/ungetwc.d
+mk/ungetwc.d: src/wchar/ungetwc.c
+ sh mk/deps.sh src/wchar/ungetwc.c
-all: mk/imaxdiv.d
-mk/imaxdiv.d: src/inttypes/imaxdiv.c
- sh mk/deps.sh src/inttypes/imaxdiv.c
+all: mk/swscanf_s.d
+mk/swscanf_s.d: src/wchar/swscanf_s.c
+ sh mk/deps.sh src/wchar/swscanf_s.c
-all: mk/__checked_call.d
-mk/__checked_call.d: src/__checked_call.c
- sh mk/deps.sh src/__checked_call.c
+all: mk/wcsncpy.d
+mk/wcsncpy.d: src/wchar/wcsncpy.c
+ sh mk/deps.sh src/wchar/wcsncpy.c
-all: mk/setlocale.d
-mk/setlocale.d: src/locale/setlocale.c
- sh mk/deps.sh src/locale/setlocale.c
+all: mk/wcstol.d
+mk/wcstol.d: src/wchar/wcstol.c
+ sh mk/deps.sh src/wchar/wcstol.c
-all: mk/localeconv.d
-mk/localeconv.d: src/locale/localeconv.c
- sh mk/deps.sh src/locale/localeconv.c
+all: mk/mbsinit.d
+mk/mbsinit.d: src/wchar/mbsinit.c
+ sh mk/deps.sh src/wchar/mbsinit.c
-all: mk/__load_locale.d
-mk/__load_locale.d: src/locale/__load_locale.c
- sh mk/deps.sh src/locale/__load_locale.c
+all: mk/wcsspn.d
+mk/wcsspn.d: src/wchar/wcsspn.c
+ sh mk/deps.sh src/wchar/wcsspn.c
-all: mk/__get_locale.d
-mk/__get_locale.d: src/locale/__get_locale.c
- sh mk/deps.sh src/locale/__get_locale.c
+all: mk/wmemmove_s.d
+mk/wmemmove_s.d: src/wchar/wmemmove_s.c
+ sh mk/deps.sh src/wchar/wmemmove_s.c
-all: mk/atof.d
-mk/atof.d: src/stdlib/atof.c
- sh mk/deps.sh src/stdlib/atof.c
+all: mk/wcsrtombs.d
+mk/wcsrtombs.d: src/wchar/wcsrtombs.c
+ sh mk/deps.sh src/wchar/wcsrtombs.c
-all: mk/srand.d
-mk/srand.d: src/stdlib/srand.c
- sh mk/deps.sh src/stdlib/srand.c
+all: mk/getwchar.d
+mk/getwchar.d: src/wchar/getwchar.c
+ sh mk/deps.sh src/wchar/getwchar.c
-all: mk/wctomb_s.d
-mk/wctomb_s.d: src/stdlib/wctomb_s.c
- sh mk/deps.sh src/stdlib/wctomb_s.c
+all: mk/wmemcpy.d
+mk/wmemcpy.d: src/wchar/wmemcpy.c
+ sh mk/deps.sh src/wchar/wmemcpy.c
-all: mk/ignore_handler_s.d
-mk/ignore_handler_s.d: src/stdlib/ignore_handler_s.c
- sh mk/deps.sh src/stdlib/ignore_handler_s.c
+all: mk/getwc.d
+mk/getwc.d: src/wchar/getwc.c
+ sh mk/deps.sh src/wchar/getwc.c
-all: mk/strtoul.d
-mk/strtoul.d: src/stdlib/strtoul.c
- sh mk/deps.sh src/stdlib/strtoul.c
+all: mk/wmemcmp.d
+mk/wmemcmp.d: src/wchar/wmemcmp.c
+ sh mk/deps.sh src/wchar/wmemcmp.c
-all: mk/strtod.d
-mk/strtod.d: src/stdlib/strtod.c
- sh mk/deps.sh src/stdlib/strtod.c
+all: mk/fwscanf.d
+mk/fwscanf.d: src/wchar/fwscanf.c
+ sh mk/deps.sh src/wchar/fwscanf.c
-all: mk/ldiv.d
-mk/ldiv.d: src/stdlib/ldiv.c
- sh mk/deps.sh src/stdlib/ldiv.c
+all: mk/vwscanf.d
+mk/vwscanf.d: src/wchar/vwscanf.c
+ sh mk/deps.sh src/wchar/vwscanf.c
-all: mk/atoi.d
-mk/atoi.d: src/stdlib/atoi.c
- sh mk/deps.sh src/stdlib/atoi.c
+all: mk/wprintf_s.d
+mk/wprintf_s.d: src/wchar/wprintf_s.c
+ sh mk/deps.sh src/wchar/wprintf_s.c
-all: mk/at_quick_exit.d
-mk/at_quick_exit.d: src/stdlib/at_quick_exit.c
- sh mk/deps.sh src/stdlib/at_quick_exit.c
+all: mk/c16rtomb.d
+mk/c16rtomb.d: src/uchar/c16rtomb.c
+ sh mk/deps.sh src/uchar/c16rtomb.c
-all: mk/labs.d
-mk/labs.d: src/stdlib/labs.c
- sh mk/deps.sh src/stdlib/labs.c
+all: mk/c32rtomb.d
+mk/c32rtomb.d: src/uchar/c32rtomb.c
+ sh mk/deps.sh src/uchar/c32rtomb.c
-all: mk/abort.d
-mk/abort.d: src/stdlib/abort.c
- sh mk/deps.sh src/stdlib/abort.c
+all: mk/mbrtoc16.d
+mk/mbrtoc16.d: src/uchar/mbrtoc16.c
+ sh mk/deps.sh src/uchar/mbrtoc16.c
-all: mk/bsearch_s.d
-mk/bsearch_s.d: src/stdlib/bsearch_s.c
- sh mk/deps.sh src/stdlib/bsearch_s.c
+all: mk/mbrtoc32.d
+mk/mbrtoc32.d: src/uchar/mbrtoc32.c
+ sh mk/deps.sh src/uchar/mbrtoc32.c
-all: mk/exit.d
-mk/exit.d: src/stdlib/exit.c
- sh mk/deps.sh src/stdlib/exit.c
+all: mk/va_copy.d
+mk/va_copy.d: src/stdarg/va_copy.c
+ sh mk/deps.sh src/stdarg/va_copy.c
-all: mk/system.d
-mk/system.d: src/stdlib/system.c
- sh mk/deps.sh src/stdlib/system.c
+all: mk/va_start.d
+mk/va_start.d: src/stdarg/va_start.c
+ sh mk/deps.sh src/stdarg/va_start.c
-all: mk/div.d
-mk/div.d: src/stdlib/div.c
- sh mk/deps.sh src/stdlib/div.c
+all: mk/va_arg.d
+mk/va_arg.d: src/stdarg/va_arg.c
+ sh mk/deps.sh src/stdarg/va_arg.c
-all: mk/strtol.d
-mk/strtol.d: src/stdlib/strtol.c
- sh mk/deps.sh src/stdlib/strtol.c
+all: mk/va_end.d
+mk/va_end.d: src/stdarg/va_end.c
+ sh mk/deps.sh src/stdarg/va_end.c
-all: mk/strtof.d
-mk/strtof.d: src/stdlib/strtof.c
- sh mk/deps.sh src/stdlib/strtof.c
+all: mk/environ.d
+mk/environ.d: src/environ.c
+ sh mk/deps.sh src/environ.c
-all: mk/wcstombs.d
-mk/wcstombs.d: src/stdlib/wcstombs.c
- sh mk/deps.sh src/stdlib/wcstombs.c
+all: mk/timespec_get.d
+mk/timespec_get.d: src/time/timespec_get.c
+ sh mk/deps.sh src/time/timespec_get.c
-all: mk/strtold.d
-mk/strtold.d: src/stdlib/strtold.c
- sh mk/deps.sh src/stdlib/strtold.c
+all: mk/ctime.d
+mk/ctime.d: src/time/ctime.c
+ sh mk/deps.sh src/time/ctime.c
-all: mk/malloc.d
-mk/malloc.d: src/stdlib/malloc.c
- sh mk/deps.sh src/stdlib/malloc.c
+all: mk/asctime_s.d
+mk/asctime_s.d: src/time/asctime_s.c
+ sh mk/deps.sh src/time/asctime_s.c
-all: mk/rand.d
-mk/rand.d: src/stdlib/rand.c
- sh mk/deps.sh src/stdlib/rand.c
+all: mk/ctime_s.d
+mk/ctime_s.d: src/time/ctime_s.c
+ sh mk/deps.sh src/time/ctime_s.c
-all: mk/__stdlib.d
-mk/__stdlib.d: src/stdlib/__stdlib.c
- sh mk/deps.sh src/stdlib/__stdlib.c
+all: mk/time.d
+mk/time.d: src/time/time.c
+ sh mk/deps.sh src/time/time.c
-all: mk/atexit.d
-mk/atexit.d: src/stdlib/atexit.c
- sh mk/deps.sh src/stdlib/atexit.c
+all: mk/gmtime.d
+mk/gmtime.d: src/time/gmtime.c
+ sh mk/deps.sh src/time/gmtime.c
-all: mk/realloc.d
-mk/realloc.d: src/stdlib/realloc.c
- sh mk/deps.sh src/stdlib/realloc.c
+all: mk/difftime.d
+mk/difftime.d: src/time/difftime.c
+ sh mk/deps.sh src/time/difftime.c
-all: mk/free.d
-mk/free.d: src/stdlib/free.c
- sh mk/deps.sh src/stdlib/free.c
+all: mk/clock.d
+mk/clock.d: src/time/clock.c
+ sh mk/deps.sh src/time/clock.c
-all: mk/wcstombs_s.d
-mk/wcstombs_s.d: src/stdlib/wcstombs_s.c
- sh mk/deps.sh src/stdlib/wcstombs_s.c
+all: mk/gmtime_s.d
+mk/gmtime_s.d: src/time/gmtime_s.c
+ sh mk/deps.sh src/time/gmtime_s.c
-all: mk/abort_handler_s.d
-mk/abort_handler_s.d: src/stdlib/abort_handler_s.c
- sh mk/deps.sh src/stdlib/abort_handler_s.c
+all: mk/strftime.d
+mk/strftime.d: src/time/strftime.c
+ sh mk/deps.sh src/time/strftime.c
-all: mk/mbstowcs.d
-mk/mbstowcs.d: src/stdlib/mbstowcs.c
- sh mk/deps.sh src/stdlib/mbstowcs.c
+all: mk/localtime.d
+mk/localtime.d: src/time/localtime.c
+ sh mk/deps.sh src/time/localtime.c
-all: mk/calloc.d
-mk/calloc.d: src/stdlib/calloc.c
- sh mk/deps.sh src/stdlib/calloc.c
+all: mk/__time.d
+mk/__time.d: src/time/__time.c
+ sh mk/deps.sh src/time/__time.c
-all: mk/set_constraint_handler_s.d
-mk/set_constraint_handler_s.d: src/stdlib/set_constraint_handler_s.c
- sh mk/deps.sh src/stdlib/set_constraint_handler_s.c
+all: mk/localtime_s.d
+mk/localtime_s.d: src/time/localtime_s.c
+ sh mk/deps.sh src/time/localtime_s.c
-all: mk/mblen.d
-mk/mblen.d: src/stdlib/mblen.c
- sh mk/deps.sh src/stdlib/mblen.c
+all: mk/nanosleep.d
+mk/nanosleep.d: src/time/nanosleep.c
+ sh mk/deps.sh src/time/nanosleep.c
-all: mk/aligned_alloc.d
-mk/aligned_alloc.d: src/stdlib/aligned_alloc.c
- sh mk/deps.sh src/stdlib/aligned_alloc.c
+all: mk/mktime.d
+mk/mktime.d: src/time/mktime.c
+ sh mk/deps.sh src/time/mktime.c
-all: mk/qsort_s.d
-mk/qsort_s.d: src/stdlib/qsort_s.c
- sh mk/deps.sh src/stdlib/qsort_s.c
+all: mk/asctime.d
+mk/asctime.d: src/time/asctime.c
+ sh mk/deps.sh src/time/asctime.c
-all: mk/lldiv.d
-mk/lldiv.d: src/stdlib/lldiv.c
- sh mk/deps.sh src/stdlib/lldiv.c
+all: mk/__readonly.d
+mk/__readonly.d: src/__readonly.c
+ sh mk/deps.sh src/__readonly.c
-all: mk/strtoll.d
-mk/strtoll.d: src/stdlib/strtoll.c
- sh mk/deps.sh src/stdlib/strtoll.c
+all: mk/longjmp.d
+mk/longjmp.d: src/setjmp/longjmp.c
+ sh mk/deps.sh src/setjmp/longjmp.c
-all: mk/abs.d
-mk/abs.d: src/stdlib/abs.c
- sh mk/deps.sh src/stdlib/abs.c
+all: mk/setjmp.d
+mk/setjmp.d: src/setjmp/setjmp.c
+ sh mk/deps.sh src/setjmp/setjmp.c
-all: mk/atoll.d
-mk/atoll.d: src/stdlib/atoll.c
- sh mk/deps.sh src/stdlib/atoll.c
+all: mk/thrd_join.d
+mk/thrd_join.d: src/threads/thrd_join.c
+ sh mk/deps.sh src/threads/thrd_join.c
-all: mk/bsearch.d
-mk/bsearch.d: src/stdlib/bsearch.c
- sh mk/deps.sh src/stdlib/bsearch.c
+all: mk/thrd_sleep.d
+mk/thrd_sleep.d: src/threads/thrd_sleep.c
+ sh mk/deps.sh src/threads/thrd_sleep.c
-all: mk/mbtowc.d
-mk/mbtowc.d: src/stdlib/mbtowc.c
- sh mk/deps.sh src/stdlib/mbtowc.c
+all: mk/cnd_destroy.d
+mk/cnd_destroy.d: src/threads/cnd_destroy.c
+ sh mk/deps.sh src/threads/cnd_destroy.c
-all: mk/llabs.d
-mk/llabs.d: src/stdlib/llabs.c
- sh mk/deps.sh src/stdlib/llabs.c
+all: mk/mtx_unlock.d
+mk/mtx_unlock.d: src/threads/mtx_unlock.c
+ sh mk/deps.sh src/threads/mtx_unlock.c
-all: mk/quick_exit.d
-mk/quick_exit.d: src/stdlib/quick_exit.c
- sh mk/deps.sh src/stdlib/quick_exit.c
+all: mk/mtx_timedlock.d
+mk/mtx_timedlock.d: src/threads/mtx_timedlock.c
+ sh mk/deps.sh src/threads/mtx_timedlock.c
-all: mk/strtoull.d
-mk/strtoull.d: src/stdlib/strtoull.c
- sh mk/deps.sh src/stdlib/strtoull.c
+all: mk/mtx_init.d
+mk/mtx_init.d: src/threads/mtx_init.c
+ sh mk/deps.sh src/threads/mtx_init.c
-all: mk/wctomb.d
-mk/wctomb.d: src/stdlib/wctomb.c
- sh mk/deps.sh src/stdlib/wctomb.c
+all: mk/tss_set.d
+mk/tss_set.d: src/threads/tss_set.c
+ sh mk/deps.sh src/threads/tss_set.c
-all: mk/getenv.d
-mk/getenv.d: src/stdlib/getenv.c
- sh mk/deps.sh src/stdlib/getenv.c
+all: mk/tss_get.d
+mk/tss_get.d: src/threads/tss_get.c
+ sh mk/deps.sh src/threads/tss_get.c
-all: mk/qsort.d
-mk/qsort.d: src/stdlib/qsort.c
- sh mk/deps.sh src/stdlib/qsort.c
+all: mk/thrd_detach.d
+mk/thrd_detach.d: src/threads/thrd_detach.c
+ sh mk/deps.sh src/threads/thrd_detach.c
-all: mk/_Exit.d
-mk/_Exit.d: src/stdlib/_Exit.c
- sh mk/deps.sh src/stdlib/_Exit.c
+all: mk/mtx_lock.d
+mk/mtx_lock.d: src/threads/mtx_lock.c
+ sh mk/deps.sh src/threads/mtx_lock.c
-all: mk/getenv_s.d
-mk/getenv_s.d: src/stdlib/getenv_s.c
- sh mk/deps.sh src/stdlib/getenv_s.c
+all: mk/cnd_wait.d
+mk/cnd_wait.d: src/threads/cnd_wait.c
+ sh mk/deps.sh src/threads/cnd_wait.c
-all: mk/mbstowcs_s.d
-mk/mbstowcs_s.d: src/stdlib/mbstowcs_s.c
- sh mk/deps.sh src/stdlib/mbstowcs_s.c
+all: mk/thrd_yield.d
+mk/thrd_yield.d: src/threads/thrd_yield.c
+ sh mk/deps.sh src/threads/thrd_yield.c
-all: mk/atol.d
-mk/atol.d: src/stdlib/atol.c
- sh mk/deps.sh src/stdlib/atol.c
+all: mk/call_once.d
+mk/call_once.d: src/threads/call_once.c
+ sh mk/deps.sh src/threads/call_once.c
-all: mk/modf.d
-mk/modf.d: src/math/modf.c
- sh mk/deps.sh src/math/modf.c
+all: mk/thrd_equal.d
+mk/thrd_equal.d: src/threads/thrd_equal.c
+ sh mk/deps.sh src/threads/thrd_equal.c
-all: mk/sinh.d
-mk/sinh.d: src/math/sinh.c
- sh mk/deps.sh src/math/sinh.c
+all: mk/cnd_broadcast.d
+mk/cnd_broadcast.d: src/threads/cnd_broadcast.c
+ sh mk/deps.sh src/threads/cnd_broadcast.c
-all: mk/acosh.d
-mk/acosh.d: src/math/acosh.c
- sh mk/deps.sh src/math/acosh.c
+all: mk/tss_delete.d
+mk/tss_delete.d: src/threads/tss_delete.c
+ sh mk/deps.sh src/threads/tss_delete.c
-all: mk/tanh.d
-mk/tanh.d: src/math/tanh.c
- sh mk/deps.sh src/math/tanh.c
+all: mk/cnd_init.d
+mk/cnd_init.d: src/threads/cnd_init.c
+ sh mk/deps.sh src/threads/cnd_init.c
-all: mk/fma.d
-mk/fma.d: src/math/fma.c
- sh mk/deps.sh src/math/fma.c
+all: mk/thrd_current.d
+mk/thrd_current.d: src/threads/thrd_current.c
+ sh mk/deps.sh src/threads/thrd_current.c
-all: mk/nextafter.d
-mk/nextafter.d: src/math/nextafter.c
- sh mk/deps.sh src/math/nextafter.c
+all: mk/mtx_trylock.d
+mk/mtx_trylock.d: src/threads/mtx_trylock.c
+ sh mk/deps.sh src/threads/mtx_trylock.c
-all: mk/llround.d
-mk/llround.d: src/math/llround.c
- sh mk/deps.sh src/math/llround.c
+all: mk/mtx_destroy.d
+mk/mtx_destroy.d: src/threads/mtx_destroy.c
+ sh mk/deps.sh src/threads/mtx_destroy.c
-all: mk/exp2.d
-mk/exp2.d: src/math/exp2.c
- sh mk/deps.sh src/math/exp2.c
+all: mk/tss_create.d
+mk/tss_create.d: src/threads/tss_create.c
+ sh mk/deps.sh src/threads/tss_create.c
-all: mk/fdim.d
-mk/fdim.d: src/math/fdim.c
- sh mk/deps.sh src/math/fdim.c
+all: mk/thrd_create.d
+mk/thrd_create.d: src/threads/thrd_create.c
+ sh mk/deps.sh src/threads/thrd_create.c
-all: mk/nexttoward.d
-mk/nexttoward.d: src/math/nexttoward.c
- sh mk/deps.sh src/math/nexttoward.c
+all: mk/cnd_signal.d
+mk/cnd_signal.d: src/threads/cnd_signal.c
+ sh mk/deps.sh src/threads/cnd_signal.c
-all: mk/sqrt.d
-mk/sqrt.d: src/math/sqrt.c
- sh mk/deps.sh src/math/sqrt.c
+all: mk/thrd_exit.d
+mk/thrd_exit.d: src/threads/thrd_exit.c
+ sh mk/deps.sh src/threads/thrd_exit.c
-all: mk/pow.d
-mk/pow.d: src/math/pow.c
- sh mk/deps.sh src/math/pow.c
+all: mk/cnd_timedwait.d
+mk/cnd_timedwait.d: src/threads/cnd_timedwait.c
+ sh mk/deps.sh src/threads/cnd_timedwait.c
-all: mk/erfc.d
-mk/erfc.d: src/math/erfc.c
- sh mk/deps.sh src/math/erfc.c
+all: mk/vfprintf_s.d
+mk/vfprintf_s.d: src/stdio/vfprintf_s.c
+ sh mk/deps.sh src/stdio/vfprintf_s.c
-all: mk/lround.d
-mk/lround.d: src/math/lround.c
- sh mk/deps.sh src/math/lround.c
+all: mk/funlockfile.d
+mk/funlockfile.d: src/stdio/funlockfile.c
+ sh mk/deps.sh src/stdio/funlockfile.c
-all: mk/acos.d
-mk/acos.d: src/math/acos.c
- sh mk/deps.sh src/math/acos.c
+all: mk/scanf_s.d
+mk/scanf_s.d: src/stdio/scanf_s.c
+ sh mk/deps.sh src/stdio/scanf_s.c
-all: mk/exp.d
-mk/exp.d: src/math/exp.c
- sh mk/deps.sh src/math/exp.c
+all: mk/rewind.d
+mk/rewind.d: src/stdio/rewind.c
+ sh mk/deps.sh src/stdio/rewind.c
-all: mk/cos.d
-mk/cos.d: src/math/cos.c
- sh mk/deps.sh src/math/cos.c
+all: mk/ferror.d
+mk/ferror.d: src/stdio/ferror.c
+ sh mk/deps.sh src/stdio/ferror.c
-all: mk/asinh.d
-mk/asinh.d: src/math/asinh.c
- sh mk/deps.sh src/math/asinh.c
+all: mk/vfscanf_s.d
+mk/vfscanf_s.d: src/stdio/vfscanf_s.c
+ sh mk/deps.sh src/stdio/vfscanf_s.c
-all: mk/atanh.d
-mk/atanh.d: src/math/atanh.c
- sh mk/deps.sh src/math/atanh.c
+all: mk/vsprintf_s.d
+mk/vsprintf_s.d: src/stdio/vsprintf_s.c
+ sh mk/deps.sh src/stdio/vsprintf_s.c
-all: mk/log1p.d
-mk/log1p.d: src/math/log1p.c
- sh mk/deps.sh src/math/log1p.c
+all: mk/sprintf_s.d
+mk/sprintf_s.d: src/stdio/sprintf_s.c
+ sh mk/deps.sh src/stdio/sprintf_s.c
-all: mk/atan.d
-mk/atan.d: src/math/atan.c
- sh mk/deps.sh src/math/atan.c
+all: mk/freopen.d
+mk/freopen.d: src/stdio/freopen.c
+ sh mk/deps.sh src/stdio/freopen.c
-all: mk/logb.d
-mk/logb.d: src/math/logb.c
- sh mk/deps.sh src/math/logb.c
+all: mk/fscanf_s.d
+mk/fscanf_s.d: src/stdio/fscanf_s.c
+ sh mk/deps.sh src/stdio/fscanf_s.c
-all: mk/scalbln.d
-mk/scalbln.d: src/math/scalbln.c
- sh mk/deps.sh src/math/scalbln.c
+all: mk/getchar_unlocked.d
+mk/getchar_unlocked.d: src/stdio/getchar_unlocked.c
+ sh mk/deps.sh src/stdio/getchar_unlocked.c
-all: mk/nan.d
-mk/nan.d: src/math/nan.c
- sh mk/deps.sh src/math/nan.c
+all: mk/tmpnam.d
+mk/tmpnam.d: src/stdio/tmpnam.c
+ sh mk/deps.sh src/stdio/tmpnam.c
-all: mk/log2.d
-mk/log2.d: src/math/log2.c
- sh mk/deps.sh src/math/log2.c
+all: mk/fsetpos.d
+mk/fsetpos.d: src/stdio/fsetpos.c
+ sh mk/deps.sh src/stdio/fsetpos.c
-all: mk/hypot.d
-mk/hypot.d: src/math/hypot.c
- sh mk/deps.sh src/math/hypot.c
+all: mk/__stdio.d
+mk/__stdio.d: src/stdio/__stdio.c
+ sh mk/deps.sh src/stdio/__stdio.c
-all: mk/rint.d
-mk/rint.d: src/math/rint.c
- sh mk/deps.sh src/math/rint.c
+all: mk/scanf.d
+mk/scanf.d: src/stdio/scanf.c
+ sh mk/deps.sh src/stdio/scanf.c
-all: mk/asin.d
-mk/asin.d: src/math/asin.c
- sh mk/deps.sh src/math/asin.c
+all: mk/gets_s.d
+mk/gets_s.d: src/stdio/gets_s.c
+ sh mk/deps.sh src/stdio/gets_s.c
-all: mk/copysign.d
-mk/copysign.d: src/math/copysign.c
- sh mk/deps.sh src/math/copysign.c
+all: mk/gets.d
+mk/gets.d: src/stdio/gets.c
+ sh mk/deps.sh src/stdio/gets.c
-all: mk/cosh.d
-mk/cosh.d: src/math/cosh.c
- sh mk/deps.sh src/math/cosh.c
+all: mk/fflush.d
+mk/fflush.d: src/stdio/fflush.c
+ sh mk/deps.sh src/stdio/fflush.c
-all: mk/log.d
-mk/log.d: src/math/log.c
- sh mk/deps.sh src/math/log.c
+all: mk/ftell.d
+mk/ftell.d: src/stdio/ftell.c
+ sh mk/deps.sh src/stdio/ftell.c
-all: mk/scalbn.d
-mk/scalbn.d: src/math/scalbn.c
- sh mk/deps.sh src/math/scalbn.c
+all: mk/vfscanf.d
+mk/vfscanf.d: src/stdio/vfscanf.c
+ sh mk/deps.sh src/stdio/vfscanf.c
-all: mk/lrint.d
-mk/lrint.d: src/math/lrint.c
- sh mk/deps.sh src/math/lrint.c
+all: mk/clearerr.d
+mk/clearerr.d: src/stdio/clearerr.c
+ sh mk/deps.sh src/stdio/clearerr.c
-all: mk/ldexp.d
-mk/ldexp.d: src/math/ldexp.c
- sh mk/deps.sh src/math/ldexp.c
+all: mk/setbuf.d
+mk/setbuf.d: src/stdio/setbuf.c
+ sh mk/deps.sh src/stdio/setbuf.c
-all: mk/cbrt.d
-mk/cbrt.d: src/math/cbrt.c
- sh mk/deps.sh src/math/cbrt.c
+all: mk/putchar.d
+mk/putchar.d: src/stdio/putchar.c
+ sh mk/deps.sh src/stdio/putchar.c
-all: mk/floor.d
-mk/floor.d: src/math/floor.c
- sh mk/deps.sh src/math/floor.c
+all: mk/fprintf.d
+mk/fprintf.d: src/stdio/fprintf.c
+ sh mk/deps.sh src/stdio/fprintf.c
-all: mk/atan2.d
-mk/atan2.d: src/math/atan2.c
- sh mk/deps.sh src/math/atan2.c
+all: mk/fseek.d
+mk/fseek.d: src/stdio/fseek.c
+ sh mk/deps.sh src/stdio/fseek.c
-all: mk/remquo.d
-mk/remquo.d: src/math/remquo.c
- sh mk/deps.sh src/math/remquo.c
+all: mk/remove.d
+mk/remove.d: src/stdio/remove.c
+ sh mk/deps.sh src/stdio/remove.c
-all: mk/ilogb.d
-mk/ilogb.d: src/math/ilogb.c
- sh mk/deps.sh src/math/ilogb.c
+all: mk/printf.d
+mk/printf.d: src/stdio/printf.c
+ sh mk/deps.sh src/stdio/printf.c
-all: mk/log10.d
-mk/log10.d: src/math/log10.c
- sh mk/deps.sh src/math/log10.c
+all: mk/vsprintf.d
+mk/vsprintf.d: src/stdio/vsprintf.c
+ sh mk/deps.sh src/stdio/vsprintf.c
-all: mk/lgamma.d
-mk/lgamma.d: src/math/lgamma.c
- sh mk/deps.sh src/math/lgamma.c
+all: mk/__stdout.d
+mk/__stdout.d: src/stdio/__stdout.c
+ sh mk/deps.sh src/stdio/__stdout.c
-all: mk/erf.d
-mk/erf.d: src/math/erf.c
- sh mk/deps.sh src/math/erf.c
+all: mk/fread.d
+mk/fread.d: src/stdio/fread.c
+ sh mk/deps.sh src/stdio/fread.c
-all: mk/fmin.d
-mk/fmin.d: src/math/fmin.c
- sh mk/deps.sh src/math/fmin.c
+all: mk/snprintf.d
+mk/snprintf.d: src/stdio/snprintf.c
+ sh mk/deps.sh src/stdio/snprintf.c
-all: mk/nearbyint.d
-mk/nearbyint.d: src/math/nearbyint.c
- sh mk/deps.sh src/math/nearbyint.c
+all: mk/putchar_unlocked.d
+mk/putchar_unlocked.d: src/stdio/putchar_unlocked.c
+ sh mk/deps.sh src/stdio/putchar_unlocked.c
-all: mk/fmax.d
-mk/fmax.d: src/math/fmax.c
- sh mk/deps.sh src/math/fmax.c
+all: mk/flockfile.d
+mk/flockfile.d: src/stdio/flockfile.c
+ sh mk/deps.sh src/stdio/flockfile.c
-all: mk/__fpclassify.d
-mk/__fpclassify.d: src/math/__fpclassify.c
- sh mk/deps.sh src/math/__fpclassify.c
+all: mk/fprintf_s.d
+mk/fprintf_s.d: src/stdio/fprintf_s.c
+ sh mk/deps.sh src/stdio/fprintf_s.c
-all: mk/ceil.d
-mk/ceil.d: src/math/ceil.c
- sh mk/deps.sh src/math/ceil.c
+all: mk/freopen_s.d
+mk/freopen_s.d: src/stdio/freopen_s.c
+ sh mk/deps.sh src/stdio/freopen_s.c
-all: mk/expm1.d
-mk/expm1.d: src/math/expm1.c
- sh mk/deps.sh src/math/expm1.c
+all: mk/sprintf.d
+mk/sprintf.d: src/stdio/sprintf.c
+ sh mk/deps.sh src/stdio/sprintf.c
-all: mk/frexp.d
-mk/frexp.d: src/math/frexp.c
- sh mk/deps.sh src/math/frexp.c
+all: mk/fscanf.d
+mk/fscanf.d: src/stdio/fscanf.c
+ sh mk/deps.sh src/stdio/fscanf.c
-all: mk/fabs.d
-mk/fabs.d: src/math/fabs.c
- sh mk/deps.sh src/math/fabs.c
+all: mk/vscanf_s.d
+mk/vscanf_s.d: src/stdio/vscanf_s.c
+ sh mk/deps.sh src/stdio/vscanf_s.c
-all: mk/tan.d
-mk/tan.d: src/math/tan.c
- sh mk/deps.sh src/math/tan.c
+all: mk/vsnprintf_s.d
+mk/vsnprintf_s.d: src/stdio/vsnprintf_s.c
+ sh mk/deps.sh src/stdio/vsnprintf_s.c
-all: mk/round.d
-mk/round.d: src/math/round.c
- sh mk/deps.sh src/math/round.c
+all: mk/setvbuf.d
+mk/setvbuf.d: src/stdio/setvbuf.c
+ sh mk/deps.sh src/stdio/setvbuf.c
-all: mk/fmod.d
-mk/fmod.d: src/math/fmod.c
- sh mk/deps.sh src/math/fmod.c
+all: mk/sscanf.d
+mk/sscanf.d: src/stdio/sscanf.c
+ sh mk/deps.sh src/stdio/sscanf.c
-all: mk/llrint.d
-mk/llrint.d: src/math/llrint.c
- sh mk/deps.sh src/math/llrint.c
+all: mk/fclose.d
+mk/fclose.d: src/stdio/fclose.c
+ sh mk/deps.sh src/stdio/fclose.c
-all: mk/tgamma.d
-mk/tgamma.d: src/math/tgamma.c
- sh mk/deps.sh src/math/tgamma.c
+all: mk/fgets.d
+mk/fgets.d: src/stdio/fgets.c
+ sh mk/deps.sh src/stdio/fgets.c
-all: mk/trunc.d
-mk/trunc.d: src/math/trunc.c
- sh mk/deps.sh src/math/trunc.c
+all: mk/vsscanf_s.d
+mk/vsscanf_s.d: src/stdio/vsscanf_s.c
+ sh mk/deps.sh src/stdio/vsscanf_s.c
-all: mk/sin.d
-mk/sin.d: src/math/sin.c
- sh mk/deps.sh src/math/sin.c
+all: mk/__stderr.d
+mk/__stderr.d: src/stdio/__stderr.c
+ sh mk/deps.sh src/stdio/__stderr.c
-all: mk/__sigsegv.d
-mk/__sigsegv.d: src/signal/__sigsegv.c
- sh mk/deps.sh src/signal/__sigsegv.c
+all: mk/fgetc.d
+mk/fgetc.d: src/stdio/fgetc.c
+ sh mk/deps.sh src/stdio/fgetc.c
-all: mk/signal.d
-mk/signal.d: src/signal/signal.c
- sh mk/deps.sh src/signal/signal.c
+all: mk/tmpfile.d
+mk/tmpfile.d: src/stdio/tmpfile.c
+ sh mk/deps.sh src/stdio/tmpfile.c
-all: mk/sigaction.d
-mk/sigaction.d: src/signal/sigaction.c
- sh mk/deps.sh src/signal/sigaction.c
+all: mk/vfprintf.d
+mk/vfprintf.d: src/stdio/vfprintf.c
+ sh mk/deps.sh src/stdio/vfprintf.c
-all: mk/__signal_handler.d
-mk/__signal_handler.d: src/signal/__signal_handler.c
- sh mk/deps.sh src/signal/__signal_handler.c
+all: mk/getc.d
+mk/getc.d: src/stdio/getc.c
+ sh mk/deps.sh src/stdio/getc.c
-all: mk/raise.d
-mk/raise.d: src/signal/raise.c
- sh mk/deps.sh src/signal/raise.c
+all: mk/puts.d
+mk/puts.d: src/stdio/puts.c
+ sh mk/deps.sh src/stdio/puts.c
-all: mk/__signal.d
-mk/__signal.d: src/signal/__signal.c
- sh mk/deps.sh src/signal/__signal.c
+all: mk/__scanf.d
+mk/__scanf.d: src/stdio/__scanf.c
+ sh mk/deps.sh src/stdio/__scanf.c
-all: mk/kill.d
-mk/kill.d: src/signal/kill.c
- sh mk/deps.sh src/signal/kill.c
+all: mk/fwrite.d
+mk/fwrite.d: src/stdio/fwrite.c
+ sh mk/deps.sh src/stdio/fwrite.c
-all: mk/mbrtoc32.d
-mk/mbrtoc32.d: src/uchar/mbrtoc32.c
- sh mk/deps.sh src/uchar/mbrtoc32.c
+all: mk/perror.d
+mk/perror.d: src/stdio/perror.c
+ sh mk/deps.sh src/stdio/perror.c
-all: mk/c32rtomb.d
-mk/c32rtomb.d: src/uchar/c32rtomb.c
- sh mk/deps.sh src/uchar/c32rtomb.c
+all: mk/sscanf_s.d
+mk/sscanf_s.d: src/stdio/sscanf_s.c
+ sh mk/deps.sh src/stdio/sscanf_s.c
-all: mk/c16rtomb.d
-mk/c16rtomb.d: src/uchar/c16rtomb.c
- sh mk/deps.sh src/uchar/c16rtomb.c
+all: mk/feof.d
+mk/feof.d: src/stdio/feof.c
+ sh mk/deps.sh src/stdio/feof.c
-all: mk/mbrtoc16.d
-mk/mbrtoc16.d: src/uchar/mbrtoc16.c
- sh mk/deps.sh src/uchar/mbrtoc16.c
+all: mk/__stdin.d
+mk/__stdin.d: src/stdio/__stdin.c
+ sh mk/deps.sh src/stdio/__stdin.c
-all: mk/__assert.d
-mk/__assert.d: src/assert/__assert.c
- sh mk/deps.sh src/assert/__assert.c
+all: mk/printf_s.d
+mk/printf_s.d: src/stdio/printf_s.c
+ sh mk/deps.sh src/stdio/printf_s.c
-all: mk/assert.d
-mk/assert.d: src/assert/assert.c
- sh mk/deps.sh src/assert/assert.c
+all: mk/vprintf.d
+mk/vprintf.d: src/stdio/vprintf.c
+ sh mk/deps.sh src/stdio/vprintf.c
-all: mk/iscntrl.d
-mk/iscntrl.d: src/ctype/iscntrl.c
- sh mk/deps.sh src/ctype/iscntrl.c
+all: mk/tmpnam_s.d
+mk/tmpnam_s.d: src/stdio/tmpnam_s.c
+ sh mk/deps.sh src/stdio/tmpnam_s.c
-all: mk/isalpha.d
-mk/isalpha.d: src/ctype/isalpha.c
- sh mk/deps.sh src/ctype/isalpha.c
+all: mk/rename.d
+mk/rename.d: src/stdio/rename.c
+ sh mk/deps.sh src/stdio/rename.c
-all: mk/toupper.d
-mk/toupper.d: src/ctype/toupper.c
- sh mk/deps.sh src/ctype/toupper.c
+all: mk/getchar.d
+mk/getchar.d: src/stdio/getchar.c
+ sh mk/deps.sh src/stdio/getchar.c
-all: mk/isdigit.d
-mk/isdigit.d: src/ctype/isdigit.c
- sh mk/deps.sh src/ctype/isdigit.c
+all: mk/fgetpos.d
+mk/fgetpos.d: src/stdio/fgetpos.c
+ sh mk/deps.sh src/stdio/fgetpos.c
-all: mk/isupper.d
-mk/isupper.d: src/ctype/isupper.c
- sh mk/deps.sh src/ctype/isupper.c
+all: mk/fputc.d
+mk/fputc.d: src/stdio/fputc.c
+ sh mk/deps.sh src/stdio/fputc.c
-all: mk/isspace.d
-mk/isspace.d: src/ctype/isspace.c
- sh mk/deps.sh src/ctype/isspace.c
+all: mk/vsnprintf.d
+mk/vsnprintf.d: src/stdio/vsnprintf.c
+ sh mk/deps.sh src/stdio/vsnprintf.c
-all: mk/ispunct.d
-mk/ispunct.d: src/ctype/ispunct.c
- sh mk/deps.sh src/ctype/ispunct.c
+all: mk/vsscanf.d
+mk/vsscanf.d: src/stdio/vsscanf.c
+ sh mk/deps.sh src/stdio/vsscanf.c
-all: mk/islower.d
-mk/islower.d: src/ctype/islower.c
- sh mk/deps.sh src/ctype/islower.c
+all: mk/putc_unlocked.d
+mk/putc_unlocked.d: src/stdio/putc_unlocked.c
+ sh mk/deps.sh src/stdio/putc_unlocked.c
-all: mk/isxdigit.d
-mk/isxdigit.d: src/ctype/isxdigit.c
- sh mk/deps.sh src/ctype/isxdigit.c
+all: mk/tmpfile_s.d
+mk/tmpfile_s.d: src/stdio/tmpfile_s.c
+ sh mk/deps.sh src/stdio/tmpfile_s.c
-all: mk/isgraph.d
-mk/isgraph.d: src/ctype/isgraph.c
- sh mk/deps.sh src/ctype/isgraph.c
+all: mk/snprintf_s.d
+mk/snprintf_s.d: src/stdio/snprintf_s.c
+ sh mk/deps.sh src/stdio/snprintf_s.c
-all: mk/isblank.d
-mk/isblank.d: src/ctype/isblank.c
- sh mk/deps.sh src/ctype/isblank.c
+all: mk/ungetc.d
+mk/ungetc.d: src/stdio/ungetc.c
+ sh mk/deps.sh src/stdio/ungetc.c
-all: mk/tolower.d
-mk/tolower.d: src/ctype/tolower.c
- sh mk/deps.sh src/ctype/tolower.c
+all: mk/__printf.d
+mk/__printf.d: src/stdio/__printf.c
+ sh mk/deps.sh src/stdio/__printf.c
-all: mk/isprint.d
-mk/isprint.d: src/ctype/isprint.c
- sh mk/deps.sh src/ctype/isprint.c
+all: mk/fopen.d
+mk/fopen.d: src/stdio/fopen.c
+ sh mk/deps.sh src/stdio/fopen.c
-all: mk/isalnum.d
-mk/isalnum.d: src/ctype/isalnum.c
- sh mk/deps.sh src/ctype/isalnum.c
+all: mk/putc.d
+mk/putc.d: src/stdio/putc.c
+ sh mk/deps.sh src/stdio/putc.c
-all: mk/strftime.d
-mk/strftime.d: src/time/strftime.c
- sh mk/deps.sh src/time/strftime.c
+all: mk/vscanf.d
+mk/vscanf.d: src/stdio/vscanf.c
+ sh mk/deps.sh src/stdio/vscanf.c
-all: mk/time.d
-mk/time.d: src/time/time.c
- sh mk/deps.sh src/time/time.c
+all: mk/vprintf_s.d
+mk/vprintf_s.d: src/stdio/vprintf_s.c
+ sh mk/deps.sh src/stdio/vprintf_s.c
-all: mk/asctime.d
-mk/asctime.d: src/time/asctime.c
- sh mk/deps.sh src/time/asctime.c
+all: mk/fopen_s.d
+mk/fopen_s.d: src/stdio/fopen_s.c
+ sh mk/deps.sh src/stdio/fopen_s.c
-all: mk/ctime.d
-mk/ctime.d: src/time/ctime.c
- sh mk/deps.sh src/time/ctime.c
+all: mk/getc_unlocked.d
+mk/getc_unlocked.d: src/stdio/getc_unlocked.c
+ sh mk/deps.sh src/stdio/getc_unlocked.c
-all: mk/clock.d
-mk/clock.d: src/time/clock.c
- sh mk/deps.sh src/time/clock.c
+all: mk/fputs.d
+mk/fputs.d: src/stdio/fputs.c
+ sh mk/deps.sh src/stdio/fputs.c
-all: mk/ctime_s.d
-mk/ctime_s.d: src/time/ctime_s.c
- sh mk/deps.sh src/time/ctime_s.c
+all: mk/strncat.d
+mk/strncat.d: src/string/strncat.c
+ sh mk/deps.sh src/string/strncat.c
-all: mk/gmtime.d
-mk/gmtime.d: src/time/gmtime.c
- sh mk/deps.sh src/time/gmtime.c
+all: mk/strncat_s.d
+mk/strncat_s.d: src/string/strncat_s.c
+ sh mk/deps.sh src/string/strncat_s.c
-all: mk/gmtime_s.d
-mk/gmtime_s.d: src/time/gmtime_s.c
- sh mk/deps.sh src/time/gmtime_s.c
+all: mk/memcpy_s.d
+mk/memcpy_s.d: src/string/memcpy_s.c
+ sh mk/deps.sh src/string/memcpy_s.c
-all: mk/difftime.d
-mk/difftime.d: src/time/difftime.c
- sh mk/deps.sh src/time/difftime.c
+all: mk/strcmp.d
+mk/strcmp.d: src/string/strcmp.c
+ sh mk/deps.sh src/string/strcmp.c
-all: mk/localtime.d
-mk/localtime.d: src/time/localtime.c
- sh mk/deps.sh src/time/localtime.c
+all: mk/memcpy.d
+mk/memcpy.d: src/string/memcpy.c
+ sh mk/deps.sh src/string/memcpy.c
-all: mk/nanosleep.d
-mk/nanosleep.d: src/time/nanosleep.c
- sh mk/deps.sh src/time/nanosleep.c
+all: mk/memcmp.d
+mk/memcmp.d: src/string/memcmp.c
+ sh mk/deps.sh src/string/memcmp.c
-all: mk/__time.d
-mk/__time.d: src/time/__time.c
- sh mk/deps.sh src/time/__time.c
+all: mk/strlen.d
+mk/strlen.d: src/string/strlen.c
+ sh mk/deps.sh src/string/strlen.c
-all: mk/timespec_get.d
-mk/timespec_get.d: src/time/timespec_get.c
- sh mk/deps.sh src/time/timespec_get.c
+all: mk/strcspn.d
+mk/strcspn.d: src/string/strcspn.c
+ sh mk/deps.sh src/string/strcspn.c
-all: mk/localtime_s.d
-mk/localtime_s.d: src/time/localtime_s.c
- sh mk/deps.sh src/time/localtime_s.c
+all: mk/strchr.d
+mk/strchr.d: src/string/strchr.c
+ sh mk/deps.sh src/string/strchr.c
-all: mk/asctime_s.d
-mk/asctime_s.d: src/time/asctime_s.c
- sh mk/deps.sh src/time/asctime_s.c
+all: mk/strerror_s.d
+mk/strerror_s.d: src/string/strerror_s.c
+ sh mk/deps.sh src/string/strerror_s.c
-all: mk/mktime.d
-mk/mktime.d: src/time/mktime.c
- sh mk/deps.sh src/time/mktime.c
+all: mk/strpbrk.d
+mk/strpbrk.d: src/string/strpbrk.c
+ sh mk/deps.sh src/string/strpbrk.c
-all: mk/__main.d
-mk/__main.d: src/__main.c
- sh mk/deps.sh src/__main.c
+all: mk/strerrorlen_s.d
+mk/strerrorlen_s.d: src/string/strerrorlen_s.c
+ sh mk/deps.sh src/string/strerrorlen_s.c
-all: mk/environ.d
-mk/environ.d: src/environ.c
- sh mk/deps.sh src/environ.c
+all: mk/strerror.d
+mk/strerror.d: src/string/strerror.c
+ sh mk/deps.sh src/string/strerror.c
-all: mk/setjmp.d
-mk/setjmp.d: src/setjmp/setjmp.c
- sh mk/deps.sh src/setjmp/setjmp.c
+all: mk/strstr.d
+mk/strstr.d: src/string/strstr.c
+ sh mk/deps.sh src/string/strstr.c
-all: mk/longjmp.d
-mk/longjmp.d: src/setjmp/longjmp.c
- sh mk/deps.sh src/setjmp/longjmp.c
+all: mk/strncmp.d
+mk/strncmp.d: src/string/strncmp.c
+ sh mk/deps.sh src/string/strncmp.c
-all: mk/fputs.d
-mk/fputs.d: src/stdio/fputs.c
- sh mk/deps.sh src/stdio/fputs.c
+all: mk/memchr.d
+mk/memchr.d: src/string/memchr.c
+ sh mk/deps.sh src/string/memchr.c
-all: mk/fwrite.d
-mk/fwrite.d: src/stdio/fwrite.c
- sh mk/deps.sh src/stdio/fwrite.c
+all: mk/strtok_s.d
+mk/strtok_s.d: src/string/strtok_s.c
+ sh mk/deps.sh src/string/strtok_s.c
-all: mk/vscanf.d
-mk/vscanf.d: src/stdio/vscanf.c
- sh mk/deps.sh src/stdio/vscanf.c
+all: mk/strrchr.d
+mk/strrchr.d: src/string/strrchr.c
+ sh mk/deps.sh src/string/strrchr.c
-all: mk/fputc.d
-mk/fputc.d: src/stdio/fputc.c
- sh mk/deps.sh src/stdio/fputc.c
+all: mk/strspn.d
+mk/strspn.d: src/string/strspn.c
+ sh mk/deps.sh src/string/strspn.c
-all: mk/vfprintf.d
-mk/vfprintf.d: src/stdio/vfprintf.c
- sh mk/deps.sh src/stdio/vfprintf.c
+all: mk/strcoll.d
+mk/strcoll.d: src/string/strcoll.c
+ sh mk/deps.sh src/string/strcoll.c
-all: mk/getchar_unlocked.d
-mk/getchar_unlocked.d: src/stdio/getchar_unlocked.c
- sh mk/deps.sh src/stdio/getchar_unlocked.c
+all: mk/strcpy_s.d
+mk/strcpy_s.d: src/string/strcpy_s.c
+ sh mk/deps.sh src/string/strcpy_s.c
-all: mk/ferror.d
-mk/ferror.d: src/stdio/ferror.c
- sh mk/deps.sh src/stdio/ferror.c
+all: mk/memmove_s.d
+mk/memmove_s.d: src/string/memmove_s.c
+ sh mk/deps.sh src/string/memmove_s.c
-all: mk/fgetc.d
-mk/fgetc.d: src/stdio/fgetc.c
- sh mk/deps.sh src/stdio/fgetc.c
+all: mk/strcpy.d
+mk/strcpy.d: src/string/strcpy.c
+ sh mk/deps.sh src/string/strcpy.c
-all: mk/funlockfile.d
-mk/funlockfile.d: src/stdio/funlockfile.c
- sh mk/deps.sh src/stdio/funlockfile.c
+all: mk/strtok.d
+mk/strtok.d: src/string/strtok.c
+ sh mk/deps.sh src/string/strtok.c
-all: mk/fprintf_s.d
-mk/fprintf_s.d: src/stdio/fprintf_s.c
- sh mk/deps.sh src/stdio/fprintf_s.c
+all: mk/memset.d
+mk/memset.d: src/string/memset.c
+ sh mk/deps.sh src/string/memset.c
-all: mk/putc.d
-mk/putc.d: src/stdio/putc.c
- sh mk/deps.sh src/stdio/putc.c
+all: mk/memmove.d
+mk/memmove.d: src/string/memmove.c
+ sh mk/deps.sh src/string/memmove.c
-all: mk/scanf.d
-mk/scanf.d: src/stdio/scanf.c
- sh mk/deps.sh src/stdio/scanf.c
+all: mk/strncpy.d
+mk/strncpy.d: src/string/strncpy.c
+ sh mk/deps.sh src/string/strncpy.c
-all: mk/sscanf_s.d
-mk/sscanf_s.d: src/stdio/sscanf_s.c
- sh mk/deps.sh src/stdio/sscanf_s.c
+all: mk/strcat_s.d
+mk/strcat_s.d: src/string/strcat_s.c
+ sh mk/deps.sh src/string/strcat_s.c
-all: mk/sscanf.d
-mk/sscanf.d: src/stdio/sscanf.c
- sh mk/deps.sh src/stdio/sscanf.c
+all: mk/strnlen_s.d
+mk/strnlen_s.d: src/string/strnlen_s.c
+ sh mk/deps.sh src/string/strnlen_s.c
-all: mk/ftell.d
-mk/ftell.d: src/stdio/ftell.c
- sh mk/deps.sh src/stdio/ftell.c
+all: mk/strncpy_s.d
+mk/strncpy_s.d: src/string/strncpy_s.c
+ sh mk/deps.sh src/string/strncpy_s.c
-all: mk/__printf.d
-mk/__printf.d: src/stdio/__printf.c
- sh mk/deps.sh src/stdio/__printf.c
+all: mk/strcat.d
+mk/strcat.d: src/string/strcat.c
+ sh mk/deps.sh src/string/strcat.c
-all: mk/printf_s.d
-mk/printf_s.d: src/stdio/printf_s.c
- sh mk/deps.sh src/stdio/printf_s.c
+all: mk/memset_s.d
+mk/memset_s.d: src/string/memset_s.c
+ sh mk/deps.sh src/string/memset_s.c
-all: mk/fseek.d
-mk/fseek.d: src/stdio/fseek.c
- sh mk/deps.sh src/stdio/fseek.c
+all: mk/strxfrm.d
+mk/strxfrm.d: src/string/strxfrm.c
+ sh mk/deps.sh src/string/strxfrm.c
-all: mk/puts.d
-mk/puts.d: src/stdio/puts.c
- sh mk/deps.sh src/stdio/puts.c
+all: mk/imaxabs.d
+mk/imaxabs.d: src/inttypes/imaxabs.c
+ sh mk/deps.sh src/inttypes/imaxabs.c
-all: mk/__stdin.d
-mk/__stdin.d: src/stdio/__stdin.c
- sh mk/deps.sh src/stdio/__stdin.c
+all: mk/strtoimax.d
+mk/strtoimax.d: src/inttypes/strtoimax.c
+ sh mk/deps.sh src/inttypes/strtoimax.c
-all: mk/vprintf.d
-mk/vprintf.d: src/stdio/vprintf.c
- sh mk/deps.sh src/stdio/vprintf.c
+all: mk/imaxdiv.d
+mk/imaxdiv.d: src/inttypes/imaxdiv.c
+ sh mk/deps.sh src/inttypes/imaxdiv.c
-all: mk/fread.d
-mk/fread.d: src/stdio/fread.c
- sh mk/deps.sh src/stdio/fread.c
+all: mk/wcstoumax.d
+mk/wcstoumax.d: src/inttypes/wcstoumax.c
+ sh mk/deps.sh src/inttypes/wcstoumax.c
-all: mk/vscanf_s.d
-mk/vscanf_s.d: src/stdio/vscanf_s.c
- sh mk/deps.sh src/stdio/vscanf_s.c
+all: mk/strtoumax.d
+mk/strtoumax.d: src/inttypes/strtoumax.c
+ sh mk/deps.sh src/inttypes/strtoumax.c
-all: mk/__stderr.d
-mk/__stderr.d: src/stdio/__stderr.c
- sh mk/deps.sh src/stdio/__stderr.c
+all: mk/wcstoimax.d
+mk/wcstoimax.d: src/inttypes/wcstoimax.c
+ sh mk/deps.sh src/inttypes/wcstoimax.c
-all: mk/freopen.d
-mk/freopen.d: src/stdio/freopen.c
- sh mk/deps.sh src/stdio/freopen.c
+all: mk/kill.d
+mk/kill.d: src/signal/kill.c
+ sh mk/deps.sh src/signal/kill.c
-all: mk/putchar_unlocked.d
-mk/putchar_unlocked.d: src/stdio/putchar_unlocked.c
- sh mk/deps.sh src/stdio/putchar_unlocked.c
+all: mk/sigaction.d
+mk/sigaction.d: src/signal/sigaction.c
+ sh mk/deps.sh src/signal/sigaction.c
-all: mk/setbuf.d
-mk/setbuf.d: src/stdio/setbuf.c
- sh mk/deps.sh src/stdio/setbuf.c
+all: mk/signal.d
+mk/signal.d: src/signal/signal.c
+ sh mk/deps.sh src/signal/signal.c
-all: mk/freopen_s.d
-mk/freopen_s.d: src/stdio/freopen_s.c
- sh mk/deps.sh src/stdio/freopen_s.c
+all: mk/raise.d
+mk/raise.d: src/signal/raise.c
+ sh mk/deps.sh src/signal/raise.c
-all: mk/scanf_s.d
-mk/scanf_s.d: src/stdio/scanf_s.c
- sh mk/deps.sh src/stdio/scanf_s.c
+all: mk/__signal_handler.d
+mk/__signal_handler.d: src/signal/__signal_handler.c
+ sh mk/deps.sh src/signal/__signal_handler.c
-all: mk/vsnprintf_s.d
-mk/vsnprintf_s.d: src/stdio/vsnprintf_s.c
- sh mk/deps.sh src/stdio/vsnprintf_s.c
+all: mk/__sigsegv.d
+mk/__sigsegv.d: src/signal/__sigsegv.c
+ sh mk/deps.sh src/signal/__sigsegv.c
-all: mk/tmpfile_s.d
-mk/tmpfile_s.d: src/stdio/tmpfile_s.c
- sh mk/deps.sh src/stdio/tmpfile_s.c
+all: mk/__signal.d
+mk/__signal.d: src/signal/__signal.c
+ sh mk/deps.sh src/signal/__signal.c
-all: mk/vsnprintf.d
-mk/vsnprintf.d: src/stdio/vsnprintf.c
- sh mk/deps.sh src/stdio/vsnprintf.c
+all: mk/frexp.d
+mk/frexp.d: src/math/frexp.c
+ sh mk/deps.sh src/math/frexp.c
-all: mk/rewind.d
-mk/rewind.d: src/stdio/rewind.c
- sh mk/deps.sh src/stdio/rewind.c
+all: mk/erfc.d
+mk/erfc.d: src/math/erfc.c
+ sh mk/deps.sh src/math/erfc.c
-all: mk/__stdio.d
-mk/__stdio.d: src/stdio/__stdio.c
- sh mk/deps.sh src/stdio/__stdio.c
+all: mk/rint.d
+mk/rint.d: src/math/rint.c
+ sh mk/deps.sh src/math/rint.c
-all: mk/sprintf.d
-mk/sprintf.d: src/stdio/sprintf.c
- sh mk/deps.sh src/stdio/sprintf.c
+all: mk/asinh.d
+mk/asinh.d: src/math/asinh.c
+ sh mk/deps.sh src/math/asinh.c
-all: mk/vfscanf_s.d
-mk/vfscanf_s.d: src/stdio/vfscanf_s.c
- sh mk/deps.sh src/stdio/vfscanf_s.c
+all: mk/atanh.d
+mk/atanh.d: src/math/atanh.c
+ sh mk/deps.sh src/math/atanh.c
-all: mk/vfscanf.d
-mk/vfscanf.d: src/stdio/vfscanf.c
- sh mk/deps.sh src/stdio/vfscanf.c
+all: mk/copysign.d
+mk/copysign.d: src/math/copysign.c
+ sh mk/deps.sh src/math/copysign.c
-all: mk/clearerr.d
-mk/clearerr.d: src/stdio/clearerr.c
- sh mk/deps.sh src/stdio/clearerr.c
+all: mk/modf.d
+mk/modf.d: src/math/modf.c
+ sh mk/deps.sh src/math/modf.c
-all: mk/fopen.d
-mk/fopen.d: src/stdio/fopen.c
- sh mk/deps.sh src/stdio/fopen.c
+all: mk/remquo.d
+mk/remquo.d: src/math/remquo.c
+ sh mk/deps.sh src/math/remquo.c
-all: mk/tmpnam_s.d
-mk/tmpnam_s.d: src/stdio/tmpnam_s.c
- sh mk/deps.sh src/stdio/tmpnam_s.c
+all: mk/lgamma.d
+mk/lgamma.d: src/math/lgamma.c
+ sh mk/deps.sh src/math/lgamma.c
-all: mk/__stdout.d
-mk/__stdout.d: src/stdio/__stdout.c
- sh mk/deps.sh src/stdio/__stdout.c
+all: mk/acos.d
+mk/acos.d: src/math/acos.c
+ sh mk/deps.sh src/math/acos.c
-all: mk/fgets.d
-mk/fgets.d: src/stdio/fgets.c
- sh mk/deps.sh src/stdio/fgets.c
+all: mk/exp2.d
+mk/exp2.d: src/math/exp2.c
+ sh mk/deps.sh src/math/exp2.c
-all: mk/snprintf_s.d
-mk/snprintf_s.d: src/stdio/snprintf_s.c
- sh mk/deps.sh src/stdio/snprintf_s.c
+all: mk/__fpclassify.d
+mk/__fpclassify.d: src/math/__fpclassify.c
+ sh mk/deps.sh src/math/__fpclassify.c
-all: mk/getc_unlocked.d
-mk/getc_unlocked.d: src/stdio/getc_unlocked.c
- sh mk/deps.sh src/stdio/getc_unlocked.c
+all: mk/tanh.d
+mk/tanh.d: src/math/tanh.c
+ sh mk/deps.sh src/math/tanh.c
-all: mk/fprintf.d
-mk/fprintf.d: src/stdio/fprintf.c
- sh mk/deps.sh src/stdio/fprintf.c
+all: mk/fmod.d
+mk/fmod.d: src/math/fmod.c
+ sh mk/deps.sh src/math/fmod.c
-all: mk/getc.d
-mk/getc.d: src/stdio/getc.c
- sh mk/deps.sh src/stdio/getc.c
+all: mk/fmax.d
+mk/fmax.d: src/math/fmax.c
+ sh mk/deps.sh src/math/fmax.c
-all: mk/vsprintf_s.d
-mk/vsprintf_s.d: src/stdio/vsprintf_s.c
- sh mk/deps.sh src/stdio/vsprintf_s.c
+all: mk/pow.d
+mk/pow.d: src/math/pow.c
+ sh mk/deps.sh src/math/pow.c
-all: mk/rename.d
-mk/rename.d: src/stdio/rename.c
- sh mk/deps.sh src/stdio/rename.c
+all: mk/nextafter.d
+mk/nextafter.d: src/math/nextafter.c
+ sh mk/deps.sh src/math/nextafter.c
-all: mk/flockfile.d
-mk/flockfile.d: src/stdio/flockfile.c
- sh mk/deps.sh src/stdio/flockfile.c
+all: mk/llround.d
+mk/llround.d: src/math/llround.c
+ sh mk/deps.sh src/math/llround.c
-all: mk/perror.d
-mk/perror.d: src/stdio/perror.c
- sh mk/deps.sh src/stdio/perror.c
+all: mk/lrint.d
+mk/lrint.d: src/math/lrint.c
+ sh mk/deps.sh src/math/lrint.c
-all: mk/putc_unlocked.d
-mk/putc_unlocked.d: src/stdio/putc_unlocked.c
- sh mk/deps.sh src/stdio/putc_unlocked.c
+all: mk/ilogb.d
+mk/ilogb.d: src/math/ilogb.c
+ sh mk/deps.sh src/math/ilogb.c
-all: mk/fsetpos.d
-mk/fsetpos.d: src/stdio/fsetpos.c
- sh mk/deps.sh src/stdio/fsetpos.c
+all: mk/log10.d
+mk/log10.d: src/math/log10.c
+ sh mk/deps.sh src/math/log10.c
-all: mk/tmpnam.d
-mk/tmpnam.d: src/stdio/tmpnam.c
- sh mk/deps.sh src/stdio/tmpnam.c
+all: mk/nan.d
+mk/nan.d: src/math/nan.c
+ sh mk/deps.sh src/math/nan.c
-all: mk/fclose.d
-mk/fclose.d: src/stdio/fclose.c
- sh mk/deps.sh src/stdio/fclose.c
+all: mk/fma.d
+mk/fma.d: src/math/fma.c
+ sh mk/deps.sh src/math/fma.c
-all: mk/__scanf.d
-mk/__scanf.d: src/stdio/__scanf.c
- sh mk/deps.sh src/stdio/__scanf.c
+all: mk/nearbyint.d
+mk/nearbyint.d: src/math/nearbyint.c
+ sh mk/deps.sh src/math/nearbyint.c
-all: mk/feof.d
-mk/feof.d: src/stdio/feof.c
- sh mk/deps.sh src/stdio/feof.c
+all: mk/log2.d
+mk/log2.d: src/math/log2.c
+ sh mk/deps.sh src/math/log2.c
-all: mk/fscanf.d
-mk/fscanf.d: src/stdio/fscanf.c
- sh mk/deps.sh src/stdio/fscanf.c
+all: mk/round.d
+mk/round.d: src/math/round.c
+ sh mk/deps.sh src/math/round.c
-all: mk/fscanf_s.d
-mk/fscanf_s.d: src/stdio/fscanf_s.c
- sh mk/deps.sh src/stdio/fscanf_s.c
+all: mk/fdim.d
+mk/fdim.d: src/math/fdim.c
+ sh mk/deps.sh src/math/fdim.c
-all: mk/vfprintf_s.d
-mk/vfprintf_s.d: src/stdio/vfprintf_s.c
- sh mk/deps.sh src/stdio/vfprintf_s.c
+all: mk/lround.d
+mk/lround.d: src/math/lround.c
+ sh mk/deps.sh src/math/lround.c
-all: mk/snprintf.d
-mk/snprintf.d: src/stdio/snprintf.c
- sh mk/deps.sh src/stdio/snprintf.c
+all: mk/atan2.d
+mk/atan2.d: src/math/atan2.c
+ sh mk/deps.sh src/math/atan2.c
-all: mk/gets.d
-mk/gets.d: src/stdio/gets.c
- sh mk/deps.sh src/stdio/gets.c
+all: mk/nexttoward.d
+mk/nexttoward.d: src/math/nexttoward.c
+ sh mk/deps.sh src/math/nexttoward.c
-all: mk/sprintf_s.d
-mk/sprintf_s.d: src/stdio/sprintf_s.c
- sh mk/deps.sh src/stdio/sprintf_s.c
+all: mk/tgamma.d
+mk/tgamma.d: src/math/tgamma.c
+ sh mk/deps.sh src/math/tgamma.c
-all: mk/vprintf_s.d
-mk/vprintf_s.d: src/stdio/vprintf_s.c
- sh mk/deps.sh src/stdio/vprintf_s.c
+all: mk/asin.d
+mk/asin.d: src/math/asin.c
+ sh mk/deps.sh src/math/asin.c
-all: mk/getchar.d
-mk/getchar.d: src/stdio/getchar.c
- sh mk/deps.sh src/stdio/getchar.c
+all: mk/scalbn.d
+mk/scalbn.d: src/math/scalbn.c
+ sh mk/deps.sh src/math/scalbn.c
-all: mk/fopen_s.d
-mk/fopen_s.d: src/stdio/fopen_s.c
- sh mk/deps.sh src/stdio/fopen_s.c
+all: mk/cbrt.d
+mk/cbrt.d: src/math/cbrt.c
+ sh mk/deps.sh src/math/cbrt.c
-all: mk/remove.d
-mk/remove.d: src/stdio/remove.c
- sh mk/deps.sh src/stdio/remove.c
+all: mk/sin.d
+mk/sin.d: src/math/sin.c
+ sh mk/deps.sh src/math/sin.c
-all: mk/putchar.d
-mk/putchar.d: src/stdio/putchar.c
- sh mk/deps.sh src/stdio/putchar.c
+all: mk/sinh.d
+mk/sinh.d: src/math/sinh.c
+ sh mk/deps.sh src/math/sinh.c
-all: mk/vsprintf.d
-mk/vsprintf.d: src/stdio/vsprintf.c
- sh mk/deps.sh src/stdio/vsprintf.c
+all: mk/trunc.d
+mk/trunc.d: src/math/trunc.c
+ sh mk/deps.sh src/math/trunc.c
-all: mk/vsscanf_s.d
-mk/vsscanf_s.d: src/stdio/vsscanf_s.c
- sh mk/deps.sh src/stdio/vsscanf_s.c
+all: mk/log.d
+mk/log.d: src/math/log.c
+ sh mk/deps.sh src/math/log.c
-all: mk/printf.d
-mk/printf.d: src/stdio/printf.c
- sh mk/deps.sh src/stdio/printf.c
+all: mk/exp.d
+mk/exp.d: src/math/exp.c
+ sh mk/deps.sh src/math/exp.c
-all: mk/ungetc.d
-mk/ungetc.d: src/stdio/ungetc.c
- sh mk/deps.sh src/stdio/ungetc.c
+all: mk/expm1.d
+mk/expm1.d: src/math/expm1.c
+ sh mk/deps.sh src/math/expm1.c
-all: mk/gets_s.d
-mk/gets_s.d: src/stdio/gets_s.c
- sh mk/deps.sh src/stdio/gets_s.c
+all: mk/floor.d
+mk/floor.d: src/math/floor.c
+ sh mk/deps.sh src/math/floor.c
-all: mk/vsscanf.d
-mk/vsscanf.d: src/stdio/vsscanf.c
- sh mk/deps.sh src/stdio/vsscanf.c
+all: mk/ldexp.d
+mk/ldexp.d: src/math/ldexp.c
+ sh mk/deps.sh src/math/ldexp.c
-all: mk/fgetpos.d
-mk/fgetpos.d: src/stdio/fgetpos.c
- sh mk/deps.sh src/stdio/fgetpos.c
+all: mk/fabs.d
+mk/fabs.d: src/math/fabs.c
+ sh mk/deps.sh src/math/fabs.c
-all: mk/tmpfile.d
-mk/tmpfile.d: src/stdio/tmpfile.c
- sh mk/deps.sh src/stdio/tmpfile.c
+all: mk/cosh.d
+mk/cosh.d: src/math/cosh.c
+ sh mk/deps.sh src/math/cosh.c
-all: mk/setvbuf.d
-mk/setvbuf.d: src/stdio/setvbuf.c
- sh mk/deps.sh src/stdio/setvbuf.c
+all: mk/sqrt.d
+mk/sqrt.d: src/math/sqrt.c
+ sh mk/deps.sh src/math/sqrt.c
-all: mk/fflush.d
-mk/fflush.d: src/stdio/fflush.c
- sh mk/deps.sh src/stdio/fflush.c
+all: mk/scalbln.d
+mk/scalbln.d: src/math/scalbln.c
+ sh mk/deps.sh src/math/scalbln.c
-all: mk/__errno.d
-mk/__errno.d: src/errno/__errno.c
- sh mk/deps.sh src/errno/__errno.c
+all: mk/hypot.d
+mk/hypot.d: src/math/hypot.c
+ sh mk/deps.sh src/math/hypot.c
-all: mk/thrd_current.d
-mk/thrd_current.d: src/threads/thrd_current.c
- sh mk/deps.sh src/threads/thrd_current.c
+all: mk/log1p.d
+mk/log1p.d: src/math/log1p.c
+ sh mk/deps.sh src/math/log1p.c
-all: mk/cnd_timedwait.d
-mk/cnd_timedwait.d: src/threads/cnd_timedwait.c
- sh mk/deps.sh src/threads/cnd_timedwait.c
+all: mk/tan.d
+mk/tan.d: src/math/tan.c
+ sh mk/deps.sh src/math/tan.c
-all: mk/call_once.d
-mk/call_once.d: src/threads/call_once.c
- sh mk/deps.sh src/threads/call_once.c
+all: mk/atan.d
+mk/atan.d: src/math/atan.c
+ sh mk/deps.sh src/math/atan.c
-all: mk/thrd_join.d
-mk/thrd_join.d: src/threads/thrd_join.c
- sh mk/deps.sh src/threads/thrd_join.c
+all: mk/llrint.d
+mk/llrint.d: src/math/llrint.c
+ sh mk/deps.sh src/math/llrint.c
-all: mk/thrd_equal.d
-mk/thrd_equal.d: src/threads/thrd_equal.c
- sh mk/deps.sh src/threads/thrd_equal.c
+all: mk/logb.d
+mk/logb.d: src/math/logb.c
+ sh mk/deps.sh src/math/logb.c
-all: mk/thrd_create.d
-mk/thrd_create.d: src/threads/thrd_create.c
- sh mk/deps.sh src/threads/thrd_create.c
+all: mk/fmin.d
+mk/fmin.d: src/math/fmin.c
+ sh mk/deps.sh src/math/fmin.c
-all: mk/tss_create.d
-mk/tss_create.d: src/threads/tss_create.c
- sh mk/deps.sh src/threads/tss_create.c
+all: mk/ceil.d
+mk/ceil.d: src/math/ceil.c
+ sh mk/deps.sh src/math/ceil.c
-all: mk/mtx_timedlock.d
-mk/mtx_timedlock.d: src/threads/mtx_timedlock.c
- sh mk/deps.sh src/threads/mtx_timedlock.c
+all: mk/erf.d
+mk/erf.d: src/math/erf.c
+ sh mk/deps.sh src/math/erf.c
-all: mk/cnd_wait.d
-mk/cnd_wait.d: src/threads/cnd_wait.c
- sh mk/deps.sh src/threads/cnd_wait.c
+all: mk/cos.d
+mk/cos.d: src/math/cos.c
+ sh mk/deps.sh src/math/cos.c
-all: mk/cnd_destroy.d
-mk/cnd_destroy.d: src/threads/cnd_destroy.c
- sh mk/deps.sh src/threads/cnd_destroy.c
+all: mk/acosh.d
+mk/acosh.d: src/math/acosh.c
+ sh mk/deps.sh src/math/acosh.c
-all: mk/thrd_detach.d
-mk/thrd_detach.d: src/threads/thrd_detach.c
- sh mk/deps.sh src/threads/thrd_detach.c
+all: mk/aligned_alloc.d
+mk/aligned_alloc.d: src/stdlib/aligned_alloc.c
+ sh mk/deps.sh src/stdlib/aligned_alloc.c
-all: mk/cnd_signal.d
-mk/cnd_signal.d: src/threads/cnd_signal.c
- sh mk/deps.sh src/threads/cnd_signal.c
+all: mk/_Exit.d
+mk/_Exit.d: src/stdlib/_Exit.c
+ sh mk/deps.sh src/stdlib/_Exit.c
-all: mk/mtx_init.d
-mk/mtx_init.d: src/threads/mtx_init.c
- sh mk/deps.sh src/threads/mtx_init.c
+all: mk/llabs.d
+mk/llabs.d: src/stdlib/llabs.c
+ sh mk/deps.sh src/stdlib/llabs.c
-all: mk/mtx_unlock.d
-mk/mtx_unlock.d: src/threads/mtx_unlock.c
- sh mk/deps.sh src/threads/mtx_unlock.c
+all: mk/labs.d
+mk/labs.d: src/stdlib/labs.c
+ sh mk/deps.sh src/stdlib/labs.c
-all: mk/mtx_lock.d
-mk/mtx_lock.d: src/threads/mtx_lock.c
- sh mk/deps.sh src/threads/mtx_lock.c
+all: mk/wctomb.d
+mk/wctomb.d: src/stdlib/wctomb.c
+ sh mk/deps.sh src/stdlib/wctomb.c
-all: mk/thrd_sleep.d
-mk/thrd_sleep.d: src/threads/thrd_sleep.c
- sh mk/deps.sh src/threads/thrd_sleep.c
+all: mk/strtoll.d
+mk/strtoll.d: src/stdlib/strtoll.c
+ sh mk/deps.sh src/stdlib/strtoll.c
-all: mk/tss_delete.d
-mk/tss_delete.d: src/threads/tss_delete.c
- sh mk/deps.sh src/threads/tss_delete.c
+all: mk/ldiv.d
+mk/ldiv.d: src/stdlib/ldiv.c
+ sh mk/deps.sh src/stdlib/ldiv.c
-all: mk/thrd_yield.d
-mk/thrd_yield.d: src/threads/thrd_yield.c
- sh mk/deps.sh src/threads/thrd_yield.c
+all: mk/quick_exit.d
+mk/quick_exit.d: src/stdlib/quick_exit.c
+ sh mk/deps.sh src/stdlib/quick_exit.c
-all: mk/cnd_init.d
-mk/cnd_init.d: src/threads/cnd_init.c
- sh mk/deps.sh src/threads/cnd_init.c
+all: mk/strtoul.d
+mk/strtoul.d: src/stdlib/strtoul.c
+ sh mk/deps.sh src/stdlib/strtoul.c
-all: mk/tss_get.d
-mk/tss_get.d: src/threads/tss_get.c
- sh mk/deps.sh src/threads/tss_get.c
+all: mk/mbtowc.d
+mk/mbtowc.d: src/stdlib/mbtowc.c
+ sh mk/deps.sh src/stdlib/mbtowc.c
-all: mk/mtx_trylock.d
-mk/mtx_trylock.d: src/threads/mtx_trylock.c
- sh mk/deps.sh src/threads/mtx_trylock.c
+all: mk/strtof.d
+mk/strtof.d: src/stdlib/strtof.c
+ sh mk/deps.sh src/stdlib/strtof.c
-all: mk/mtx_destroy.d
-mk/mtx_destroy.d: src/threads/mtx_destroy.c
- sh mk/deps.sh src/threads/mtx_destroy.c
+all: mk/system.d
+mk/system.d: src/stdlib/system.c
+ sh mk/deps.sh src/stdlib/system.c
-all: mk/thrd_exit.d
-mk/thrd_exit.d: src/threads/thrd_exit.c
- sh mk/deps.sh src/threads/thrd_exit.c
+all: mk/abort.d
+mk/abort.d: src/stdlib/abort.c
+ sh mk/deps.sh src/stdlib/abort.c
-all: mk/tss_set.d
-mk/tss_set.d: src/threads/tss_set.c
- sh mk/deps.sh src/threads/tss_set.c
+all: mk/abort_handler_s.d
+mk/abort_handler_s.d: src/stdlib/abort_handler_s.c
+ sh mk/deps.sh src/stdlib/abort_handler_s.c
-all: mk/cnd_broadcast.d
-mk/cnd_broadcast.d: src/threads/cnd_broadcast.c
- sh mk/deps.sh src/threads/cnd_broadcast.c
+all: mk/mbstowcs_s.d
+mk/mbstowcs_s.d: src/stdlib/mbstowcs_s.c
+ sh mk/deps.sh src/stdlib/mbstowcs_s.c
-all: mk/iswlower.d
-mk/iswlower.d: src/wctype/iswlower.c
- sh mk/deps.sh src/wctype/iswlower.c
+all: mk/atoll.d
+mk/atoll.d: src/stdlib/atoll.c
+ sh mk/deps.sh src/stdlib/atoll.c
-all: mk/iswxdigit.d
-mk/iswxdigit.d: src/wctype/iswxdigit.c
- sh mk/deps.sh src/wctype/iswxdigit.c
+all: mk/wcstombs.d
+mk/wcstombs.d: src/stdlib/wcstombs.c
+ sh mk/deps.sh src/stdlib/wcstombs.c
-all: mk/iswpunct.d
-mk/iswpunct.d: src/wctype/iswpunct.c
- sh mk/deps.sh src/wctype/iswpunct.c
+all: mk/qsort.d
+mk/qsort.d: src/stdlib/qsort.c
+ sh mk/deps.sh src/stdlib/qsort.c
-all: mk/towupper.d
-mk/towupper.d: src/wctype/towupper.c
- sh mk/deps.sh src/wctype/towupper.c
+all: mk/strtold.d
+mk/strtold.d: src/stdlib/strtold.c
+ sh mk/deps.sh src/stdlib/strtold.c
-all: mk/iswcntrl.d
-mk/iswcntrl.d: src/wctype/iswcntrl.c
- sh mk/deps.sh src/wctype/iswcntrl.c
+all: mk/free.d
+mk/free.d: src/stdlib/free.c
+ sh mk/deps.sh src/stdlib/free.c
-all: mk/iswprint.d
-mk/iswprint.d: src/wctype/iswprint.c
- sh mk/deps.sh src/wctype/iswprint.c
+all: mk/strtoull.d
+mk/strtoull.d: src/stdlib/strtoull.c
+ sh mk/deps.sh src/stdlib/strtoull.c
-all: mk/iswblank.d
-mk/iswblank.d: src/wctype/iswblank.c
- sh mk/deps.sh src/wctype/iswblank.c
+all: mk/mblen.d
+mk/mblen.d: src/stdlib/mblen.c
+ sh mk/deps.sh src/stdlib/mblen.c
-all: mk/iswgraph.d
-mk/iswgraph.d: src/wctype/iswgraph.c
- sh mk/deps.sh src/wctype/iswgraph.c
+all: mk/abs.d
+mk/abs.d: src/stdlib/abs.c
+ sh mk/deps.sh src/stdlib/abs.c
-all: mk/towctrans.d
-mk/towctrans.d: src/wctype/towctrans.c
- sh mk/deps.sh src/wctype/towctrans.c
+all: mk/lldiv.d
+mk/lldiv.d: src/stdlib/lldiv.c
+ sh mk/deps.sh src/stdlib/lldiv.c
-all: mk/iswdigit.d
-mk/iswdigit.d: src/wctype/iswdigit.c
- sh mk/deps.sh src/wctype/iswdigit.c
+all: mk/ignore_handler_s.d
+mk/ignore_handler_s.d: src/stdlib/ignore_handler_s.c
+ sh mk/deps.sh src/stdlib/ignore_handler_s.c
-all: mk/iswctype.d
-mk/iswctype.d: src/wctype/iswctype.c
- sh mk/deps.sh src/wctype/iswctype.c
+all: mk/atof.d
+mk/atof.d: src/stdlib/atof.c
+ sh mk/deps.sh src/stdlib/atof.c
-all: mk/wctype.d
-mk/wctype.d: src/wctype/wctype.c
- sh mk/deps.sh src/wctype/wctype.c
+all: mk/srand.d
+mk/srand.d: src/stdlib/srand.c
+ sh mk/deps.sh src/stdlib/srand.c
-all: mk/wctrans.d
-mk/wctrans.d: src/wctype/wctrans.c
- sh mk/deps.sh src/wctype/wctrans.c
+all: mk/at_quick_exit.d
+mk/at_quick_exit.d: src/stdlib/at_quick_exit.c
+ sh mk/deps.sh src/stdlib/at_quick_exit.c
-all: mk/iswalnum.d
-mk/iswalnum.d: src/wctype/iswalnum.c
- sh mk/deps.sh src/wctype/iswalnum.c
+all: mk/mbstowcs.d
+mk/mbstowcs.d: src/stdlib/mbstowcs.c
+ sh mk/deps.sh src/stdlib/mbstowcs.c
-all: mk/iswupper.d
-mk/iswupper.d: src/wctype/iswupper.c
- sh mk/deps.sh src/wctype/iswupper.c
+all: mk/wcstombs_s.d
+mk/wcstombs_s.d: src/stdlib/wcstombs_s.c
+ sh mk/deps.sh src/stdlib/wcstombs_s.c
-all: mk/iswalpha.d
-mk/iswalpha.d: src/wctype/iswalpha.c
- sh mk/deps.sh src/wctype/iswalpha.c
+all: mk/getenv.d
+mk/getenv.d: src/stdlib/getenv.c
+ sh mk/deps.sh src/stdlib/getenv.c
-all: mk/iswspace.d
-mk/iswspace.d: src/wctype/iswspace.c
- sh mk/deps.sh src/wctype/iswspace.c
+all: mk/qsort_s.d
+mk/qsort_s.d: src/stdlib/qsort_s.c
+ sh mk/deps.sh src/stdlib/qsort_s.c
-all: mk/towlower.d
-mk/towlower.d: src/wctype/towlower.c
- sh mk/deps.sh src/wctype/towlower.c
+all: mk/malloc.d
+mk/malloc.d: src/stdlib/malloc.c
+ sh mk/deps.sh src/stdlib/malloc.c
-all: mk/feclearexcept.d
-mk/feclearexcept.d: src/fenv/feclearexcept.c
- sh mk/deps.sh src/fenv/feclearexcept.c
+all: mk/atoi.d
+mk/atoi.d: src/stdlib/atoi.c
+ sh mk/deps.sh src/stdlib/atoi.c
-all: mk/fesetround.d
-mk/fesetround.d: src/fenv/fesetround.c
- sh mk/deps.sh src/fenv/fesetround.c
+all: mk/getenv_s.d
+mk/getenv_s.d: src/stdlib/getenv_s.c
+ sh mk/deps.sh src/stdlib/getenv_s.c
-all: mk/feholdexcept.d
-mk/feholdexcept.d: src/fenv/feholdexcept.c
- sh mk/deps.sh src/fenv/feholdexcept.c
+all: mk/exit.d
+mk/exit.d: src/stdlib/exit.c
+ sh mk/deps.sh src/stdlib/exit.c
-all: mk/feraiseexcept.d
-mk/feraiseexcept.d: src/fenv/feraiseexcept.c
- sh mk/deps.sh src/fenv/feraiseexcept.c
+all: mk/rand.d
+mk/rand.d: src/stdlib/rand.c
+ sh mk/deps.sh src/stdlib/rand.c
-all: mk/feupdateenv.d
-mk/feupdateenv.d: src/fenv/feupdateenv.c
- sh mk/deps.sh src/fenv/feupdateenv.c
+all: mk/bsearch.d
+mk/bsearch.d: src/stdlib/bsearch.c
+ sh mk/deps.sh src/stdlib/bsearch.c
-all: mk/fegetenv.d
-mk/fegetenv.d: src/fenv/fegetenv.c
- sh mk/deps.sh src/fenv/fegetenv.c
+all: mk/set_constraint_handler_s.d
+mk/set_constraint_handler_s.d: src/stdlib/set_constraint_handler_s.c
+ sh mk/deps.sh src/stdlib/set_constraint_handler_s.c
-all: mk/fesetenv.d
-mk/fesetenv.d: src/fenv/fesetenv.c
- sh mk/deps.sh src/fenv/fesetenv.c
+all: mk/strtol.d
+mk/strtol.d: src/stdlib/strtol.c
+ sh mk/deps.sh src/stdlib/strtol.c
-all: mk/fesetexceptflag.d
-mk/fesetexceptflag.d: src/fenv/fesetexceptflag.c
- sh mk/deps.sh src/fenv/fesetexceptflag.c
+all: mk/atexit.d
+mk/atexit.d: src/stdlib/atexit.c
+ sh mk/deps.sh src/stdlib/atexit.c
-all: mk/fegetround.d
-mk/fegetround.d: src/fenv/fegetround.c
- sh mk/deps.sh src/fenv/fegetround.c
+all: mk/atol.d
+mk/atol.d: src/stdlib/atol.c
+ sh mk/deps.sh src/stdlib/atol.c
-all: mk/fetestexcept.d
-mk/fetestexcept.d: src/fenv/fetestexcept.c
- sh mk/deps.sh src/fenv/fetestexcept.c
+all: mk/__jkmalloc.d
+mk/__jkmalloc.d: src/stdlib/__jkmalloc.c
+ sh mk/deps.sh src/stdlib/__jkmalloc.c
-all: mk/fegetexceptflag.d
-mk/fegetexceptflag.d: src/fenv/fegetexceptflag.c
- sh mk/deps.sh src/fenv/fegetexceptflag.c
+all: mk/wctomb_s.d
+mk/wctomb_s.d: src/stdlib/wctomb_s.c
+ sh mk/deps.sh src/stdlib/wctomb_s.c
-all: mk/__fenv.d
-mk/__fenv.d: src/fenv/__fenv.c
- sh mk/deps.sh src/fenv/__fenv.c
+all: mk/strtod.d
+mk/strtod.d: src/stdlib/strtod.c
+ sh mk/deps.sh src/stdlib/strtod.c
-all: mk/va_copy.d
-mk/va_copy.d: src/stdarg/va_copy.c
- sh mk/deps.sh src/stdarg/va_copy.c
+all: mk/bsearch_s.d
+mk/bsearch_s.d: src/stdlib/bsearch_s.c
+ sh mk/deps.sh src/stdlib/bsearch_s.c
-all: mk/va_start.d
-mk/va_start.d: src/stdarg/va_start.c
- sh mk/deps.sh src/stdarg/va_start.c
+all: mk/realloc.d
+mk/realloc.d: src/stdlib/realloc.c
+ sh mk/deps.sh src/stdlib/realloc.c
-all: mk/va_arg.d
-mk/va_arg.d: src/stdarg/va_arg.c
- sh mk/deps.sh src/stdarg/va_arg.c
+all: mk/__stdlib.d
+mk/__stdlib.d: src/stdlib/__stdlib.c
+ sh mk/deps.sh src/stdlib/__stdlib.c
-all: mk/va_end.d
-mk/va_end.d: src/stdarg/va_end.c
- sh mk/deps.sh src/stdarg/va_end.c
+all: mk/calloc.d
+mk/calloc.d: src/stdlib/calloc.c
+ sh mk/deps.sh src/stdlib/calloc.c
+
+all: mk/div.d
+mk/div.d: src/stdlib/div.c
+ sh mk/deps.sh src/stdlib/div.c
all: mk/__sys.x86-64.s.d
mk/__sys.x86-64.s.d: src/__sys.x86-64.s
sh mk/deps.sh src/__sys.x86-64.s
-all: mk/__setjmp.x86-64.s.d
-mk/__setjmp.x86-64.s.d: src/setjmp/__setjmp.x86-64.s
- sh mk/deps.sh src/setjmp/__setjmp.x86-64.s
-
all: mk/__longjmp.x86-64.s.d
mk/__longjmp.x86-64.s.d: src/setjmp/__longjmp.x86-64.s
sh mk/deps.sh src/setjmp/__longjmp.x86-64.s
+all: mk/__setjmp.x86-64.s.d
+mk/__setjmp.x86-64.s.d: src/setjmp/__setjmp.x86-64.s
+ sh mk/deps.sh src/setjmp/__setjmp.x86-64.s
+
diff --git a/mk/fputws.d b/mk/fputws.d
index 828c5c41..03bb2a4a 100644
--- a/mk/fputws.d
+++ b/mk/fputws.d
@@ -3,6 +3,7 @@ libc.a(fputws.o): $(OBJDIR)/fputws.o
@$(AR) $(ARFLAGS) $@ $(OBJDIR)/$%
$(OBJDIR)/fputws.o: src/wchar/fputws.c
+$(OBJDIR)/fputws.o: src/_safety.h
$(OBJDIR)/fputws.o:
@mkdir -p $(@D)
$(CC) -c -o $@ $(CFLAGS) src/wchar/fputws.c
diff --git a/mk/free.d b/mk/free.d
index 12ce639c..75aa1c6c 100644
--- a/mk/free.d
+++ b/mk/free.d
@@ -4,6 +4,7 @@ libc.a(free.o): $(OBJDIR)/free.o
$(OBJDIR)/free.o: src/stdlib/free.c
$(OBJDIR)/free.o: src/stdlib/_stdlib.h
+$(OBJDIR)/free.o: src/stdlib/_jkmalloc.h
$(OBJDIR)/free.o:
@mkdir -p $(@D)
$(CC) -c -o $@ $(CFLAGS) src/stdlib/free.c
diff --git a/mk/malloc.d b/mk/malloc.d
index dd7634e1..0787abe4 100644
--- a/mk/malloc.d
+++ b/mk/malloc.d
@@ -4,6 +4,7 @@ libc.a(malloc.o): $(OBJDIR)/malloc.o
$(OBJDIR)/malloc.o: src/stdlib/malloc.c
$(OBJDIR)/malloc.o: src/stdlib/_stdlib.h
+$(OBJDIR)/malloc.o: src/stdlib/_jkmalloc.h
$(OBJDIR)/malloc.o:
@mkdir -p $(@D)
$(CC) -c -o $@ $(CFLAGS) src/stdlib/malloc.c
diff --git a/mk/realloc.d b/mk/realloc.d
index ebd23a12..bdd57d5b 100644
--- a/mk/realloc.d
+++ b/mk/realloc.d
@@ -4,7 +4,7 @@ libc.a(realloc.o): $(OBJDIR)/realloc.o
$(OBJDIR)/realloc.o: src/stdlib/realloc.c
$(OBJDIR)/realloc.o: src/stdlib/_stdlib.h
-$(OBJDIR)/realloc.o: src/_syscall.h
+$(OBJDIR)/realloc.o: src/stdlib/_jkmalloc.h
$(OBJDIR)/realloc.o:
@mkdir -p $(@D)
$(CC) -c -o $@ $(CFLAGS) src/stdlib/realloc.c
diff --git a/mk/setlocale.d b/mk/setlocale.d
index ff2904da..9b6e067b 100644
--- a/mk/setlocale.d
+++ b/mk/setlocale.d
@@ -5,6 +5,7 @@ libc.a(setlocale.o): $(OBJDIR)/setlocale.o
$(OBJDIR)/setlocale.o: src/locale/setlocale.c
$(OBJDIR)/setlocale.o: src/locale/_locale.h
$(OBJDIR)/setlocale.o: src/_safety.h
+$(OBJDIR)/setlocale.o: src/_readonly.h
$(OBJDIR)/setlocale.o:
@mkdir -p $(@D)
$(CC) -c -o $@ $(CFLAGS) src/locale/setlocale.c
diff --git a/mk/strerror.d b/mk/strerror.d
index 518632b0..d3bcda7e 100644
--- a/mk/strerror.d
+++ b/mk/strerror.d
@@ -4,6 +4,7 @@ libc.a(strerror.o): $(OBJDIR)/strerror.o
$(OBJDIR)/strerror.o: src/string/strerror.c
$(OBJDIR)/strerror.o: src/_safety.h
+$(OBJDIR)/strerror.o: src/_readonly.h
$(OBJDIR)/strerror.o: src/string/_strerror.h
$(OBJDIR)/strerror.o:
@mkdir -p $(@D)
diff --git a/mk/wcrtomb.d b/mk/wcrtomb.d
index aed88888..e83f788b 100644
--- a/mk/wcrtomb.d
+++ b/mk/wcrtomb.d
@@ -3,6 +3,7 @@ libc.a(wcrtomb.o): $(OBJDIR)/wcrtomb.o
@$(AR) $(ARFLAGS) $@ $(OBJDIR)/$%
$(OBJDIR)/wcrtomb.o: src/wchar/wcrtomb.c
+$(OBJDIR)/wcrtomb.o: src/_safety.h
$(OBJDIR)/wcrtomb.o:
@mkdir -p $(@D)
$(CC) -c -o $@ $(CFLAGS) src/wchar/wcrtomb.c
diff --git a/src/__readonly.c b/src/__readonly.c
new file mode 100644
index 00000000..74837a91
--- /dev/null
+++ b/src/__readonly.c
@@ -0,0 +1,37 @@
+#include <stdlib.h>
+#include "_readonly.h"
+
+#ifdef _POSIX_C_SOURCE
+#include <sys/mman.h>
+#include <limits.h>
+#else
+#include "_syscall.h"
+#define mprotect(__ptr, __len, __prot) __syscall(__sys_mprotect, __ptr, __len, __prot)
+#define PROT_READ 1
+#define PROT_WRITE 2
+#define PAGESIZE 4096
+#endif
+
+void* __readonly(ro_action_t action, void *ptr)
+{
+ switch (action) {
+ case RO_ALLOC:
+ /* set magic to JK_READONLY */
+ /* set label to ptr */
+ return malloc(PAGESIZE);
+
+ case RO_FREE:
+ free(ptr);
+ return NULL;
+
+ case RO_LOCK:
+ mprotect(ptr, PAGESIZE, PROT_READ);
+ break;
+
+ case RO_UNLOCK:
+ mprotect(ptr, PAGESIZE, PROT_READ | PROT_WRITE);
+ break;
+ }
+
+ return ptr;
+}
diff --git a/src/_readonly.h b/src/_readonly.h
new file mode 100644
index 00000000..a3e07d60
--- /dev/null
+++ b/src/_readonly.h
@@ -0,0 +1,12 @@
+#ifndef ___READONLY_H__
+
+typedef enum {
+ RO_ALLOC,
+ RO_FREE,
+ RO_LOCK,
+ RO_UNLOCK,
+} ro_action_t;
+
+void *__readonly(ro_action_t, void *);
+
+#endif
diff --git a/src/_syscall.h b/src/_syscall.h
index aa97fadf..d47aff32 100644
--- a/src/_syscall.h
+++ b/src/_syscall.h
@@ -83,6 +83,7 @@ long __syscall(long __number, ...);
#define __sys_mknod 133
#define __sys_mmap 9
#define __sys_munmap 11
+#define __sys_mprotect 10
#define __sys_nanosleep 35
/* needed for POSIX < 199309 when nanosleep becomes __nanosleep */
diff --git a/src/locale/setlocale.c b/src/locale/setlocale.c
index bfc15342..43a69787 100644
--- a/src/locale/setlocale.c
+++ b/src/locale/setlocale.c
@@ -3,11 +3,13 @@
#include <stdlib.h>
#include "_locale.h"
#include "_safety.h"
+#include "_readonly.h"
/** get or set program locale **/
char * setlocale(int category, const char *locale)
{
+ static char *retname = NULL;
struct __locale_t *l = __get_locale();
int mask = 0;
@@ -42,7 +44,13 @@ char * setlocale(int category, const char *locale)
}
/* TODO: mark return value read-only */
- return __load_locale(l, mask, locale);
+ if (retname == NULL) {
+ retname = __readonly(RO_ALLOC, "setlocale");
+ }
+ __readonly(RO_UNLOCK, retname);
+ strcpy(retname, __load_locale(l, mask, locale));
+ //__readonly(RO_LOCK, retname);
+ return retname;
}
CHECK_2(char *, NULL, setlocale, int, const char *)
diff --git a/src/signal/sigaction.c b/src/signal/sigaction.c
index f95301e9..1e9db8cb 100644
--- a/src/signal/sigaction.c
+++ b/src/signal/sigaction.c
@@ -1,9 +1,8 @@
-#if 0
#include <stddef.h>
-#include <sys/types.h>
#include <signal.h>
#include "_syscall.h"
+#include "_safety.h"
int sigaction(int sig, const struct sigaction * restrict act, struct sigaction * restrict oact)
{
@@ -12,7 +11,7 @@ int sigaction(int sig, const struct sigaction * restrict act, struct sigaction *
struct linux_action {
union {
void (*handler)(int);
- void (*action)(int, struct sigaction *, void *);
+ void (*action)(int, siginfo_t *, void *);
} fn;
unsigned long flags;
void (*restorer)(void);
@@ -27,6 +26,7 @@ int sigaction(int sig, const struct sigaction * restrict act, struct sigaction *
#ifdef SA_SIGINFO
if (act->sa_flags & SA_SIGINFO) {
a.fn.action = act->sa_sigaction;
+ }
#endif
a.flags = act->sa_flags;
@@ -51,6 +51,3 @@ int sigaction(int sig, const struct sigaction * restrict act, struct sigaction *
/*
POSIX(1)
*/
-
-
-#endif
diff --git a/src/signal/siginfo_t.h b/src/signal/siginfo_t.h
index 39c0b19a..19a443e8 100644
--- a/src/signal/siginfo_t.h
+++ b/src/signal/siginfo_t.h
@@ -1,5 +1,6 @@
#include <signal.h>
+#if 0
typedef struct {
int si_signo;
int si_code;
@@ -11,6 +12,80 @@ typedef struct {
int si_errno;
union sigval si_value;
} siginfo_t;
+#else
+
+typedef struct {
+#ifdef __SI_SWAP_ERRNO_CODE
+ int si_signo, si_code, si_errno;
+#else
+ int si_signo, si_errno, si_code;
+#endif
+ union {
+ char __pad[128 - 2*sizeof(int) - sizeof(long)];
+ struct {
+ union {
+ struct {
+ pid_t si_pid;
+ uid_t si_uid;
+ } __piduid;
+ struct {
+ int si_timerid;
+ int si_overrun;
+ } __timer;
+ } __first;
+ union {
+ union sigval si_value;
+ struct {
+ int si_status;
+ clock_t si_utime, si_stime;
+ } __sigchld;
+ } __second;
+ } __si_common;
+ struct {
+ void *si_addr;
+ short si_addr_lsb;
+ union {
+ struct {
+ void *si_lower;
+ void *si_upper;
+ } __addr_bnd;
+ unsigned si_pkey;
+ } __first;
+ } __sigfault;
+ struct {
+ long si_band;
+ int si_fd;
+ } __sigpoll;
+ struct {
+ void *si_call_addr;
+ int si_syscall;
+ unsigned si_arch;
+ } __sigsys;
+ } __si_fields;
+} siginfo_t;
+
+#define si_pid __si_fields.__si_common.__first.__piduid.si_pid
+#define si_uid __si_fields.__si_common.__first.__piduid.si_uid
+#define si_status __si_fields.__si_common.__second.__sigchld.si_status
+#define si_utime __si_fields.__si_common.__second.__sigchld.si_utime
+#define si_stime __si_fields.__si_common.__second.__sigchld.si_stime
+#define si_value __si_fields.__si_common.__second.si_value
+#define si_addr __si_fields.__sigfault.si_addr
+#define si_addr_lsb __si_fields.__sigfault.si_addr_lsb
+#define si_lower __si_fields.__sigfault.__first.__addr_bnd.si_lower
+#define si_upper __si_fields.__sigfault.__first.__addr_bnd.si_upper
+#define si_pkey __si_fields.__sigfault.__first.si_pkey
+#define si_band __si_fields.__sigpoll.si_band
+#define si_fd __si_fields.__sigpoll.si_fd
+#define si_timerid __si_fields.__si_common.__first.__timer.si_timerid
+#define si_overrun __si_fields.__si_common.__first.__timer.si_overrun
+#define si_ptr si_value.sival_ptr
+#define si_int si_value.sival_int
+#define si_call_addr __si_fields.__sigsys.si_call_addr
+#define si_syscall __si_fields.__sigsys.si_syscall
+#define si_arch __si_fields.__sigsys.si_arch
+
+#endif
/*
XOPEN(400)
diff --git a/src/stdlib/__jkmalloc.c b/src/stdlib/__jkmalloc.c
new file mode 100644
index 00000000..b97fa10c
--- /dev/null
+++ b/src/stdlib/__jkmalloc.c
@@ -0,0 +1,381 @@
+#include <errno.h>
+#include <limits.h>
+#include <stdlib.h>
+#include <signal.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+
+#ifdef _XOPEN_SOURCE
+#include <fcntl.h>
+#include <sys/mman.h>
+#include <unistd.h>
+#else
+#include "_syscall.h"
+
+#define sysconf(__n) 4096
+
+#define mprotect(__ptr, __len, __prot) __syscall(__sys_mprotect, __ptr, __len, __prot)
+#define mmap(_a, _l, _p, _fl, _fd, _o) (void*)__syscall(__sys_mmap, _a, _l, _p, _fl, _fd, _o)
+#define munmap(_a, _l) __syscall(__sys_munmap, _a, _l)
+#define open(_p, _a, _m) __syscall(__sys_open, _p, _a, _m)
+
+typedef unsigned long pid_t;
+typedef unsigned long uid_t;
+typedef unsigned long clock_t;
+#include "signal/sigset_t.h"
+#include "signal/union_sigval.h"
+#include "signal/siginfo_t.h"
+
+#define _POSIX_C_SOURCE 199506L
+#include "signal/struct_sigaction.h"
+
+static int sigaction(int, const struct sigaction * restrict, struct sigaction * restrict);
+
+#include "signal/sigaction.c"
+
+#define SA_RESTART 0x10000000
+#define SA_RESTORER 0x04000000
+
+#define O_RDWR 02
+#define PROT_NONE 0x0
+#define PROT_READ 0x1
+#define PROT_WRITE 0x2
+#define MAP_PRIVATE 0x02
+#define MAP_FAILED (void*)(-1)
+#define MAP_ANONYMOUS (0x20)
+#define psiginfo(x, y) fprintf(stderr, "%s (%p)\n", (char*)(y), (void*)(x))
+
+#define sigemptyset(x) memset(x, 0, sizeof(*x))
+
+#endif
+
+#include "_jkmalloc.h"
+
+#if defined __OpenBSD__ || defined __FreeBSD__ || defined __APPLE__
+#define psiginfo(x, y) ((y) ? fprintf(stderr, "%s\n", (char*)(y)) : 0)
+#ifndef SA_SIGINFO
+#define SA_SIGINFO (0)
+#endif
+#endif
+
+#define PTR_BITS (CHAR_BIT * sizeof(uintptr_t))
+
+#define JKMALLOC_EXIT_VALUE (127 + SIGSEGV)
+#define JK_FREE_LIST_SIZE (8)
+
+/* magic numbers derived from CRC-32 of jk_foo_block */
+#define JK_FREE_MAGIC (0x551a51dc)
+#define JK_UNDER_MAGIC (0xcb2873ac)
+#define JK_OVER_MAGIC (0x18a12c17)
+#define JK_RONLY_MAGIC (0xdeadb00d)
+
+#define jk_pages(bytes) (((bytes + __jk_pagesize - 1) / __jk_pagesize) + 2)
+#define jk_pageof(addr) ((void*)((uintptr_t)addr - ((uintptr_t)addr % __jk_pagesize)))
+#define jk_bucketof(addr) ((void*)((uintptr_t)jk_pageof(addr) - __jk_pagesize))
+
+struct jk_bucket {
+ uint32_t magic;
+ uintptr_t start;
+ size_t size;
+ size_t align;
+ size_t pages;
+ size_t tlen;
+ char trace[];
+};
+
+struct jk_source {
+ const char *file;
+ const char *func;
+ uintmax_t line;
+ struct jk_bucket *bucket;
+};
+
+static struct jk_bucket *__jk_free_list[JK_FREE_LIST_SIZE];
+static size_t __jk_free_buckets = 0;
+static size_t __jk_pagesize = 0;
+
+static void __jk_error(const char *s, void *addr, struct jk_source *src)
+{
+ if (s && *s) {
+ fputs(s, stderr);
+ if (addr != NULL) {
+ fprintf(stderr, "%p", addr);
+ }
+ fputs("\n", stderr);
+ }
+
+ if (src && src->bucket && src->bucket->trace[0] != '\0') {
+ fwrite(src->bucket->trace, src->bucket->tlen, 1, stderr);
+ fputs("\n", stderr);
+ }
+
+ if (src && src->file) {
+ fprintf(stderr, "!!! %s() (%s:%ju)\n", src->func, src->file, src->line);
+ }
+
+ _Exit(JKMALLOC_EXIT_VALUE);
+}
+
+static void *__jk_page_alloc(size_t npages)
+{
+ int fd = -1;
+ int prot = PROT_READ | PROT_WRITE;
+ int flags = MAP_PRIVATE;
+
+ #ifdef MAP_ANONYMOUS
+ flags |= MAP_ANONYMOUS;
+ #else
+ fd = open("/dev/zero", O_RDONLY, 0666);
+ #endif
+
+ void *pages = mmap(NULL, npages * __jk_pagesize, prot, flags, fd, 0);
+
+ #ifndef MAP_ANONYMOUS
+ if (fd != -1) {
+ close(fd);
+ }
+ #endif
+
+ return pages;
+}
+
+static void __jk_sigaction(int sig, siginfo_t *si, void *addr)
+{
+ ___signal.current = 0;
+ (void)sig; (void)addr;
+ if (si->si_addr == NULL) {
+ psiginfo(si, "NULL pointer dereference");
+ __jk_error(NULL, NULL, NULL);
+ }
+
+ struct jk_bucket *bucket = jk_pageof(si->si_addr);
+ if (mprotect(bucket, __jk_pagesize, PROT_READ) != 0) {
+ psiginfo(si, NULL);
+ __jk_error(NULL, NULL, NULL);
+ }
+
+ switch (bucket->magic) {
+ case JK_UNDER_MAGIC:
+ if (bucket->size == 0) {
+ psiginfo(si, "Attempt to use 0-byte allocation");
+ } else {
+ psiginfo(si, "Heap underflow detected");
+ }
+ break;
+
+ case JK_OVER_MAGIC:
+ if (bucket->size == 0) {
+ psiginfo(si, "Attempt to use 0-byte allocation");
+ } else {
+ psiginfo(si, "Heap overflow detected");
+ fprintf(stderr, "Allocation of size %zu at %p, overflow at %p (offset %zu)\n", bucket->size, (void*)bucket->start, si->si_addr, (size_t)((char*)si->si_addr - (char*)bucket->start));
+ fprintf(stderr, "Buffer begins with %4s\n", (char*)bucket->start);
+ }
+ break;
+
+ case JK_FREE_MAGIC:
+ psiginfo(si, "Use after free() detected");
+ break;
+
+ default:
+ psiginfo(si, NULL);
+ }
+
+ struct jk_source src = { .bucket = bucket };
+ __jk_error(NULL, NULL, &src);
+}
+
+/*
+static void jk_sigsegv(int sig)
+{
+ ___signal.current = 0;
+ fprintf(stderr, "JK SIGSEGV!\n");
+ __jk_sigaction(sig, NULL, NULL);
+}
+*/
+
+void* __jkmalloc(const char *file, const char *func, uintmax_t line, void *ptr, size_t alignment, size_t size1, size_t size2)
+{
+ static int sa_set = 0;
+ if (!sa_set) {
+ struct sigaction sa = {
+ .sa_flags = SA_SIGINFO,
+ .sa_sigaction = __jk_sigaction,
+ };
+ //sigemptyset(&sa.sa_mask);
+ sigaction(SIGSEGV, &sa, NULL);
+ //signal(SIGSEGV, jk_sigsegv);
+ sa_set = 1;
+ }
+
+ if (__jk_pagesize == 0) {
+ __jk_pagesize = sysconf(_SC_PAGESIZE);
+ }
+
+ struct jk_source src = {
+ .file = file,
+ .func = func,
+ .line = line,
+ };
+
+ /* free() */
+ if (alignment == 0) {
+ if (ptr == NULL) {
+ return NULL;
+ }
+
+ /* TODO: Add source line information to the following errors */
+
+ struct jk_bucket *b = jk_bucketof(ptr);
+ if (mprotect(b, __jk_pagesize, PROT_READ | PROT_WRITE) != 0) {
+ __jk_error("Attempt to free() non-dynamic address", ptr, &src);
+ }
+
+ src.bucket = b;
+
+ if (b->magic == JK_FREE_MAGIC) {
+ __jk_error("Double free() detected", ptr, &src);
+ }
+
+ if (b->magic != JK_UNDER_MAGIC) {
+ __jk_error("Attempt to free() non-dynamic address", ptr, &src);
+ }
+
+ if (b->start != (uintptr_t)ptr) {
+ __jk_error("Attempt to free() incorrect address", ptr, &src);
+ }
+
+ char *base = (char*)b;
+ mprotect(base, __jk_pagesize * b->pages, PROT_READ | PROT_WRITE);
+
+ if (file) {
+ size_t len = b->tlen;
+ b->tlen += snprintf(b->trace + len, __jk_pagesize - sizeof(*b) - len,
+ "%s--- %s() (%s:%ju)", len ? "\n" : "", func, file, line);
+ }
+
+ b->magic = JK_FREE_MAGIC;
+
+ for (size_t i = 1; i < b->pages; i++) {
+ memmove(base + i * __jk_pagesize, b, __jk_pagesize);
+ }
+
+ size_t fb = __jk_free_buckets % JK_FREE_LIST_SIZE;
+ if (__jk_free_buckets > JK_FREE_LIST_SIZE) {
+ mprotect(__jk_free_list[fb], __jk_pagesize, PROT_READ);
+ munmap(__jk_free_list[fb], __jk_pagesize * __jk_free_list[fb]->pages);
+ }
+ __jk_free_list[fb] = b;
+ __jk_free_buckets++;
+ mprotect(b, __jk_pagesize * b->pages, PROT_NONE);
+ return NULL;
+ }
+
+ /* realloc() */
+ if (ptr) {
+
+ /* TODO: Add source line information to the following errors */
+
+ struct jk_bucket *b = jk_bucketof(ptr);
+ if (mprotect(b, __jk_pagesize, PROT_READ | PROT_WRITE) != 0) {
+ __jk_error("Attempt to realloc() non-dynamic address", ptr, &src);
+ }
+
+ src.bucket = b;
+
+ if (b->magic == JK_FREE_MAGIC) {
+ __jk_error("Attempt to realloc() after free()", ptr, &src);
+ }
+
+ if (b->magic != JK_UNDER_MAGIC) {
+ __jk_error("Attempt to realloc() non-dynamic address", ptr, &src);
+ }
+
+ if (b->start != (uintptr_t)ptr) {
+ __jk_error("Attempt to reallocate() incorrect address", ptr, &src);
+ }
+
+ void *newptr = __jkmalloc(NULL, NULL, 0, NULL, alignment, size1, size2);
+ if (newptr != NULL) {
+ memmove(newptr, ptr, b->size);
+ free(ptr);
+ }
+ return newptr;
+ }
+
+ size_t size = size1;
+
+ /* calloc() */
+ if (size2) {
+ size = size1 * size2;
+ if (size < size1 || size < size2) {
+ /* overflow */
+ errno = ENOMEM;
+ return NULL;
+ }
+ }
+
+ size_t pages = jk_pages(size);
+
+ struct jk_bucket *under = __jk_page_alloc(pages);
+ if (under == MAP_FAILED) {
+ errno = ENOMEM;
+ return NULL;
+ }
+
+ under->magic = JK_UNDER_MAGIC;
+ under->size = size;
+ under->align = alignment;
+ under->pages = pages;
+ under->start = (uintptr_t)under + __jk_pagesize;
+ if (size % __jk_pagesize != 0) {
+ under->start += __jk_pagesize - size % __jk_pagesize;
+ if (under->start % under->align != 0) {
+ under->start -= under->start % under->align;
+ }
+ }
+
+ struct jk_bucket *over = (void*)((char*)under + __jk_pagesize * (pages - 1));
+ over->magic = JK_OVER_MAGIC;
+ over->start = under->start;
+ over->size = under->size;
+
+ ptr = (void*)under->start;
+
+ if (file) {
+ under->tlen = snprintf(under->trace, __jk_pagesize - sizeof(*under), "+++ %s() (%s:%ju)", func, file, line);
+ memmove(over->trace, under->trace, under->tlen + 1);
+ over->tlen = under->tlen;
+ } else {
+ under->trace[0] = '\0';
+ over->trace[0] = '\0';
+ }
+
+ /* calloc() */
+ if (size2) {
+ char *p = ptr;
+ for (size_t i = 0; i < size; i++) {
+ p[i] = '\0';
+ }
+ }
+
+ mprotect(under, __jk_pagesize, PROT_NONE);
+ mprotect(over, __jk_pagesize, PROT_NONE);
+ return ptr;
+}
+
+/*
+int (jk_memalign)(void **ptr, size_t a, size_t n)
+{
+ if (ptr == NULL) {
+ return EINVAL;
+ }
+
+ if (((*ptr) = __jkmalloc(NULL, NULL, 0, NULL, a, n, 0)) == NULL) {
+ return errno;
+ }
+
+ return 0;
+}
+*/
diff --git a/src/stdlib/_jkmalloc.h b/src/stdlib/_jkmalloc.h
new file mode 100644
index 00000000..8786acea
--- /dev/null
+++ b/src/stdlib/_jkmalloc.h
@@ -0,0 +1,6 @@
+#ifndef ___JKMALLOC_H__
+#define ___JKMALLOC_H__
+
+void* __jkmalloc(const char *file, const char *func, uintmax_t line, void *ptr, size_t alignment, size_t size1 , size_t size2);
+
+#endif
diff --git a/src/stdlib/aligned_alloc.c b/src/stdlib/aligned_alloc.c
index 983cb7de..f699014b 100644
--- a/src/stdlib/aligned_alloc.c
+++ b/src/stdlib/aligned_alloc.c
@@ -1,12 +1,11 @@
#include <stdlib.h>
#include "_stdlib.h"
+#include "_jkmalloc.h"
void *aligned_alloc(size_t alignment, size_t size)
{
SIGNAL_SAFE(0);
- /* all allocations are page aligned */
- (void)alignment;
- return malloc(size);
+ return __jkmalloc(NULL, NULL, 0, NULL, alignment, size, 0);
}
/*
diff --git a/src/stdlib/calloc.c b/src/stdlib/calloc.c
index e5b5f38b..b5203a57 100644
--- a/src/stdlib/calloc.c
+++ b/src/stdlib/calloc.c
@@ -1,30 +1,15 @@
#include <stdlib.h>
#include <string.h>
#include "_stdlib.h"
+#include "_jkmalloc.h"
/** allocate and initialize memory **/
void * calloc(size_t nmemb, size_t size)
{
- void *p = NULL;
- size_t total = nmemb * size;
-
SIGNAL_SAFE(0);
- if (total < nmemb || total < size) {
- return NULL;
- }
-
- if (nmemb == 0 || size == 0) {
- return NULL;
- }
-
- p = malloc(total);
- if (p != NULL) {
- memset(p, 0, size * nmemb);
- }
-
- return p;
+ return __jkmalloc(NULL, NULL, 0, NULL, 1, nmemb, size);
}
/***
diff --git a/src/stdlib/free.c b/src/stdlib/free.c
index e0a1270a..47c04dd0 100644
--- a/src/stdlib/free.c
+++ b/src/stdlib/free.c
@@ -1,5 +1,6 @@
#include <stdlib.h>
#include "_stdlib.h"
+#include "_jkmalloc.h"
/** deallocate memory **/
@@ -7,11 +8,9 @@ void free(void * ptr)
{
SIGNAL_SAFE(0);
- if (ptr == NULL) {
- return;
+ if (ptr) {
+ __jkmalloc(NULL, NULL, 0, ptr, 0, 0, 0);
}
-
- realloc(ptr, 0);
}
/***
diff --git a/src/stdlib/malloc.c b/src/stdlib/malloc.c
index 733d73b3..d372fd6b 100644
--- a/src/stdlib/malloc.c
+++ b/src/stdlib/malloc.c
@@ -1,16 +1,13 @@
#include <stdlib.h>
#include "_stdlib.h"
+#include "_jkmalloc.h"
/** allocate memory **/
void * malloc(size_t size)
{
SIGNAL_SAFE(0);
- if (size == 0) {
- return NULL;
- }
-
- return realloc(NULL, size);
+ return __jkmalloc(NULL, NULL, 0, NULL, 1, size, 0);
}
/***
diff --git a/src/stdlib/realloc.c b/src/stdlib/realloc.c
index 12729f87..17696bbf 100644
--- a/src/stdlib/realloc.c
+++ b/src/stdlib/realloc.c
@@ -1,28 +1,6 @@
-#if ((!defined _POSIX_C_SOURCE) || (_POSIX_C_SOURCE < 199309L))
-#undef _POSIX_C_SOURCE
-#define _POSIX_C_SOURCE 199309L /* force mmap() constants */
-#define POSIX_FORCED
-#endif
-
#include <stdlib.h>
#include "_stdlib.h"
-#if 0
-#include <sys/types.h>
-#include <fcntl.h>
-#include <sys/mman.h>
-#endif
-
-#ifdef POSIX_FORCED
-#include "_syscall.h"
-#define mmap(_a, _l, _p, _fl, _fd, _o) __scall6(mmap, _a, _l, _p, _fl, _fd, _o)
-#define open(_p, _a, _m) __scall3(open, _p, _a, _m)
-#endif
-
-#define O_RDWR 02
-#define PROT_READ 0x1
-#define PROT_WRITE 0x2
-#define MAP_PRIVATE 0x02
-#define MAP_FAILED (void*)(-1)
+#include "_jkmalloc.h"
/** change the amount of memory allocated **/
@@ -30,27 +8,7 @@ void * realloc(void * ptr, size_t size)
{
SIGNAL_SAFE(0);
- /* FIXME: forward dependency on POSIX.1b-1993, non-std /dev/zero */
- static int backing = -1;
-
- if (backing == -1) {
- backing = open("/dev/zero", O_RDWR /* | O_CLOEXEC */, 0);
- }
-
- if (ptr == NULL) {
- /* malloc() */
- ptr = (void*)(long)mmap(NULL, size, PROT_READ | PROT_WRITE,
- MAP_PRIVATE, backing, 0);
- if (ptr == MAP_FAILED) {
- return NULL;
- }
- } else if (size == 0) {
- /* free() */
- }
-
- /* TODO: reallocate */
-
- return ptr;
+ return __jkmalloc(NULL, NULL, 0, ptr, 1, size, 0);
}
/***
diff --git a/src/string/strerror.c b/src/string/strerror.c
index 69984886..5f83b2c4 100644
--- a/src/string/strerror.c
+++ b/src/string/strerror.c
@@ -2,17 +2,22 @@
#include <stdio.h>
#include <string.h>
#include "_safety.h"
-
-# define __LONGEST_STRERR 64 /* FIXME */
+#include "_readonly.h"
/** convert error number to string **/
char * strerror(int errnum)
{
- static char errstr[__LONGEST_STRERR+1];
+ static char *errstr = NULL;
SIGNAL_SAFE(0);
+ if (errstr == NULL) {
+ errstr = __readonly(RO_ALLOC, "strerror");
+ }
+
+ __readonly(RO_UNLOCK, errstr);
+
switch (errnum) {
#include "_strerror.h"
default:
@@ -20,6 +25,8 @@ char * strerror(int errnum)
break;
}
+ __readonly(RO_LOCK, errstr);
+
/*
RETURN_ALWAYS(a pointer to the message string);
*/
diff --git a/src/tgmath/acos.h b/src/tgmath/acos.h
new file mode 100644
index 00000000..c7697ea2
--- /dev/null
+++ b/src/tgmath/acos.h
@@ -0,0 +1,19 @@
+#define acos(__x) _Generic((__x), \
+ long double complex: cacosl, \
+ double complex: cacos, \
+ float complex: cacosf, \
+ long double: $sl, \
+ double: acos, \
+ unsigned long long: acos, \
+ long long: acos, \
+ unsigned long: acos, \
+ long: acos, \
+ unsigned int: acos, \
+ int: acos, \
+ unsigned short: acos, \
+ short: acos, \
+ unsigned char: acos, \
+ signed char: acos, \
+ char: acos, \
+ float: acos \
+ )(__x)\n