diff options
author | Jakob Kaivo <jkk@ung.org> | 2024-05-28 14:56:06 -0400 |
---|---|---|
committer | Jakob Kaivo <jkk@ung.org> | 2024-05-28 14:56:06 -0400 |
commit | b4cd7036bea6c6440fbbcdaebe53c864c87a5646 (patch) | |
tree | 260670ad9a9637c8c36d84b9cf77ec412017b038 | |
parent | a69b11fd8974a898a26081950bd4add7c82ea45d (diff) |
integrate jkmalloc/prep for readonly
-rw-r--r-- | mk/__jkmalloc.d | 10 | ||||
-rw-r--r-- | mk/__readonly.d | 10 | ||||
-rw-r--r-- | mk/aligned_alloc.d | 1 | ||||
-rw-r--r-- | mk/all.mk | 850 | ||||
-rw-r--r-- | mk/calloc.d | 1 | ||||
-rw-r--r-- | mk/deps.mk | 2794 | ||||
-rw-r--r-- | mk/fputws.d | 1 | ||||
-rw-r--r-- | mk/free.d | 1 | ||||
-rw-r--r-- | mk/malloc.d | 1 | ||||
-rw-r--r-- | mk/realloc.d | 2 | ||||
-rw-r--r-- | mk/setlocale.d | 1 | ||||
-rw-r--r-- | mk/strerror.d | 1 | ||||
-rw-r--r-- | mk/wcrtomb.d | 1 | ||||
-rw-r--r-- | src/__readonly.c | 37 | ||||
-rw-r--r-- | src/_readonly.h | 12 | ||||
-rw-r--r-- | src/_syscall.h | 1 | ||||
-rw-r--r-- | src/locale/setlocale.c | 10 | ||||
-rw-r--r-- | src/signal/sigaction.c | 9 | ||||
-rw-r--r-- | src/signal/siginfo_t.h | 75 | ||||
-rw-r--r-- | src/stdlib/__jkmalloc.c | 381 | ||||
-rw-r--r-- | src/stdlib/_jkmalloc.h | 6 | ||||
-rw-r--r-- | src/stdlib/aligned_alloc.c | 5 | ||||
-rw-r--r-- | src/stdlib/calloc.c | 19 | ||||
-rw-r--r-- | src/stdlib/free.c | 7 | ||||
-rw-r--r-- | src/stdlib/malloc.c | 7 | ||||
-rw-r--r-- | src/stdlib/realloc.c | 46 | ||||
-rw-r--r-- | src/string/strerror.c | 13 | ||||
-rw-r--r-- | src/tgmath/acos.h | 19 |
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 @@ -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 @@ -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 @@ -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 |