Commit 4c386436ea

Andrew Kelley <andrew@ziglang.org>
2019-03-06 00:17:22
support glibc dl, m, pthread, rt
1 parent e06da10
libc/symbols.zig → libc/dummy/c.zig
@@ -3,7 +3,13 @@ pub fn panic(msg: []const u8, error_return_trace: ?*builtin.StackTrace) noreturn
     unreachable;
 }
 
+// This file exists to create a libc.so file so that LLD has something to look at
+// and emit linker errors if an attempt to link against a non-existent C symbol happens.
+
 export fn _Exit() void {}
+export fn _IO_2_1_stderr_() void {}
+export fn _IO_2_1_stdin_() void {}
+export fn _IO_2_1_stdout_() void {}
 export fn _IO_adjust_column() void {}
 export fn _IO_adjust_wcolumn() void {}
 export fn _IO_default_doallocate() void {}
@@ -12,26 +18,47 @@ export fn _IO_default_pbackfail() void {}
 export fn _IO_default_uflow() void {}
 export fn _IO_default_xsgetn() void {}
 export fn _IO_default_xsputn() void {}
+export fn _IO_do_write() void {}
 export fn _IO_doallocbuf() void {}
 export fn _IO_enable_locks() void {}
+export fn _IO_fclose() void {}
+export fn _IO_fdopen() void {}
 export fn _IO_feof() void {}
 export fn _IO_ferror() void {}
 export fn _IO_fflush() void {}
+export fn _IO_fgetpos() void {}
+export fn _IO_fgetpos64() void {}
 export fn _IO_fgets() void {}
+export fn _IO_file_attach() void {}
 export fn _IO_file_close() void {}
+export fn _IO_file_close_it() void {}
 export fn _IO_file_doallocate() void {}
+export fn _IO_file_finish() void {}
+export fn _IO_file_fopen() void {}
+export fn _IO_file_init() void {}
+export fn _IO_file_jumps() void {}
 export fn _IO_file_open() void {}
+export fn _IO_file_overflow() void {}
 export fn _IO_file_read() void {}
 export fn _IO_file_seek() void {}
+export fn _IO_file_seekoff() void {}
+export fn _IO_file_setbuf() void {}
 export fn _IO_file_stat() void {}
+export fn _IO_file_sync() void {}
+export fn _IO_file_underflow() void {}
+export fn _IO_file_write() void {}
+export fn _IO_file_xsputn() void {}
 export fn _IO_flockfile() void {}
 export fn _IO_flush_all() void {}
 export fn _IO_flush_all_linebuffered() void {}
+export fn _IO_fopen() void {}
 export fn _IO_fprintf() void {}
 export fn _IO_fputs() void {}
 export fn _IO_fread() void {}
 export fn _IO_free_backup_area() void {}
 export fn _IO_free_wbackup_area() void {}
+export fn _IO_fsetpos() void {}
+export fn _IO_fsetpos64() void {}
 export fn _IO_ftell() void {}
 export fn _IO_ftrylockfile() void {}
 export fn _IO_funlockfile() void {}
@@ -49,6 +76,7 @@ export fn _IO_iter_file() void {}
 export fn _IO_iter_next() void {}
 export fn _IO_least_wmarker() void {}
 export fn _IO_link_in() void {}
+export fn _IO_list_all() void {}
 export fn _IO_list_lock() void {}
 export fn _IO_list_resetlock() void {}
 export fn _IO_list_unlock() void {}
@@ -56,7 +84,10 @@ export fn _IO_marker_delta() void {}
 export fn _IO_marker_difference() void {}
 export fn _IO_padn() void {}
 export fn _IO_peekc_locked() void {}
+export fn _IO_popen() void {}
 export fn _IO_printf() void {}
+export fn _IO_proc_close() void {}
+export fn _IO_proc_open() void {}
 export fn _IO_putc() void {}
 export fn _IO_puts() void {}
 export fn _IO_remove_marker() void {}
@@ -89,6 +120,7 @@ export fn _IO_ungetc() void {}
 export fn _IO_unsave_markers() void {}
 export fn _IO_unsave_wmarkers() void {}
 export fn _IO_vfprintf() void {}
+export fn _IO_vfscanf() void {}
 export fn _IO_vsprintf() void {}
 export fn _IO_wdefault_doallocate() void {}
 export fn _IO_wdefault_finish() void {}
@@ -98,6 +130,7 @@ export fn _IO_wdefault_xsgetn() void {}
 export fn _IO_wdefault_xsputn() void {}
 export fn _IO_wdo_write() void {}
 export fn _IO_wdoallocbuf() void {}
+export fn _IO_wfile_jumps() void {}
 export fn _IO_wfile_overflow() void {}
 export fn _IO_wfile_seekoff() void {}
 export fn _IO_wfile_sync() void {}
@@ -105,45 +138,9 @@ export fn _IO_wfile_underflow() void {}
 export fn _IO_wfile_xsputn() void {}
 export fn _IO_wmarker_delta() void {}
 export fn _IO_wsetb() void {}
-export fn __GI___gettimeofday() void {}
-export fn __GI___mempcpy() void {}
-export fn __GI___rawmemchr() void {}
-export fn __GI___stpcpy() void {}
-export fn __GI___stpncpy() void {}
-export fn __GI___strcasecmp() void {}
-export fn __GI___strcasecmp_l() void {}
-export fn __GI___strncasecmp_l() void {}
-export fn __GI___strncat() void {}
-export fn __GI___strnlen() void {}
-export fn __GI___wcschr() void {}
-export fn __GI___wcscmp() void {}
-export fn __GI___wmemchr() void {}
-export fn __GI___wmemset() void {}
-export fn __GI_gettimeofday() void {}
-export fn __GI_memchr() void {}
-export fn __GI_memcmp() void {}
-export fn __GI_memcpy() void {}
-export fn __GI_memmove() void {}
-export fn __GI_mempcpy() void {}
-export fn __GI_memset() void {}
-export fn __GI_stpcpy() void {}
-export fn __GI_strcat() void {}
-export fn __GI_strchr() void {}
-export fn __GI_strcmp() void {}
-export fn __GI_strcpy() void {}
-export fn __GI_strcspn() void {}
-export fn __GI_strlen() void {}
-export fn __GI_strncmp() void {}
-export fn __GI_strncpy() void {}
-export fn __GI_strnlen() void {}
-export fn __GI_strpbrk() void {}
-export fn __GI_strrchr() void {}
-export fn __GI_strspn() void {}
-export fn __GI_time() void {}
-export fn __GI_wcschr() void {}
-export fn __GI_wmemchr() void {}
-export fn __GI_wmemset() void {}
+export fn __abort_msg() void {}
 export fn __adjtimex() void {}
+export fn __after_morecore_hook() void {}
 export fn __arch_prctl() void {}
 export fn __argz_count() void {}
 export fn __argz_next() void {}
@@ -159,6 +156,7 @@ export fn __backtrace_symbols_fd() void {}
 export fn __bsd_getpgrp() void {}
 export fn __bzero() void {}
 export fn __call_tls_dtors() void {}
+export fn __check_rhosts_file() void {}
 export fn __chk_fail() void {}
 export fn __clock_getcpuclockid() void {}
 export fn __clock_getres() void {}
@@ -172,17 +170,25 @@ export fn __cmsg_nxthdr() void {}
 export fn __confstr_chk() void {}
 export fn __connect() void {}
 export fn __copy_grp() void {}
+export fn __ctype32_b() void {}
+export fn __ctype32_tolower() void {}
+export fn __ctype32_toupper() void {}
+export fn __ctype_b() void {}
 export fn __ctype_b_loc() void {}
 export fn __ctype_get_mb_cur_max() void {}
 export fn __ctype_init() void {}
+export fn __ctype_tolower() void {}
 export fn __ctype_tolower_loc() void {}
+export fn __ctype_toupper() void {}
 export fn __ctype_toupper_loc() void {}
+export fn __curbrk() void {}
 export fn __cxa_at_quick_exit() void {}
 export fn __cxa_atexit() void {}
 export fn __cxa_finalize() void {}
 export fn __cxa_thread_atexit_impl() void {}
 export fn __cyg_profile_func_enter() void {}
 export fn __cyg_profile_func_exit() void {}
+export fn __daylight() void {}
 export fn __dcgettext() void {}
 export fn __default_morecore() void {}
 export fn __dgettext() void {}
@@ -190,6 +196,7 @@ export fn __dprintf_chk() void {}
 export fn __dup2() void {}
 export fn __duplocale() void {}
 export fn __endmntent() void {}
+export fn __environ() void {}
 export fn __errno_location() void {}
 export fn __explicit_bzero_chk() void {}
 export fn __fbufsize() void {}
@@ -210,11 +217,13 @@ export fn __fork() void {}
 export fn __fortify_fail() void {}
 export fn __fpending() void {}
 export fn __fprintf_chk() void {}
+export fn __fpu_control() void {}
 export fn __fpurge() void {}
 export fn __fread_chk() void {}
 export fn __fread_unlocked_chk() void {}
 export fn __freadable() void {}
 export fn __freading() void {}
+export fn __free_hook() void {}
 export fn __freelocale() void {}
 export fn __fseeko64() void {}
 export fn __fsetlocking() void {}
@@ -247,6 +256,7 @@ export fn __gets_chk() void {}
 export fn __gettimeofday() void {}
 export fn __getwd_chk() void {}
 export fn __gmtime_r() void {}
+export fn __h_errno() void {}
 export fn __h_errno_location() void {}
 export fn __idna_from_dns_encoding() void {}
 export fn __idna_to_dns_encoding() void {}
@@ -303,6 +313,9 @@ export fn __iswupper_l() void {}
 export fn __iswxdigit_l() void {}
 export fn __isxdigit_l() void {}
 export fn __ivaliduser() void {}
+export fn __key_decryptsession_pk_LOCAL() void {}
+export fn __key_encryptsession_pk_LOCAL() void {}
+export fn __key_gendes_LOCAL() void {}
 export fn __libc_alloc_buffer_alloc_array() void {}
 export fn __libc_alloc_buffer_allocate() void {}
 export fn __libc_alloc_buffer_copy_bytes() void {}
@@ -313,6 +326,7 @@ export fn __libc_allocate_once_slow() void {}
 export fn __libc_allocate_rtsig() void {}
 export fn __libc_allocate_rtsig_private() void {}
 export fn __libc_calloc() void {}
+export fn __libc_clntudp_bufcreate() void {}
 export fn __libc_current_sigrtmax() void {}
 export fn __libc_current_sigrtmax_private() void {}
 export fn __libc_current_sigrtmin() void {}
@@ -338,7 +352,6 @@ export fn __libc_mallinfo() void {}
 export fn __libc_malloc() void {}
 export fn __libc_mallopt() void {}
 export fn __libc_memalign() void {}
-export fn __libc_memmove() void {}
 export fn __libc_msgrcv() void {}
 export fn __libc_msgsnd() void {}
 export fn __libc_pread() void {}
@@ -348,6 +361,7 @@ export fn __libc_pwrite() void {}
 export fn __libc_readline_unlocked() void {}
 export fn __libc_realloc() void {}
 export fn __libc_reallocarray() void {}
+export fn __libc_rpc_getport() void {}
 export fn __libc_sa_len() void {}
 export fn __libc_scratch_buffer_grow() void {}
 export fn __libc_scratch_buffer_grow_preserve() void {}
@@ -355,7 +369,6 @@ export fn __libc_scratch_buffer_set_array_size() void {}
 export fn __libc_secure_getenv() void {}
 export fn __libc_siglongjmp() void {}
 export fn __libc_start_main() void {}
-export fn __libc_strstr() void {}
 export fn __libc_system() void {}
 export fn __libc_thread_freeres() void {}
 export fn __libc_valloc() void {}
@@ -365,41 +378,46 @@ export fn __lseek() void {}
 export fn __lxstat() void {}
 export fn __lxstat64() void {}
 export fn __madvise() void {}
+export fn __malloc_hook() void {}
+export fn __malloc_initialize_hook() void {}
 export fn __mbrlen() void {}
 export fn __mbrtowc() void {}
 export fn __mbsnrtowcs_chk() void {}
 export fn __mbsrtowcs_chk() void {}
 export fn __mbstowcs_chk() void {}
-export fn __memchr() void {}
+export fn __memalign_hook() void {}
 export fn __memcpy_chk() void {}
 export fn __memmove_chk() void {}
 export fn __mempcpy() void {}
 export fn __mempcpy_chk() void {}
-export fn __memrchr() void {}
+export fn __mempcpy_small() void {}
 export fn __memset_chk() void {}
 export fn __merge_grp() void {}
 export fn __mktemp() void {}
 export fn __mmap() void {}
 export fn __monstartup() void {}
+export fn __morecore() void {}
 export fn __mprotect() void {}
 export fn __munmap() void {}
 export fn __nanosleep() void {}
 export fn __nanosleep_nocancel() void {}
 export fn __netlink_assert_response() void {}
-export fn __new_memcpy() void {}
 export fn __newlocale() void {}
 export fn __nl_langinfo_l() void {}
 export fn __nss_configure_lookup() void {}
 export fn __nss_database_lookup() void {}
 export fn __nss_disable_nscd() void {}
+export fn __nss_group_lookup() void {}
 export fn __nss_group_lookup2() void {}
 export fn __nss_hash() void {}
 export fn __nss_hostname_digits_dots() void {}
+export fn __nss_hosts_lookup() void {}
 export fn __nss_hosts_lookup2() void {}
 export fn __nss_lookup() void {}
 export fn __nss_lookup_function() void {}
 export fn __nss_next() void {}
 export fn __nss_next2() void {}
+export fn __nss_passwd_lookup() void {}
 export fn __nss_passwd_lookup2() void {}
 export fn __nss_services_lookup2() void {}
 export fn __obstack_printf_chk() void {}
@@ -426,14 +444,18 @@ export fn __pread_chk() void {}
 export fn __printf_chk() void {}
 export fn __printf_fp() void {}
 export fn __profile_frequency() void {}
+export fn __progname() void {}
+export fn __progname_full() void {}
 export fn __ptsname_r_chk() void {}
 export fn __pwrite64() void {}
 export fn __rawmemchr() void {}
+export fn __rcmd_errstr() void {}
 export fn __read() void {}
 export fn __read_chk() void {}
 export fn __read_nocancel() void {}
 export fn __readlink_chk() void {}
 export fn __readlinkat_chk() void {}
+export fn __realloc_hook() void {}
 export fn __realpath_chk() void {}
 export fn __recv() void {}
 export fn __recv_chk() void {}
@@ -449,6 +471,11 @@ export fn __resolv_context_get() void {}
 export fn __resolv_context_get_override() void {}
 export fn __resolv_context_get_preinit() void {}
 export fn __resolv_context_put() void {}
+export fn __resp() void {}
+export fn __rpc_thread_createerr() void {}
+export fn __rpc_thread_svc_fdset() void {}
+export fn __rpc_thread_svc_max_pollfd() void {}
+export fn __rpc_thread_svc_pollfd() void {}
 export fn __sbrk() void {}
 export fn __sched_cpualloc() void {}
 export fn __sched_cpucount() void {}
@@ -459,12 +486,16 @@ export fn __sched_getparam() void {}
 export fn __sched_getscheduler() void {}
 export fn __sched_setscheduler() void {}
 export fn __sched_yield() void {}
+export fn __secure_getenv() void {}
 export fn __select() void {}
 export fn __send() void {}
 export fn __sendmmsg() void {}
 export fn __setmntent() void {}
 export fn __setpgid() void {}
 export fn __sigaction() void {}
+export fn __sigaddset() void {}
+export fn __sigdelset() void {}
+export fn __sigismember() void {}
 export fn __signbit() void {}
 export fn __signbitf() void {}
 export fn __signbitl() void {}
@@ -480,26 +511,36 @@ export fn __stack_chk_fail() void {}
 export fn __statfs() void {}
 export fn __stpcpy() void {}
 export fn __stpcpy_chk() void {}
+export fn __stpcpy_small() void {}
 export fn __stpncpy() void {}
 export fn __stpncpy_chk() void {}
 export fn __strcasecmp() void {}
 export fn __strcasecmp_l() void {}
 export fn __strcasestr() void {}
 export fn __strcat_chk() void {}
-export fn __strchrnul() void {}
 export fn __strcoll_l() void {}
 export fn __strcpy_chk() void {}
+export fn __strcpy_small() void {}
+export fn __strcspn_c1() void {}
+export fn __strcspn_c2() void {}
+export fn __strcspn_c3() void {}
 export fn __strdup() void {}
 export fn __strerror_r() void {}
 export fn __strfmon_l() void {}
 export fn __strftime_l() void {}
-export fn __strncasecmp() void {}
 export fn __strncasecmp_l() void {}
 export fn __strncat_chk() void {}
 export fn __strncpy_chk() void {}
 export fn __strndup() void {}
-export fn __strnlen() void {}
+export fn __strpbrk_c2() void {}
+export fn __strpbrk_c3() void {}
+export fn __strsep_1c() void {}
+export fn __strsep_2c() void {}
+export fn __strsep_3c() void {}
 export fn __strsep_g() void {}
+export fn __strspn_c1() void {}
+export fn __strspn_c2() void {}
+export fn __strspn_c3() void {}
 export fn __strtod_internal() void {}
 export fn __strtod_l() void {}
 export fn __strtod_nan() void {}
@@ -509,6 +550,7 @@ export fn __strtof_internal() void {}
 export fn __strtof_l() void {}
 export fn __strtof_nan() void {}
 export fn __strtok_r() void {}
+export fn __strtok_r_1c() void {}
 export fn __strtol_internal() void {}
 export fn __strtol_l() void {}
 export fn __strtold_internal() void {}
@@ -529,6 +571,7 @@ export fn __syslog_chk() void {}
 export fn __sysv_signal() void {}
 export fn __tdelete() void {}
 export fn __tfind() void {}
+export fn __timezone() void {}
 export fn __toascii_l() void {}
 export fn __tolower_l() void {}
 export fn __toupper_l() void {}
@@ -539,6 +582,7 @@ export fn __towupper_l() void {}
 export fn __tsearch() void {}
 export fn __ttyname_r_chk() void {}
 export fn __twalk() void {}
+export fn __tzname() void {}
 export fn __uflow() void {}
 export fn __underflow() void {}
 export fn __uselocale() void {}
@@ -563,16 +607,12 @@ export fn __wcpncpy_chk() void {}
 export fn __wcrtomb_chk() void {}
 export fn __wcscasecmp_l() void {}
 export fn __wcscat_chk() void {}
-export fn __wcschr() void {}
-export fn __wcscmp() void {}
 export fn __wcscoll_l() void {}
 export fn __wcscpy_chk() void {}
 export fn __wcsftime_l() void {}
-export fn __wcslen() void {}
 export fn __wcsncasecmp_l() void {}
 export fn __wcsncat_chk() void {}
 export fn __wcsncpy_chk() void {}
-export fn __wcsnlen() void {}
 export fn __wcsnrtombs_chk() void {}
 export fn __wcsrtombs_chk() void {}
 export fn __wcstod_internal() void {}
@@ -595,11 +635,9 @@ export fn __wcsxfrm_l() void {}
 export fn __wctomb_chk() void {}
 export fn __wctrans_l() void {}
 export fn __wctype_l() void {}
-export fn __wmemchr() void {}
 export fn __wmemcpy_chk() void {}
 export fn __wmemmove_chk() void {}
 export fn __wmempcpy_chk() void {}
-export fn __wmemset() void {}
 export fn __wmemset_chk() void {}
 export fn __woverflow() void {}
 export fn __wprintf_chk() void {}
@@ -614,31 +652,49 @@ export fn __xpg_sigpause() void {}
 export fn __xpg_strerror_r() void {}
 export fn __xstat() void {}
 export fn __xstat64() void {}
+export fn _authenticate() void {}
 export fn _dl_addr() void {}
 export fn _dl_catch_error() void {}
 export fn _dl_catch_exception() void {}
 export fn _dl_mcount_wrapper() void {}
 export fn _dl_mcount_wrapper_check() void {}
+export fn _dl_open_hook() void {}
+export fn _dl_open_hook2() void {}
 export fn _dl_signal_error() void {}
 export fn _dl_signal_exception() void {}
 export fn _dl_sym() void {}
 export fn _dl_vsym() void {}
+export fn _environ() void {}
 export fn _exit() void {}
 export fn _flushlbf() void {}
+export fn _itoa_lower_digits() void {}
+export fn _libc_intl_domainname() void {}
 export fn _longjmp() void {}
 export fn _mcleanup() void {}
 export fn _mcount() void {}
+export fn _nl_default_dirname() void {}
+export fn _nl_domain_bindings() void {}
+export fn _nl_msg_cat_cntr() void {}
 export fn _nss_files_parse_grent() void {}
 export fn _nss_files_parse_pwent() void {}
 export fn _nss_files_parse_sgent() void {}
 export fn _nss_files_parse_spent() void {}
+export fn _null_auth() void {}
+export fn _obstack() void {}
 export fn _obstack_allocated_p() void {}
 export fn _obstack_begin() void {}
 export fn _obstack_begin_1() void {}
 export fn _obstack_free() void {}
 export fn _obstack_memory_used() void {}
 export fn _obstack_newchunk() void {}
+export fn _res() void {}
+export fn _res_hconf() void {}
+export fn _rpc_dtablesize() void {}
+export fn _seterr_reply() void {}
 export fn _setjmp() void {}
+export fn _sys_errlist() void {}
+export fn _sys_nerr() void {}
+export fn _sys_siglist() void {}
 export fn _tolower() void {}
 export fn _toupper() void {}
 export fn a64l() void {}
@@ -652,15 +708,20 @@ export fn addmntent() void {}
 export fn addseverity() void {}
 export fn adjtime() void {}
 export fn adjtimex() void {}
+export fn advance() void {}
 export fn alarm() void {}
 export fn aligned_alloc() void {}
 export fn alphasort() void {}
 export fn alphasort64() void {}
 export fn arch_prctl() void {}
+export fn argp_err_exit_status() void {}
 export fn argp_error() void {}
 export fn argp_failure() void {}
 export fn argp_help() void {}
 export fn argp_parse() void {}
+export fn argp_program_bug_address() void {}
+export fn argp_program_version() void {}
+export fn argp_program_version_hook() void {}
 export fn argp_state_help() void {}
 export fn argp_usage() void {}
 export fn argz_add() void {}
@@ -682,12 +743,19 @@ export fn atof() void {}
 export fn atoi() void {}
 export fn atol() void {}
 export fn atoll() void {}
+export fn authdes_create() void {}
+export fn authdes_getucred() void {}
+export fn authdes_pk_create() void {}
+export fn authnone_create() void {}
+export fn authunix_create() void {}
+export fn authunix_create_default() void {}
 export fn backtrace() void {}
 export fn backtrace_symbols() void {}
 export fn backtrace_symbols_fd() void {}
 export fn basename() void {}
 export fn bcmp() void {}
 export fn bcopy() void {}
+export fn bdflush() void {}
 export fn bind() void {}
 export fn bind_textdomain_codeset() void {}
 export fn bindresvport() void {}
@@ -700,15 +768,18 @@ export fn bzero() void {}
 export fn c16rtomb() void {}
 export fn c32rtomb() void {}
 export fn calloc() void {}
+export fn callrpc() void {}
 export fn canonicalize_file_name() void {}
 export fn capget() void {}
 export fn capset() void {}
 export fn catclose() void {}
 export fn catgets() void {}
 export fn catopen() void {}
+export fn cbc_crypt() void {}
 export fn cfgetispeed() void {}
 export fn cfgetospeed() void {}
 export fn cfmakeraw() void {}
+export fn cfree() void {}
 export fn cfsetispeed() void {}
 export fn cfsetospeed() void {}
 export fn cfsetspeed() void {}
@@ -720,7 +791,19 @@ export fn chroot() void {}
 export fn clearenv() void {}
 export fn clearerr() void {}
 export fn clearerr_unlocked() void {}
+export fn clnt_broadcast() void {}
+export fn clnt_create() void {}
+export fn clnt_pcreateerror() void {}
+export fn clnt_perrno() void {}
+export fn clnt_perror() void {}
+export fn clnt_spcreateerror() void {}
 export fn clnt_sperrno() void {}
+export fn clnt_sperror() void {}
+export fn clntraw_create() void {}
+export fn clnttcp_create() void {}
+export fn clntudp_bufcreate() void {}
+export fn clntudp_create() void {}
+export fn clntunix_create() void {}
 export fn clock() void {}
 export fn clock_adjtime() void {}
 export fn clock_getcpuclockid() void {}
@@ -740,14 +823,17 @@ export fn copysignf() void {}
 export fn copysignl() void {}
 export fn creat() void {}
 export fn creat64() void {}
+export fn create_module() void {}
 export fn ctermid() void {}
 export fn ctime() void {}
 export fn ctime_r() void {}
 export fn cuserid() void {}
 export fn daemon() void {}
+export fn daylight() void {}
 export fn dcgettext() void {}
 export fn dcngettext() void {}
 export fn delete_module() void {}
+export fn des_setparity() void {}
 export fn dgettext() void {}
 export fn difftime() void {}
 export fn dirfd() void {}
@@ -764,6 +850,7 @@ export fn dup3() void {}
 export fn duplocale() void {}
 export fn dysize() void {}
 export fn eaccess() void {}
+export fn ecb_crypt() void {}
 export fn ecvt() void {}
 export fn ecvt_r() void {}
 export fn endaliasent() void {}
@@ -783,6 +870,7 @@ export fn endttyent() void {}
 export fn endusershell() void {}
 export fn endutent() void {}
 export fn endutxent() void {}
+export fn environ() void {}
 export fn envz_add() void {}
 export fn envz_entry() void {}
 export fn envz_get() void {}
@@ -797,8 +885,12 @@ export fn epoll_wait() void {}
 export fn erand48() void {}
 export fn erand48_r() void {}
 export fn err() void {}
+export fn errno() void {}
 export fn @"error"() void {}
 export fn error_at_line() void {}
+export fn error_message_count() void {}
+export fn error_one_per_line() void {}
+export fn error_print_progname() void {}
 export fn errx() void {}
 export fn ether_aton() void {}
 export fn ether_aton_r() void {}
@@ -832,6 +924,7 @@ export fn fchmod() void {}
 export fn fchmodat() void {}
 export fn fchown() void {}
 export fn fchownat() void {}
+export fn fclose() void {}
 export fn fcloseall() void {}
 export fn fcntl() void {}
 export fn fcntl64() void {}
@@ -839,6 +932,7 @@ export fn fcvt() void {}
 export fn fcvt_r() void {}
 export fn fdatasync() void {}
 export fn fdetach() void {}
+export fn fdopen() void {}
 export fn fdopendir() void {}
 export fn feof() void {}
 export fn feof_unlocked() void {}
@@ -854,6 +948,8 @@ export fn fgetc() void {}
 export fn fgetc_unlocked() void {}
 export fn fgetgrent() void {}
 export fn fgetgrent_r() void {}
+export fn fgetpos() void {}
+export fn fgetpos64() void {}
 export fn fgetpwent() void {}
 export fn fgetpwent_r() void {}
 export fn fgets() void {}
@@ -875,8 +971,12 @@ export fn finitel() void {}
 export fn flistxattr() void {}
 export fn flock() void {}
 export fn flockfile() void {}
+export fn fmemopen() void {}
 export fn fmtmsg() void {}
+export fn fnmatch() void {}
+export fn fopen() void {}
 export fn fopen64() void {}
+export fn fopencookie() void {}
 export fn fork() void {}
 export fn fpathconf() void {}
 export fn fprintf() void {}
@@ -904,6 +1004,8 @@ export fn fscanf() void {}
 export fn fseek() void {}
 export fn fseeko() void {}
 export fn fseeko64() void {}
+export fn fsetpos() void {}
+export fn fsetpos64() void {}
 export fn fsetxattr() void {}
 export fn fstatfs() void {}
 export fn fstatfs64() void {}
@@ -943,12 +1045,16 @@ export fn gai_strerror() void {}
 export fn gcvt() void {}
 export fn get_avphys_pages() void {}
 export fn get_current_dir_name() void {}
+export fn get_kernel_syms() void {}
+export fn get_myaddress() void {}
 export fn get_nprocs() void {}
 export fn get_nprocs_conf() void {}
 export fn get_phys_pages() void {}
 export fn getaddrinfo() void {}
 export fn getaliasbyname() void {}
+export fn getaliasbyname_r() void {}
 export fn getaliasent() void {}
+export fn getaliasent_r() void {}
 export fn getauxval() void {}
 export fn getc() void {}
 export fn getc_unlocked() void {}
@@ -958,6 +1064,7 @@ export fn getcontext() void {}
 export fn getcpu() void {}
 export fn getcwd() void {}
 export fn getdate() void {}
+export fn getdate_err() void {}
 export fn getdate_r() void {}
 export fn getdelim() void {}
 export fn getdirentries() void {}
@@ -973,14 +1080,21 @@ export fn getfsfile() void {}
 export fn getfsspec() void {}
 export fn getgid() void {}
 export fn getgrent() void {}
+export fn getgrent_r() void {}
 export fn getgrgid() void {}
+export fn getgrgid_r() void {}
 export fn getgrnam() void {}
+export fn getgrnam_r() void {}
 export fn getgrouplist() void {}
 export fn getgroups() void {}
 export fn gethostbyaddr() void {}
+export fn gethostbyaddr_r() void {}
 export fn gethostbyname() void {}
 export fn gethostbyname2() void {}
+export fn gethostbyname2_r() void {}
+export fn gethostbyname_r() void {}
 export fn gethostent() void {}
+export fn gethostent_r() void {}
 export fn gethostid() void {}
 export fn gethostname() void {}
 export fn getifaddrs() void {}
@@ -995,10 +1109,14 @@ export fn getmntent_r() void {}
 export fn getmsg() void {}
 export fn getnameinfo() void {}
 export fn getnetbyaddr() void {}
+export fn getnetbyaddr_r() void {}
 export fn getnetbyname() void {}
+export fn getnetbyname_r() void {}
 export fn getnetent() void {}
+export fn getnetent_r() void {}
 export fn getnetgrent() void {}
 export fn getnetgrent_r() void {}
+export fn getnetname() void {}
 export fn getopt() void {}
 export fn getopt_long() void {}
 export fn getopt_long_only() void {}
@@ -1012,27 +1130,41 @@ export fn getpmsg() void {}
 export fn getppid() void {}
 export fn getpriority() void {}
 export fn getprotobyname() void {}
+export fn getprotobyname_r() void {}
 export fn getprotobynumber() void {}
+export fn getprotobynumber_r() void {}
 export fn getprotoent() void {}
+export fn getprotoent_r() void {}
 export fn getpt() void {}
+export fn getpublickey() void {}
 export fn getpw() void {}
 export fn getpwent() void {}
+export fn getpwent_r() void {}
 export fn getpwnam() void {}
+export fn getpwnam_r() void {}
 export fn getpwuid() void {}
+export fn getpwuid_r() void {}
 export fn getrandom() void {}
 export fn getresgid() void {}
 export fn getresuid() void {}
 export fn getrlimit() void {}
 export fn getrlimit64() void {}
 export fn getrpcbyname() void {}
+export fn getrpcbyname_r() void {}
 export fn getrpcbynumber() void {}
+export fn getrpcbynumber_r() void {}
 export fn getrpcent() void {}
+export fn getrpcent_r() void {}
 export fn getrpcport() void {}
 export fn getrusage() void {}
 export fn gets() void {}
+export fn getsecretkey() void {}
 export fn getservbyname() void {}
+export fn getservbyname_r() void {}
 export fn getservbyport() void {}
+export fn getservbyport_r() void {}
 export fn getservent() void {}
+export fn getservent_r() void {}
 export fn getsgent() void {}
 export fn getsgent_r() void {}
 export fn getsgnam() void {}
@@ -1042,7 +1174,9 @@ export fn getsockname() void {}
 export fn getsockopt() void {}
 export fn getsourcefilter() void {}
 export fn getspent() void {}
+export fn getspent_r() void {}
 export fn getspnam() void {}
+export fn getspnam_r() void {}
 export fn getsubopt() void {}
 export fn gettext() void {}
 export fn gettimeofday() void {}
@@ -1068,6 +1202,8 @@ export fn getwchar() void {}
 export fn getwchar_unlocked() void {}
 export fn getwd() void {}
 export fn getxattr() void {}
+export fn glob() void {}
+export fn glob64() void {}
 export fn glob_pattern_p() void {}
 export fn globfree() void {}
 export fn globfree64() void {}
@@ -1082,12 +1218,15 @@ export fn grantpt() void {}
 export fn group_member() void {}
 export fn gsignal() void {}
 export fn gtty() void {}
+export fn h_errlist() void {}
+export fn h_nerr() void {}
 export fn hasmntopt() void {}
 export fn hcreate() void {}
 export fn hcreate_r() void {}
 export fn hdestroy() void {}
 export fn hdestroy_r() void {}
 export fn herror() void {}
+export fn host2netname() void {}
 export fn hsearch() void {}
 export fn hsearch_r() void {}
 export fn hstrerror() void {}
@@ -1102,6 +1241,8 @@ export fn if_nameindex() void {}
 export fn if_nametoindex() void {}
 export fn imaxabs() void {}
 export fn imaxdiv() void {}
+export fn in6addr_any() void {}
+export fn in6addr_loopback() void {}
 export fn index() void {}
 export fn inet6_opt_append() void {}
 export fn inet6_opt_find() void {}
@@ -1211,6 +1352,15 @@ export fn isxdigit() void {}
 export fn isxdigit_l() void {}
 export fn jrand48() void {}
 export fn jrand48_r() void {}
+export fn key_decryptsession() void {}
+export fn key_decryptsession_pk() void {}
+export fn key_encryptsession() void {}
+export fn key_encryptsession_pk() void {}
+export fn key_gendes() void {}
+export fn key_get_conv() void {}
+export fn key_secretkey_is_set() void {}
+export fn key_setnet() void {}
+export fn key_setsecret() void {}
 export fn kill() void {}
 export fn killpg() void {}
 export fn klogctl() void {}
@@ -1234,10 +1384,15 @@ export fn listxattr() void {}
 export fn llabs() void {}
 export fn lldiv() void {}
 export fn llistxattr() void {}
+export fn llseek() void {}
+export fn loc1() void {}
+export fn loc2() void {}
+export fn localeconv() void {}
 export fn localtime() void {}
 export fn localtime_r() void {}
 export fn lockf() void {}
 export fn lockf64() void {}
+export fn locs() void {}
 export fn longjmp() void {}
 export fn lrand48() void {}
 export fn lrand48_r() void {}
@@ -1251,11 +1406,14 @@ export fn madvise() void {}
 export fn makecontext() void {}
 export fn mallinfo() void {}
 export fn malloc() void {}
+export fn malloc_get_state() void {}
 export fn malloc_info() void {}
+export fn malloc_set_state() void {}
 export fn malloc_stats() void {}
 export fn malloc_trim() void {}
 export fn malloc_usable_size() void {}
 export fn mallopt() void {}
+export fn mallwatch() void {}
 export fn mblen() void {}
 export fn mbrlen() void {}
 export fn mbrtoc16() void {}
@@ -1315,6 +1473,7 @@ export fn mprotect() void {}
 export fn mrand48() void {}
 export fn mrand48_r() void {}
 export fn mremap() void {}
+export fn msgctl() void {}
 export fn msgget() void {}
 export fn msgrcv() void {}
 export fn msgsnd() void {}
@@ -1326,7 +1485,12 @@ export fn munmap() void {}
 export fn muntrace() void {}
 export fn name_to_handle_at() void {}
 export fn nanosleep() void {}
+export fn netname2host() void {}
+export fn netname2user() void {}
 export fn newlocale() void {}
+export fn nfsservctl() void {}
+export fn nftw() void {}
+export fn nftw64() void {}
 export fn ngettext() void {}
 export fn nice() void {}
 export fn nl_langinfo() void {}
@@ -1338,6 +1502,8 @@ export fn ntohs() void {}
 export fn ntp_adjtime() void {}
 export fn ntp_gettime() void {}
 export fn ntp_gettimex() void {}
+export fn obstack_alloc_failed_handler() void {}
+export fn obstack_exit_failure() void {}
 export fn obstack_free() void {}
 export fn obstack_printf() void {}
 export fn obstack_vprintf() void {}
@@ -1351,9 +1517,15 @@ export fn openat() void {}
 export fn openat64() void {}
 export fn opendir() void {}
 export fn openlog() void {}
+export fn optarg() void {}
+export fn opterr() void {}
+export fn optind() void {}
+export fn optopt() void {}
 export fn parse_printf_format() void {}
+export fn passwd2des() void {}
 export fn pathconf() void {}
 export fn pause() void {}
+export fn pclose() void {}
 export fn perror() void {}
 export fn personality() void {}
 export fn pipe() void {}
@@ -1364,7 +1536,13 @@ export fn pkey_free() void {}
 export fn pkey_get() void {}
 export fn pkey_mprotect() void {}
 export fn pkey_set() void {}
+export fn pmap_getmaps() void {}
+export fn pmap_getport() void {}
+export fn pmap_rmtcall() void {}
+export fn pmap_set() void {}
+export fn pmap_unset() void {}
 export fn poll() void {}
+export fn popen() void {}
 export fn posix_fadvise() void {}
 export fn posix_fadvise64() void {}
 export fn posix_fallocate() void {}
@@ -1372,6 +1550,7 @@ export fn posix_fallocate64() void {}
 export fn posix_madvise() void {}
 export fn posix_memalign() void {}
 export fn posix_openpt() void {}
+export fn posix_spawn() void {}
 export fn posix_spawn_file_actions_addchdir_np() void {}
 export fn posix_spawn_file_actions_addclose() void {}
 export fn posix_spawn_file_actions_adddup2() void {}
@@ -1393,6 +1572,7 @@ export fn posix_spawnattr_setschedparam() void {}
 export fn posix_spawnattr_setschedpolicy() void {}
 export fn posix_spawnattr_setsigdefault() void {}
 export fn posix_spawnattr_setsigmask() void {}
+export fn posix_spawnp() void {}
 export fn ppoll() void {}
 export fn prctl() void {}
 export fn pread() void {}
@@ -1409,6 +1589,8 @@ export fn prlimit64() void {}
 export fn process_vm_readv() void {}
 export fn process_vm_writev() void {}
 export fn profil() void {}
+export fn program_invocation_name() void {}
+export fn program_invocation_short_name() void {}
 export fn pselect() void {}
 export fn psiginfo() void {}
 export fn psignal() void {}
@@ -1418,11 +1600,18 @@ export fn pthread_attr_getinheritsched() void {}
 export fn pthread_attr_getschedparam() void {}
 export fn pthread_attr_getschedpolicy() void {}
 export fn pthread_attr_getscope() void {}
+export fn pthread_attr_init() void {}
 export fn pthread_attr_setdetachstate() void {}
 export fn pthread_attr_setinheritsched() void {}
 export fn pthread_attr_setschedparam() void {}
 export fn pthread_attr_setschedpolicy() void {}
 export fn pthread_attr_setscope() void {}
+export fn pthread_cond_broadcast() void {}
+export fn pthread_cond_destroy() void {}
+export fn pthread_cond_init() void {}
+export fn pthread_cond_signal() void {}
+export fn pthread_cond_timedwait() void {}
+export fn pthread_cond_wait() void {}
 export fn pthread_condattr_destroy() void {}
 export fn pthread_condattr_init() void {}
 export fn pthread_equal() void {}
@@ -1472,6 +1661,8 @@ export fn qfcvt_r() void {}
 export fn qgcvt() void {}
 export fn qsort() void {}
 export fn qsort_r() void {}
+export fn query_module() void {}
+export fn quick_exit() void {}
 export fn quotactl() void {}
 export fn raise() void {}
 export fn rand() void {}
@@ -1487,10 +1678,12 @@ export fn re_compile_pattern() void {}
 export fn re_exec() void {}
 export fn re_match() void {}
 export fn re_match_2() void {}
+export fn re_max_failures() void {}
 export fn re_search() void {}
 export fn re_search_2() void {}
 export fn re_set_registers() void {}
 export fn re_set_syntax() void {}
+export fn re_syntax_options() void {}
 export fn read() void {}
 export fn readahead() void {}
 export fn readdir() void {}
@@ -1502,6 +1695,7 @@ export fn readlinkat() void {}
 export fn readv() void {}
 export fn realloc() void {}
 export fn reallocarray() void {}
+export fn realpath() void {}
 export fn reboot() void {}
 export fn recv() void {}
 export fn recvfrom() void {}
@@ -1509,11 +1703,13 @@ export fn recvmmsg() void {}
 export fn recvmsg() void {}
 export fn regcomp() void {}
 export fn regerror() void {}
+export fn regexec() void {}
 export fn regfree() void {}
 export fn register_printf_function() void {}
 export fn register_printf_modifier() void {}
 export fn register_printf_specifier() void {}
 export fn register_printf_type() void {}
+export fn registerrpc() void {}
 export fn remap_file_pages() void {}
 export fn remove() void {}
 export fn removexattr() void {}
@@ -1526,11 +1722,14 @@ export fn rewind() void {}
 export fn rewinddir() void {}
 export fn rexec() void {}
 export fn rexec_af() void {}
+export fn rexecoptions() void {}
 export fn rindex() void {}
 export fn rmdir() void {}
+export fn rpc_createerr() void {}
 export fn rpmatch() void {}
 export fn rresvport() void {}
 export fn rresvport_af() void {}
+export fn rtime() void {}
 export fn ruserok() void {}
 export fn ruserok_af() void {}
 export fn ruserpass() void {}
@@ -1545,10 +1744,12 @@ export fn scandirat64() void {}
 export fn scanf() void {}
 export fn sched_get_priority_max() void {}
 export fn sched_get_priority_min() void {}
+export fn sched_getaffinity() void {}
 export fn sched_getcpu() void {}
 export fn sched_getparam() void {}
 export fn sched_getscheduler() void {}
 export fn sched_rr_get_interval() void {}
+export fn sched_setaffinity() void {}
 export fn sched_setparam() void {}
 export fn sched_setscheduler() void {}
 export fn sched_yield() void {}
@@ -1557,6 +1758,7 @@ export fn seed48() void {}
 export fn seed48_r() void {}
 export fn seekdir() void {}
 export fn select() void {}
+export fn semctl() void {}
 export fn semget() void {}
 export fn semop() void {}
 export fn semtimedop() void {}
@@ -1627,6 +1829,7 @@ export fn sgetsgent_r() void {}
 export fn sgetspent() void {}
 export fn sgetspent_r() void {}
 export fn shmat() void {}
+export fn shmctl() void {}
 export fn shmdt() void {}
 export fn shmget() void {}
 export fn shutdown() void {}
@@ -1659,6 +1862,7 @@ export fn sigsetmask() void {}
 export fn sigstack() void {}
 export fn sigsuspend() void {}
 export fn sigtimedwait() void {}
+export fn sigvec() void {}
 export fn sigwait() void {}
 export fn sigwaitinfo() void {}
 export fn sleep() void {}
@@ -1682,6 +1886,10 @@ export fn statfs64() void {}
 export fn statvfs() void {}
 export fn statvfs64() void {}
 export fn statx() void {}
+export fn stderr() void {}
+export fn stdin() void {}
+export fn stdout() void {}
+export fn step() void {}
 export fn stime() void {}
 export fn stpcpy() void {}
 export fn stpncpy() void {}
@@ -1763,6 +1971,34 @@ export fn strverscmp() void {}
 export fn strxfrm() void {}
 export fn strxfrm_l() void {}
 export fn stty() void {}
+export fn svc_exit() void {}
+export fn svc_fdset() void {}
+export fn svc_getreq() void {}
+export fn svc_getreq_common() void {}
+export fn svc_getreq_poll() void {}
+export fn svc_getreqset() void {}
+export fn svc_max_pollfd() void {}
+export fn svc_pollfd() void {}
+export fn svc_register() void {}
+export fn svc_run() void {}
+export fn svc_sendreply() void {}
+export fn svc_unregister() void {}
+export fn svcauthdes_stats() void {}
+export fn svcerr_auth() void {}
+export fn svcerr_decode() void {}
+export fn svcerr_noproc() void {}
+export fn svcerr_noprog() void {}
+export fn svcerr_progvers() void {}
+export fn svcerr_systemerr() void {}
+export fn svcerr_weakauth() void {}
+export fn svcfd_create() void {}
+export fn svcraw_create() void {}
+export fn svctcp_create() void {}
+export fn svcudp_bufcreate() void {}
+export fn svcudp_create() void {}
+export fn svcudp_enablecache() void {}
+export fn svcunix_create() void {}
+export fn svcunixfd_create() void {}
 export fn swab() void {}
 export fn swapcontext() void {}
 export fn swapoff() void {}
@@ -1774,6 +2010,10 @@ export fn symlinkat() void {}
 export fn sync() void {}
 export fn sync_file_range() void {}
 export fn syncfs() void {}
+export fn sys_errlist() void {}
+export fn sys_nerr() void {}
+export fn sys_sigabbrev() void {}
+export fn sys_siglist() void {}
 export fn syscall() void {}
 export fn sysconf() void {}
 export fn sysctl() void {}
@@ -1809,6 +2049,8 @@ export fn timerfd_gettime() void {}
 export fn timerfd_settime() void {}
 export fn times() void {}
 export fn timespec_get() void {}
+export fn timezone() void {}
+export fn tmpfile() void {}
 export fn tmpfile64() void {}
 export fn tmpnam() void {}
 export fn tmpnam_r() void {}
@@ -1831,6 +2073,7 @@ export fn ttyname() void {}
 export fn ttyname_r() void {}
 export fn ttyslot() void {}
 export fn twalk() void {}
+export fn tzname() void {}
 export fn tzset() void {}
 export fn ualarm() void {}
 export fn ulckpwdf() void {}
@@ -1848,8 +2091,11 @@ export fn unsetenv() void {}
 export fn unshare() void {}
 export fn updwtmp() void {}
 export fn updwtmpx() void {}
+export fn uselib() void {}
 export fn uselocale() void {}
+export fn user2netname() void {}
 export fn usleep() void {}
+export fn ustat() void {}
 export fn utime() void {}
 export fn utimensat() void {}
 export fn utimes() void {}
@@ -1972,3 +2218,76 @@ export fn wprintf() void {}
 export fn write() void {}
 export fn writev() void {}
 export fn wscanf() void {}
+export fn xdecrypt() void {}
+export fn xdr_accepted_reply() void {}
+export fn xdr_array() void {}
+export fn xdr_authdes_cred() void {}
+export fn xdr_authdes_verf() void {}
+export fn xdr_authunix_parms() void {}
+export fn xdr_bool() void {}
+export fn xdr_bytes() void {}
+export fn xdr_callhdr() void {}
+export fn xdr_callmsg() void {}
+export fn xdr_char() void {}
+export fn xdr_cryptkeyarg() void {}
+export fn xdr_cryptkeyarg2() void {}
+export fn xdr_cryptkeyres() void {}
+export fn xdr_des_block() void {}
+export fn xdr_double() void {}
+export fn xdr_enum() void {}
+export fn xdr_float() void {}
+export fn xdr_free() void {}
+export fn xdr_getcredres() void {}
+export fn xdr_hyper() void {}
+export fn xdr_int() void {}
+export fn xdr_int16_t() void {}
+export fn xdr_int32_t() void {}
+export fn xdr_int64_t() void {}
+export fn xdr_int8_t() void {}
+export fn xdr_key_netstarg() void {}
+export fn xdr_key_netstres() void {}
+export fn xdr_keybuf() void {}
+export fn xdr_keystatus() void {}
+export fn xdr_long() void {}
+export fn xdr_longlong_t() void {}
+export fn xdr_netnamestr() void {}
+export fn xdr_netobj() void {}
+export fn xdr_opaque() void {}
+export fn xdr_opaque_auth() void {}
+export fn xdr_pmap() void {}
+export fn xdr_pmaplist() void {}
+export fn xdr_pointer() void {}
+export fn xdr_quad_t() void {}
+export fn xdr_reference() void {}
+export fn xdr_rejected_reply() void {}
+export fn xdr_replymsg() void {}
+export fn xdr_rmtcall_args() void {}
+export fn xdr_rmtcallres() void {}
+export fn xdr_short() void {}
+export fn xdr_sizeof() void {}
+export fn xdr_string() void {}
+export fn xdr_u_char() void {}
+export fn xdr_u_hyper() void {}
+export fn xdr_u_int() void {}
+export fn xdr_u_long() void {}
+export fn xdr_u_longlong_t() void {}
+export fn xdr_u_quad_t() void {}
+export fn xdr_u_short() void {}
+export fn xdr_uint16_t() void {}
+export fn xdr_uint32_t() void {}
+export fn xdr_uint64_t() void {}
+export fn xdr_uint8_t() void {}
+export fn xdr_union() void {}
+export fn xdr_unixcred() void {}
+export fn xdr_vector() void {}
+export fn xdr_void() void {}
+export fn xdr_wrapstring() void {}
+export fn xdrmem_create() void {}
+export fn xdrrec_create() void {}
+export fn xdrrec_endofrecord() void {}
+export fn xdrrec_eof() void {}
+export fn xdrrec_skiprecord() void {}
+export fn xdrstdio_create() void {}
+export fn xencrypt() void {}
+export fn xprt_register() void {}
+export fn xprt_unregister() void {}
libc/dummy/dl.zig
@@ -0,0 +1,19 @@
+const builtin = @import("builtin");
+pub fn panic(msg: []const u8, error_return_trace: ?*builtin.StackTrace) noreturn {
+    unreachable;
+}
+
+// This file exists to create a libdl.so file so that LLD has something to look at
+// and emit linker errors if an attempt to link against a non-existent C symbol happens.
+
+export fn __libdl_freeres() void {}
+export fn _dlfcn_hook() void {}
+export fn dladdr() void {}
+export fn dladdr1() void {}
+export fn dlclose() void {}
+export fn dlerror() void {}
+export fn dlinfo() void {}
+export fn dlmopen() void {}
+export fn dlopen() void {}
+export fn dlsym() void {}
+export fn dlvsym() void {}
libc/dummy/m.zig
@@ -0,0 +1,1068 @@
+const builtin = @import("builtin");
+pub fn panic(msg: []const u8, error_return_trace: ?*builtin.StackTrace) noreturn {
+    unreachable;
+}
+
+// This file exists to create a libm.so file so that LLD has something to look at
+// and emit linker errors if an attempt to link against a non-existent C symbol happens.
+
+export fn _LIB_VERSION() void {}
+export fn __acos_finite() void {}
+export fn __acosf128_finite() void {}
+export fn __acosf_finite() void {}
+export fn __acosh_finite() void {}
+export fn __acoshf128_finite() void {}
+export fn __acoshf_finite() void {}
+export fn __acoshl_finite() void {}
+export fn __acosl_finite() void {}
+export fn __asin_finite() void {}
+export fn __asinf128_finite() void {}
+export fn __asinf_finite() void {}
+export fn __asinl_finite() void {}
+export fn __atan2_finite() void {}
+export fn __atan2f128_finite() void {}
+export fn __atan2f_finite() void {}
+export fn __atan2l_finite() void {}
+export fn __atanh_finite() void {}
+export fn __atanhf128_finite() void {}
+export fn __atanhf_finite() void {}
+export fn __atanhl_finite() void {}
+export fn __clog10() void {}
+export fn __clog10f() void {}
+export fn __clog10l() void {}
+export fn __cosh_finite() void {}
+export fn __coshf128_finite() void {}
+export fn __coshf_finite() void {}
+export fn __coshl_finite() void {}
+export fn __exp10_finite() void {}
+export fn __exp10f128_finite() void {}
+export fn __exp10f_finite() void {}
+export fn __exp10l_finite() void {}
+export fn __exp2_finite() void {}
+export fn __exp2f128_finite() void {}
+export fn __exp2f_finite() void {}
+export fn __exp2l_finite() void {}
+export fn __exp_finite() void {}
+export fn __expf128_finite() void {}
+export fn __expf_finite() void {}
+export fn __expl_finite() void {}
+export fn __finite() void {}
+export fn __finitef() void {}
+export fn __finitef128() void {}
+export fn __finitel() void {}
+export fn __fmod_finite() void {}
+export fn __fmodf128_finite() void {}
+export fn __fmodf_finite() void {}
+export fn __fmodl_finite() void {}
+export fn __fpclassify() void {}
+export fn __fpclassifyf() void {}
+export fn __fpclassifyf128() void {}
+export fn __fpclassifyl() void {}
+export fn __gamma_r_finite() void {}
+export fn __gammaf128_r_finite() void {}
+export fn __gammaf_r_finite() void {}
+export fn __gammal_r_finite() void {}
+export fn __hypot_finite() void {}
+export fn __hypotf128_finite() void {}
+export fn __hypotf_finite() void {}
+export fn __hypotl_finite() void {}
+export fn __iscanonicall() void {}
+export fn __iseqsig() void {}
+export fn __iseqsigf() void {}
+export fn __iseqsigf128() void {}
+export fn __iseqsigl() void {}
+export fn __isinff128() void {}
+export fn __isnanf128() void {}
+export fn __issignaling() void {}
+export fn __issignalingf() void {}
+export fn __issignalingf128() void {}
+export fn __issignalingl() void {}
+export fn __j0_finite() void {}
+export fn __j0f128_finite() void {}
+export fn __j0f_finite() void {}
+export fn __j0l_finite() void {}
+export fn __j1_finite() void {}
+export fn __j1f128_finite() void {}
+export fn __j1f_finite() void {}
+export fn __j1l_finite() void {}
+export fn __jn_finite() void {}
+export fn __jnf128_finite() void {}
+export fn __jnf_finite() void {}
+export fn __jnl_finite() void {}
+export fn __lgamma_r_finite() void {}
+export fn __lgammaf128_r_finite() void {}
+export fn __lgammaf_r_finite() void {}
+export fn __lgammal_r_finite() void {}
+export fn __log10_finite() void {}
+export fn __log10f128_finite() void {}
+export fn __log10f_finite() void {}
+export fn __log10l_finite() void {}
+export fn __log2_finite() void {}
+export fn __log2f128_finite() void {}
+export fn __log2f_finite() void {}
+export fn __log2l_finite() void {}
+export fn __log_finite() void {}
+export fn __logf128_finite() void {}
+export fn __logf_finite() void {}
+export fn __logl_finite() void {}
+export fn __pow_finite() void {}
+export fn __powf128_finite() void {}
+export fn __powf_finite() void {}
+export fn __powl_finite() void {}
+export fn __remainder_finite() void {}
+export fn __remainderf128_finite() void {}
+export fn __remainderf_finite() void {}
+export fn __remainderl_finite() void {}
+export fn __scalb_finite() void {}
+export fn __scalbf_finite() void {}
+export fn __scalbl_finite() void {}
+export fn __signbit() void {}
+export fn __signbitf() void {}
+export fn __signbitf128() void {}
+export fn __signbitl() void {}
+export fn __signgam() void {}
+export fn __sinh_finite() void {}
+export fn __sinhf128_finite() void {}
+export fn __sinhf_finite() void {}
+export fn __sinhl_finite() void {}
+export fn __sqrt_finite() void {}
+export fn __sqrtf128_finite() void {}
+export fn __sqrtf_finite() void {}
+export fn __sqrtl_finite() void {}
+export fn __y0_finite() void {}
+export fn __y0f128_finite() void {}
+export fn __y0f_finite() void {}
+export fn __y0l_finite() void {}
+export fn __y1_finite() void {}
+export fn __y1f128_finite() void {}
+export fn __y1f_finite() void {}
+export fn __y1l_finite() void {}
+export fn __yn_finite() void {}
+export fn __ynf128_finite() void {}
+export fn __ynf_finite() void {}
+export fn __ynl_finite() void {}
+export fn acos() void {}
+export fn acosf() void {}
+export fn acosf128() void {}
+export fn acosf32() void {}
+export fn acosf32x() void {}
+export fn acosf64() void {}
+export fn acosf64x() void {}
+export fn acosh() void {}
+export fn acoshf() void {}
+export fn acoshf128() void {}
+export fn acoshf32() void {}
+export fn acoshf32x() void {}
+export fn acoshf64() void {}
+export fn acoshf64x() void {}
+export fn acoshl() void {}
+export fn acosl() void {}
+export fn asin() void {}
+export fn asinf() void {}
+export fn asinf128() void {}
+export fn asinf32() void {}
+export fn asinf32x() void {}
+export fn asinf64() void {}
+export fn asinf64x() void {}
+export fn asinh() void {}
+export fn asinhf() void {}
+export fn asinhf128() void {}
+export fn asinhf32() void {}
+export fn asinhf32x() void {}
+export fn asinhf64() void {}
+export fn asinhf64x() void {}
+export fn asinhl() void {}
+export fn asinl() void {}
+export fn atan() void {}
+export fn atan2() void {}
+export fn atan2f() void {}
+export fn atan2f128() void {}
+export fn atan2f32() void {}
+export fn atan2f32x() void {}
+export fn atan2f64() void {}
+export fn atan2f64x() void {}
+export fn atan2l() void {}
+export fn atanf() void {}
+export fn atanf128() void {}
+export fn atanf32() void {}
+export fn atanf32x() void {}
+export fn atanf64() void {}
+export fn atanf64x() void {}
+export fn atanh() void {}
+export fn atanhf() void {}
+export fn atanhf128() void {}
+export fn atanhf32() void {}
+export fn atanhf32x() void {}
+export fn atanhf64() void {}
+export fn atanhf64x() void {}
+export fn atanhl() void {}
+export fn atanl() void {}
+export fn cabs() void {}
+export fn cabsf() void {}
+export fn cabsf128() void {}
+export fn cabsf32() void {}
+export fn cabsf32x() void {}
+export fn cabsf64() void {}
+export fn cabsf64x() void {}
+export fn cabsl() void {}
+export fn cacos() void {}
+export fn cacosf() void {}
+export fn cacosf128() void {}
+export fn cacosf32() void {}
+export fn cacosf32x() void {}
+export fn cacosf64() void {}
+export fn cacosf64x() void {}
+export fn cacosh() void {}
+export fn cacoshf() void {}
+export fn cacoshf128() void {}
+export fn cacoshf32() void {}
+export fn cacoshf32x() void {}
+export fn cacoshf64() void {}
+export fn cacoshf64x() void {}
+export fn cacoshl() void {}
+export fn cacosl() void {}
+export fn canonicalize() void {}
+export fn canonicalizef() void {}
+export fn canonicalizef128() void {}
+export fn canonicalizef32() void {}
+export fn canonicalizef32x() void {}
+export fn canonicalizef64() void {}
+export fn canonicalizef64x() void {}
+export fn canonicalizel() void {}
+export fn carg() void {}
+export fn cargf() void {}
+export fn cargf128() void {}
+export fn cargf32() void {}
+export fn cargf32x() void {}
+export fn cargf64() void {}
+export fn cargf64x() void {}
+export fn cargl() void {}
+export fn casin() void {}
+export fn casinf() void {}
+export fn casinf128() void {}
+export fn casinf32() void {}
+export fn casinf32x() void {}
+export fn casinf64() void {}
+export fn casinf64x() void {}
+export fn casinh() void {}
+export fn casinhf() void {}
+export fn casinhf128() void {}
+export fn casinhf32() void {}
+export fn casinhf32x() void {}
+export fn casinhf64() void {}
+export fn casinhf64x() void {}
+export fn casinhl() void {}
+export fn casinl() void {}
+export fn catan() void {}
+export fn catanf() void {}
+export fn catanf128() void {}
+export fn catanf32() void {}
+export fn catanf32x() void {}
+export fn catanf64() void {}
+export fn catanf64x() void {}
+export fn catanh() void {}
+export fn catanhf() void {}
+export fn catanhf128() void {}
+export fn catanhf32() void {}
+export fn catanhf32x() void {}
+export fn catanhf64() void {}
+export fn catanhf64x() void {}
+export fn catanhl() void {}
+export fn catanl() void {}
+export fn cbrt() void {}
+export fn cbrtf() void {}
+export fn cbrtf128() void {}
+export fn cbrtf32() void {}
+export fn cbrtf32x() void {}
+export fn cbrtf64() void {}
+export fn cbrtf64x() void {}
+export fn cbrtl() void {}
+export fn ccos() void {}
+export fn ccosf() void {}
+export fn ccosf128() void {}
+export fn ccosf32() void {}
+export fn ccosf32x() void {}
+export fn ccosf64() void {}
+export fn ccosf64x() void {}
+export fn ccosh() void {}
+export fn ccoshf() void {}
+export fn ccoshf128() void {}
+export fn ccoshf32() void {}
+export fn ccoshf32x() void {}
+export fn ccoshf64() void {}
+export fn ccoshf64x() void {}
+export fn ccoshl() void {}
+export fn ccosl() void {}
+export fn ceil() void {}
+export fn ceilf() void {}
+export fn ceilf128() void {}
+export fn ceilf32() void {}
+export fn ceilf32x() void {}
+export fn ceilf64() void {}
+export fn ceilf64x() void {}
+export fn ceill() void {}
+export fn cexp() void {}
+export fn cexpf() void {}
+export fn cexpf128() void {}
+export fn cexpf32() void {}
+export fn cexpf32x() void {}
+export fn cexpf64() void {}
+export fn cexpf64x() void {}
+export fn cexpl() void {}
+export fn cimag() void {}
+export fn cimagf() void {}
+export fn cimagf128() void {}
+export fn cimagf32() void {}
+export fn cimagf32x() void {}
+export fn cimagf64() void {}
+export fn cimagf64x() void {}
+export fn cimagl() void {}
+export fn clog() void {}
+export fn clog10() void {}
+export fn clog10f() void {}
+export fn clog10f128() void {}
+export fn clog10f32() void {}
+export fn clog10f32x() void {}
+export fn clog10f64() void {}
+export fn clog10f64x() void {}
+export fn clog10l() void {}
+export fn clogf() void {}
+export fn clogf128() void {}
+export fn clogf32() void {}
+export fn clogf32x() void {}
+export fn clogf64() void {}
+export fn clogf64x() void {}
+export fn clogl() void {}
+export fn conj() void {}
+export fn conjf() void {}
+export fn conjf128() void {}
+export fn conjf32() void {}
+export fn conjf32x() void {}
+export fn conjf64() void {}
+export fn conjf64x() void {}
+export fn conjl() void {}
+export fn copysign() void {}
+export fn copysignf() void {}
+export fn copysignf128() void {}
+export fn copysignf32() void {}
+export fn copysignf32x() void {}
+export fn copysignf64() void {}
+export fn copysignf64x() void {}
+export fn copysignl() void {}
+export fn cos() void {}
+export fn cosf() void {}
+export fn cosf128() void {}
+export fn cosf32() void {}
+export fn cosf32x() void {}
+export fn cosf64() void {}
+export fn cosf64x() void {}
+export fn cosh() void {}
+export fn coshf() void {}
+export fn coshf128() void {}
+export fn coshf32() void {}
+export fn coshf32x() void {}
+export fn coshf64() void {}
+export fn coshf64x() void {}
+export fn coshl() void {}
+export fn cosl() void {}
+export fn cpow() void {}
+export fn cpowf() void {}
+export fn cpowf128() void {}
+export fn cpowf32() void {}
+export fn cpowf32x() void {}
+export fn cpowf64() void {}
+export fn cpowf64x() void {}
+export fn cpowl() void {}
+export fn cproj() void {}
+export fn cprojf() void {}
+export fn cprojf128() void {}
+export fn cprojf32() void {}
+export fn cprojf32x() void {}
+export fn cprojf64() void {}
+export fn cprojf64x() void {}
+export fn cprojl() void {}
+export fn creal() void {}
+export fn crealf() void {}
+export fn crealf128() void {}
+export fn crealf32() void {}
+export fn crealf32x() void {}
+export fn crealf64() void {}
+export fn crealf64x() void {}
+export fn creall() void {}
+export fn csin() void {}
+export fn csinf() void {}
+export fn csinf128() void {}
+export fn csinf32() void {}
+export fn csinf32x() void {}
+export fn csinf64() void {}
+export fn csinf64x() void {}
+export fn csinh() void {}
+export fn csinhf() void {}
+export fn csinhf128() void {}
+export fn csinhf32() void {}
+export fn csinhf32x() void {}
+export fn csinhf64() void {}
+export fn csinhf64x() void {}
+export fn csinhl() void {}
+export fn csinl() void {}
+export fn csqrt() void {}
+export fn csqrtf() void {}
+export fn csqrtf128() void {}
+export fn csqrtf32() void {}
+export fn csqrtf32x() void {}
+export fn csqrtf64() void {}
+export fn csqrtf64x() void {}
+export fn csqrtl() void {}
+export fn ctan() void {}
+export fn ctanf() void {}
+export fn ctanf128() void {}
+export fn ctanf32() void {}
+export fn ctanf32x() void {}
+export fn ctanf64() void {}
+export fn ctanf64x() void {}
+export fn ctanh() void {}
+export fn ctanhf() void {}
+export fn ctanhf128() void {}
+export fn ctanhf32() void {}
+export fn ctanhf32x() void {}
+export fn ctanhf64() void {}
+export fn ctanhf64x() void {}
+export fn ctanhl() void {}
+export fn ctanl() void {}
+export fn daddl() void {}
+export fn ddivl() void {}
+export fn dmull() void {}
+export fn drem() void {}
+export fn dremf() void {}
+export fn dreml() void {}
+export fn dsubl() void {}
+export fn erf() void {}
+export fn erfc() void {}
+export fn erfcf() void {}
+export fn erfcf128() void {}
+export fn erfcf32() void {}
+export fn erfcf32x() void {}
+export fn erfcf64() void {}
+export fn erfcf64x() void {}
+export fn erfcl() void {}
+export fn erff() void {}
+export fn erff128() void {}
+export fn erff32() void {}
+export fn erff32x() void {}
+export fn erff64() void {}
+export fn erff64x() void {}
+export fn erfl() void {}
+export fn exp() void {}
+export fn exp10() void {}
+export fn exp10f() void {}
+export fn exp10f128() void {}
+export fn exp10f32() void {}
+export fn exp10f32x() void {}
+export fn exp10f64() void {}
+export fn exp10f64x() void {}
+export fn exp10l() void {}
+export fn exp2() void {}
+export fn exp2f() void {}
+export fn exp2f128() void {}
+export fn exp2f32() void {}
+export fn exp2f32x() void {}
+export fn exp2f64() void {}
+export fn exp2f64x() void {}
+export fn exp2l() void {}
+export fn expf() void {}
+export fn expf128() void {}
+export fn expf32() void {}
+export fn expf32x() void {}
+export fn expf64() void {}
+export fn expf64x() void {}
+export fn expl() void {}
+export fn expm1() void {}
+export fn expm1f() void {}
+export fn expm1f128() void {}
+export fn expm1f32() void {}
+export fn expm1f32x() void {}
+export fn expm1f64() void {}
+export fn expm1f64x() void {}
+export fn expm1l() void {}
+export fn f32addf128() void {}
+export fn f32addf32x() void {}
+export fn f32addf64() void {}
+export fn f32addf64x() void {}
+export fn f32divf128() void {}
+export fn f32divf32x() void {}
+export fn f32divf64() void {}
+export fn f32divf64x() void {}
+export fn f32mulf128() void {}
+export fn f32mulf32x() void {}
+export fn f32mulf64() void {}
+export fn f32mulf64x() void {}
+export fn f32subf128() void {}
+export fn f32subf32x() void {}
+export fn f32subf64() void {}
+export fn f32subf64x() void {}
+export fn f32xaddf128() void {}
+export fn f32xaddf64() void {}
+export fn f32xaddf64x() void {}
+export fn f32xdivf128() void {}
+export fn f32xdivf64() void {}
+export fn f32xdivf64x() void {}
+export fn f32xmulf128() void {}
+export fn f32xmulf64() void {}
+export fn f32xmulf64x() void {}
+export fn f32xsubf128() void {}
+export fn f32xsubf64() void {}
+export fn f32xsubf64x() void {}
+export fn f64addf128() void {}
+export fn f64addf64x() void {}
+export fn f64divf128() void {}
+export fn f64divf64x() void {}
+export fn f64mulf128() void {}
+export fn f64mulf64x() void {}
+export fn f64subf128() void {}
+export fn f64subf64x() void {}
+export fn f64xaddf128() void {}
+export fn f64xdivf128() void {}
+export fn f64xmulf128() void {}
+export fn f64xsubf128() void {}
+export fn fabs() void {}
+export fn fabsf() void {}
+export fn fabsf128() void {}
+export fn fabsf32() void {}
+export fn fabsf32x() void {}
+export fn fabsf64() void {}
+export fn fabsf64x() void {}
+export fn fabsl() void {}
+export fn fadd() void {}
+export fn faddl() void {}
+export fn fdim() void {}
+export fn fdimf() void {}
+export fn fdimf128() void {}
+export fn fdimf32() void {}
+export fn fdimf32x() void {}
+export fn fdimf64() void {}
+export fn fdimf64x() void {}
+export fn fdiml() void {}
+export fn fdiv() void {}
+export fn fdivl() void {}
+export fn feclearexcept() void {}
+export fn fedisableexcept() void {}
+export fn feenableexcept() void {}
+export fn fegetenv() void {}
+export fn fegetexcept() void {}
+export fn fegetexceptflag() void {}
+export fn fegetmode() void {}
+export fn fegetround() void {}
+export fn feholdexcept() void {}
+export fn feraiseexcept() void {}
+export fn fesetenv() void {}
+export fn fesetexcept() void {}
+export fn fesetexceptflag() void {}
+export fn fesetmode() void {}
+export fn fesetround() void {}
+export fn fetestexcept() void {}
+export fn fetestexceptflag() void {}
+export fn feupdateenv() void {}
+export fn finite() void {}
+export fn finitef() void {}
+export fn finitel() void {}
+export fn floor() void {}
+export fn floorf() void {}
+export fn floorf128() void {}
+export fn floorf32() void {}
+export fn floorf32x() void {}
+export fn floorf64() void {}
+export fn floorf64x() void {}
+export fn floorl() void {}
+export fn fma() void {}
+export fn fmaf() void {}
+export fn fmaf128() void {}
+export fn fmaf32() void {}
+export fn fmaf32x() void {}
+export fn fmaf64() void {}
+export fn fmaf64x() void {}
+export fn fmal() void {}
+export fn fmax() void {}
+export fn fmaxf() void {}
+export fn fmaxf128() void {}
+export fn fmaxf32() void {}
+export fn fmaxf32x() void {}
+export fn fmaxf64() void {}
+export fn fmaxf64x() void {}
+export fn fmaxl() void {}
+export fn fmaxmag() void {}
+export fn fmaxmagf() void {}
+export fn fmaxmagf128() void {}
+export fn fmaxmagf32() void {}
+export fn fmaxmagf32x() void {}
+export fn fmaxmagf64() void {}
+export fn fmaxmagf64x() void {}
+export fn fmaxmagl() void {}
+export fn fmin() void {}
+export fn fminf() void {}
+export fn fminf128() void {}
+export fn fminf32() void {}
+export fn fminf32x() void {}
+export fn fminf64() void {}
+export fn fminf64x() void {}
+export fn fminl() void {}
+export fn fminmag() void {}
+export fn fminmagf() void {}
+export fn fminmagf128() void {}
+export fn fminmagf32() void {}
+export fn fminmagf32x() void {}
+export fn fminmagf64() void {}
+export fn fminmagf64x() void {}
+export fn fminmagl() void {}
+export fn fmod() void {}
+export fn fmodf() void {}
+export fn fmodf128() void {}
+export fn fmodf32() void {}
+export fn fmodf32x() void {}
+export fn fmodf64() void {}
+export fn fmodf64x() void {}
+export fn fmodl() void {}
+export fn fmul() void {}
+export fn fmull() void {}
+export fn frexp() void {}
+export fn frexpf() void {}
+export fn frexpf128() void {}
+export fn frexpf32() void {}
+export fn frexpf32x() void {}
+export fn frexpf64() void {}
+export fn frexpf64x() void {}
+export fn frexpl() void {}
+export fn fromfp() void {}
+export fn fromfpf() void {}
+export fn fromfpf128() void {}
+export fn fromfpf32() void {}
+export fn fromfpf32x() void {}
+export fn fromfpf64() void {}
+export fn fromfpf64x() void {}
+export fn fromfpl() void {}
+export fn fromfpx() void {}
+export fn fromfpxf() void {}
+export fn fromfpxf128() void {}
+export fn fromfpxf32() void {}
+export fn fromfpxf32x() void {}
+export fn fromfpxf64() void {}
+export fn fromfpxf64x() void {}
+export fn fromfpxl() void {}
+export fn fsub() void {}
+export fn fsubl() void {}
+export fn gamma() void {}
+export fn gammaf() void {}
+export fn gammal() void {}
+export fn getpayload() void {}
+export fn getpayloadf() void {}
+export fn getpayloadf128() void {}
+export fn getpayloadf32() void {}
+export fn getpayloadf32x() void {}
+export fn getpayloadf64() void {}
+export fn getpayloadf64x() void {}
+export fn getpayloadl() void {}
+export fn hypot() void {}
+export fn hypotf() void {}
+export fn hypotf128() void {}
+export fn hypotf32() void {}
+export fn hypotf32x() void {}
+export fn hypotf64() void {}
+export fn hypotf64x() void {}
+export fn hypotl() void {}
+export fn ilogb() void {}
+export fn ilogbf() void {}
+export fn ilogbf128() void {}
+export fn ilogbf32() void {}
+export fn ilogbf32x() void {}
+export fn ilogbf64() void {}
+export fn ilogbf64x() void {}
+export fn ilogbl() void {}
+export fn j0() void {}
+export fn j0f() void {}
+export fn j0f128() void {}
+export fn j0f32() void {}
+export fn j0f32x() void {}
+export fn j0f64() void {}
+export fn j0f64x() void {}
+export fn j0l() void {}
+export fn j1() void {}
+export fn j1f() void {}
+export fn j1f128() void {}
+export fn j1f32() void {}
+export fn j1f32x() void {}
+export fn j1f64() void {}
+export fn j1f64x() void {}
+export fn j1l() void {}
+export fn jn() void {}
+export fn jnf() void {}
+export fn jnf128() void {}
+export fn jnf32() void {}
+export fn jnf32x() void {}
+export fn jnf64() void {}
+export fn jnf64x() void {}
+export fn jnl() void {}
+export fn ldexp() void {}
+export fn ldexpf() void {}
+export fn ldexpf128() void {}
+export fn ldexpf32() void {}
+export fn ldexpf32x() void {}
+export fn ldexpf64() void {}
+export fn ldexpf64x() void {}
+export fn ldexpl() void {}
+export fn lgamma() void {}
+export fn lgamma_r() void {}
+export fn lgammaf() void {}
+export fn lgammaf128() void {}
+export fn lgammaf128_r() void {}
+export fn lgammaf32() void {}
+export fn lgammaf32_r() void {}
+export fn lgammaf32x() void {}
+export fn lgammaf32x_r() void {}
+export fn lgammaf64() void {}
+export fn lgammaf64_r() void {}
+export fn lgammaf64x() void {}
+export fn lgammaf64x_r() void {}
+export fn lgammaf_r() void {}
+export fn lgammal() void {}
+export fn lgammal_r() void {}
+export fn llogb() void {}
+export fn llogbf() void {}
+export fn llogbf128() void {}
+export fn llogbf32() void {}
+export fn llogbf32x() void {}
+export fn llogbf64() void {}
+export fn llogbf64x() void {}
+export fn llogbl() void {}
+export fn llrint() void {}
+export fn llrintf() void {}
+export fn llrintf128() void {}
+export fn llrintf32() void {}
+export fn llrintf32x() void {}
+export fn llrintf64() void {}
+export fn llrintf64x() void {}
+export fn llrintl() void {}
+export fn llround() void {}
+export fn llroundf() void {}
+export fn llroundf128() void {}
+export fn llroundf32() void {}
+export fn llroundf32x() void {}
+export fn llroundf64() void {}
+export fn llroundf64x() void {}
+export fn llroundl() void {}
+export fn log() void {}
+export fn log10() void {}
+export fn log10f() void {}
+export fn log10f128() void {}
+export fn log10f32() void {}
+export fn log10f32x() void {}
+export fn log10f64() void {}
+export fn log10f64x() void {}
+export fn log10l() void {}
+export fn log1p() void {}
+export fn log1pf() void {}
+export fn log1pf128() void {}
+export fn log1pf32() void {}
+export fn log1pf32x() void {}
+export fn log1pf64() void {}
+export fn log1pf64x() void {}
+export fn log1pl() void {}
+export fn log2() void {}
+export fn log2f() void {}
+export fn log2f128() void {}
+export fn log2f32() void {}
+export fn log2f32x() void {}
+export fn log2f64() void {}
+export fn log2f64x() void {}
+export fn log2l() void {}
+export fn logb() void {}
+export fn logbf() void {}
+export fn logbf128() void {}
+export fn logbf32() void {}
+export fn logbf32x() void {}
+export fn logbf64() void {}
+export fn logbf64x() void {}
+export fn logbl() void {}
+export fn logf() void {}
+export fn logf128() void {}
+export fn logf32() void {}
+export fn logf32x() void {}
+export fn logf64() void {}
+export fn logf64x() void {}
+export fn logl() void {}
+export fn lrint() void {}
+export fn lrintf() void {}
+export fn lrintf128() void {}
+export fn lrintf32() void {}
+export fn lrintf32x() void {}
+export fn lrintf64() void {}
+export fn lrintf64x() void {}
+export fn lrintl() void {}
+export fn lround() void {}
+export fn lroundf() void {}
+export fn lroundf128() void {}
+export fn lroundf32() void {}
+export fn lroundf32x() void {}
+export fn lroundf64() void {}
+export fn lroundf64x() void {}
+export fn lroundl() void {}
+export fn matherr() void {}
+export fn modf() void {}
+export fn modff() void {}
+export fn modff128() void {}
+export fn modff32() void {}
+export fn modff32x() void {}
+export fn modff64() void {}
+export fn modff64x() void {}
+export fn modfl() void {}
+export fn nan() void {}
+export fn nanf() void {}
+export fn nanf128() void {}
+export fn nanf32() void {}
+export fn nanf32x() void {}
+export fn nanf64() void {}
+export fn nanf64x() void {}
+export fn nanl() void {}
+export fn nearbyint() void {}
+export fn nearbyintf() void {}
+export fn nearbyintf128() void {}
+export fn nearbyintf32() void {}
+export fn nearbyintf32x() void {}
+export fn nearbyintf64() void {}
+export fn nearbyintf64x() void {}
+export fn nearbyintl() void {}
+export fn nextafter() void {}
+export fn nextafterf() void {}
+export fn nextafterf128() void {}
+export fn nextafterf32() void {}
+export fn nextafterf32x() void {}
+export fn nextafterf64() void {}
+export fn nextafterf64x() void {}
+export fn nextafterl() void {}
+export fn nextdown() void {}
+export fn nextdownf() void {}
+export fn nextdownf128() void {}
+export fn nextdownf32() void {}
+export fn nextdownf32x() void {}
+export fn nextdownf64() void {}
+export fn nextdownf64x() void {}
+export fn nextdownl() void {}
+export fn nexttoward() void {}
+export fn nexttowardf() void {}
+export fn nexttowardl() void {}
+export fn nextup() void {}
+export fn nextupf() void {}
+export fn nextupf128() void {}
+export fn nextupf32() void {}
+export fn nextupf32x() void {}
+export fn nextupf64() void {}
+export fn nextupf64x() void {}
+export fn nextupl() void {}
+export fn pow() void {}
+export fn pow10() void {}
+export fn pow10f() void {}
+export fn pow10l() void {}
+export fn powf() void {}
+export fn powf128() void {}
+export fn powf32() void {}
+export fn powf32x() void {}
+export fn powf64() void {}
+export fn powf64x() void {}
+export fn powl() void {}
+export fn remainder() void {}
+export fn remainderf() void {}
+export fn remainderf128() void {}
+export fn remainderf32() void {}
+export fn remainderf32x() void {}
+export fn remainderf64() void {}
+export fn remainderf64x() void {}
+export fn remainderl() void {}
+export fn remquo() void {}
+export fn remquof() void {}
+export fn remquof128() void {}
+export fn remquof32() void {}
+export fn remquof32x() void {}
+export fn remquof64() void {}
+export fn remquof64x() void {}
+export fn remquol() void {}
+export fn rint() void {}
+export fn rintf() void {}
+export fn rintf128() void {}
+export fn rintf32() void {}
+export fn rintf32x() void {}
+export fn rintf64() void {}
+export fn rintf64x() void {}
+export fn rintl() void {}
+export fn round() void {}
+export fn roundeven() void {}
+export fn roundevenf() void {}
+export fn roundevenf128() void {}
+export fn roundevenf32() void {}
+export fn roundevenf32x() void {}
+export fn roundevenf64() void {}
+export fn roundevenf64x() void {}
+export fn roundevenl() void {}
+export fn roundf() void {}
+export fn roundf128() void {}
+export fn roundf32() void {}
+export fn roundf32x() void {}
+export fn roundf64() void {}
+export fn roundf64x() void {}
+export fn roundl() void {}
+export fn scalb() void {}
+export fn scalbf() void {}
+export fn scalbl() void {}
+export fn scalbln() void {}
+export fn scalblnf() void {}
+export fn scalblnf128() void {}
+export fn scalblnf32() void {}
+export fn scalblnf32x() void {}
+export fn scalblnf64() void {}
+export fn scalblnf64x() void {}
+export fn scalblnl() void {}
+export fn scalbn() void {}
+export fn scalbnf() void {}
+export fn scalbnf128() void {}
+export fn scalbnf32() void {}
+export fn scalbnf32x() void {}
+export fn scalbnf64() void {}
+export fn scalbnf64x() void {}
+export fn scalbnl() void {}
+export fn setpayload() void {}
+export fn setpayloadf() void {}
+export fn setpayloadf128() void {}
+export fn setpayloadf32() void {}
+export fn setpayloadf32x() void {}
+export fn setpayloadf64() void {}
+export fn setpayloadf64x() void {}
+export fn setpayloadl() void {}
+export fn setpayloadsig() void {}
+export fn setpayloadsigf() void {}
+export fn setpayloadsigf128() void {}
+export fn setpayloadsigf32() void {}
+export fn setpayloadsigf32x() void {}
+export fn setpayloadsigf64() void {}
+export fn setpayloadsigf64x() void {}
+export fn setpayloadsigl() void {}
+export fn signgam() void {}
+export fn significand() void {}
+export fn significandf() void {}
+export fn significandl() void {}
+export fn sin() void {}
+export fn sincos() void {}
+export fn sincosf() void {}
+export fn sincosf128() void {}
+export fn sincosf32() void {}
+export fn sincosf32x() void {}
+export fn sincosf64() void {}
+export fn sincosf64x() void {}
+export fn sincosl() void {}
+export fn sinf() void {}
+export fn sinf128() void {}
+export fn sinf32() void {}
+export fn sinf32x() void {}
+export fn sinf64() void {}
+export fn sinf64x() void {}
+export fn sinh() void {}
+export fn sinhf() void {}
+export fn sinhf128() void {}
+export fn sinhf32() void {}
+export fn sinhf32x() void {}
+export fn sinhf64() void {}
+export fn sinhf64x() void {}
+export fn sinhl() void {}
+export fn sinl() void {}
+export fn sqrt() void {}
+export fn sqrtf() void {}
+export fn sqrtf128() void {}
+export fn sqrtf32() void {}
+export fn sqrtf32x() void {}
+export fn sqrtf64() void {}
+export fn sqrtf64x() void {}
+export fn sqrtl() void {}
+export fn tan() void {}
+export fn tanf() void {}
+export fn tanf128() void {}
+export fn tanf32() void {}
+export fn tanf32x() void {}
+export fn tanf64() void {}
+export fn tanf64x() void {}
+export fn tanh() void {}
+export fn tanhf() void {}
+export fn tanhf128() void {}
+export fn tanhf32() void {}
+export fn tanhf32x() void {}
+export fn tanhf64() void {}
+export fn tanhf64x() void {}
+export fn tanhl() void {}
+export fn tanl() void {}
+export fn tgamma() void {}
+export fn tgammaf() void {}
+export fn tgammaf128() void {}
+export fn tgammaf32() void {}
+export fn tgammaf32x() void {}
+export fn tgammaf64() void {}
+export fn tgammaf64x() void {}
+export fn tgammal() void {}
+export fn totalorder() void {}
+export fn totalorderf() void {}
+export fn totalorderf128() void {}
+export fn totalorderf32() void {}
+export fn totalorderf32x() void {}
+export fn totalorderf64() void {}
+export fn totalorderf64x() void {}
+export fn totalorderl() void {}
+export fn totalordermag() void {}
+export fn totalordermagf() void {}
+export fn totalordermagf128() void {}
+export fn totalordermagf32() void {}
+export fn totalordermagf32x() void {}
+export fn totalordermagf64() void {}
+export fn totalordermagf64x() void {}
+export fn totalordermagl() void {}
+export fn trunc() void {}
+export fn truncf() void {}
+export fn truncf128() void {}
+export fn truncf32() void {}
+export fn truncf32x() void {}
+export fn truncf64() void {}
+export fn truncf64x() void {}
+export fn truncl() void {}
+export fn ufromfp() void {}
+export fn ufromfpf() void {}
+export fn ufromfpf128() void {}
+export fn ufromfpf32() void {}
+export fn ufromfpf32x() void {}
+export fn ufromfpf64() void {}
+export fn ufromfpf64x() void {}
+export fn ufromfpl() void {}
+export fn ufromfpx() void {}
+export fn ufromfpxf() void {}
+export fn ufromfpxf128() void {}
+export fn ufromfpxf32() void {}
+export fn ufromfpxf32x() void {}
+export fn ufromfpxf64() void {}
+export fn ufromfpxf64x() void {}
+export fn ufromfpxl() void {}
+export fn y0() void {}
+export fn y0f() void {}
+export fn y0f128() void {}
+export fn y0f32() void {}
+export fn y0f32x() void {}
+export fn y0f64() void {}
+export fn y0f64x() void {}
+export fn y0l() void {}
+export fn y1() void {}
+export fn y1f() void {}
+export fn y1f128() void {}
+export fn y1f32() void {}
+export fn y1f32x() void {}
+export fn y1f64() void {}
+export fn y1f64x() void {}
+export fn y1l() void {}
+export fn yn() void {}
+export fn ynf() void {}
+export fn ynf128() void {}
+export fn ynf32() void {}
+export fn ynf32x() void {}
+export fn ynf64() void {}
+export fn ynf64x() void {}
+export fn ynl() void {}
libc/dummy/pthread.zig
@@ -0,0 +1,263 @@
+const builtin = @import("builtin");
+pub fn panic(msg: []const u8, error_return_trace: ?*builtin.StackTrace) noreturn {
+    unreachable;
+}
+
+// This file exists to create a libpthread.so file so that LLD has something to look at
+// and emit linker errors if an attempt to link against a non-existent C symbol happens.
+
+export fn _IO_flockfile() void {}
+export fn _IO_ftrylockfile() void {}
+export fn _IO_funlockfile() void {}
+export fn __close() void {}
+export fn __connect() void {}
+export fn __errno_location() void {}
+export fn __fcntl() void {}
+export fn __fork() void {}
+export fn __h_errno_location() void {}
+export fn __libc_allocate_rtsig() void {}
+export fn __libc_current_sigrtmax() void {}
+export fn __libc_current_sigrtmin() void {}
+export fn __libpthread_freeres() void {}
+export fn __lseek() void {}
+export fn __nanosleep() void {}
+export fn __open() void {}
+export fn __open64() void {}
+export fn __pread64() void {}
+export fn __pthread_barrier_init() void {}
+export fn __pthread_barrier_wait() void {}
+export fn __pthread_cleanup_routine() void {}
+export fn __pthread_clock_gettime() void {}
+export fn __pthread_clock_settime() void {}
+export fn __pthread_get_minstack() void {}
+export fn __pthread_getspecific() void {}
+export fn __pthread_initialize_minimal() void {}
+export fn __pthread_key_create() void {}
+export fn __pthread_mutex_destroy() void {}
+export fn __pthread_mutex_init() void {}
+export fn __pthread_mutex_lock() void {}
+export fn __pthread_mutex_trylock() void {}
+export fn __pthread_mutex_unlock() void {}
+export fn __pthread_mutexattr_destroy() void {}
+export fn __pthread_mutexattr_init() void {}
+export fn __pthread_mutexattr_settype() void {}
+export fn __pthread_once() void {}
+export fn __pthread_register_cancel() void {}
+export fn __pthread_register_cancel_defer() void {}
+export fn __pthread_rwlock_destroy() void {}
+export fn __pthread_rwlock_init() void {}
+export fn __pthread_rwlock_rdlock() void {}
+export fn __pthread_rwlock_tryrdlock() void {}
+export fn __pthread_rwlock_trywrlock() void {}
+export fn __pthread_rwlock_unlock() void {}
+export fn __pthread_rwlock_wrlock() void {}
+export fn __pthread_setspecific() void {}
+export fn __pthread_unregister_cancel() void {}
+export fn __pthread_unregister_cancel_restore() void {}
+export fn __pthread_unwind() void {}
+export fn __pthread_unwind_next() void {}
+export fn __pwrite64() void {}
+export fn __read() void {}
+export fn __res_state() void {}
+export fn __send() void {}
+export fn __shm_directory() void {}
+export fn __sigaction() void {}
+export fn __vfork() void {}
+export fn __wait() void {}
+export fn __write() void {}
+export fn _pthread_cleanup_pop() void {}
+export fn _pthread_cleanup_pop_restore() void {}
+export fn _pthread_cleanup_push() void {}
+export fn _pthread_cleanup_push_defer() void {}
+export fn accept() void {}
+export fn call_once() void {}
+export fn close() void {}
+export fn cnd_broadcast() void {}
+export fn cnd_destroy() void {}
+export fn cnd_init() void {}
+export fn cnd_signal() void {}
+export fn cnd_timedwait() void {}
+export fn cnd_wait() void {}
+export fn connect() void {}
+export fn fcntl() void {}
+export fn flockfile() void {}
+export fn fork() void {}
+export fn fsync() void {}
+export fn ftrylockfile() void {}
+export fn funlockfile() void {}
+export fn longjmp() void {}
+export fn lseek() void {}
+export fn lseek64() void {}
+export fn msync() void {}
+export fn mtx_destroy() void {}
+export fn mtx_init() void {}
+export fn mtx_lock() void {}
+export fn mtx_timedlock() void {}
+export fn mtx_trylock() void {}
+export fn mtx_unlock() void {}
+export fn nanosleep() void {}
+export fn open() void {}
+export fn open64() void {}
+export fn pause() void {}
+export fn pread() void {}
+export fn pread64() void {}
+export fn pthread_atfork() void {}
+export fn pthread_attr_destroy() void {}
+export fn pthread_attr_getaffinity_np() void {}
+export fn pthread_attr_getdetachstate() void {}
+export fn pthread_attr_getguardsize() void {}
+export fn pthread_attr_getinheritsched() void {}
+export fn pthread_attr_getschedparam() void {}
+export fn pthread_attr_getschedpolicy() void {}
+export fn pthread_attr_getscope() void {}
+export fn pthread_attr_getstack() void {}
+export fn pthread_attr_getstackaddr() void {}
+export fn pthread_attr_getstacksize() void {}
+export fn pthread_attr_init() void {}
+export fn pthread_attr_setaffinity_np() void {}
+export fn pthread_attr_setdetachstate() void {}
+export fn pthread_attr_setguardsize() void {}
+export fn pthread_attr_setinheritsched() void {}
+export fn pthread_attr_setschedparam() void {}
+export fn pthread_attr_setschedpolicy() void {}
+export fn pthread_attr_setscope() void {}
+export fn pthread_attr_setstack() void {}
+export fn pthread_attr_setstackaddr() void {}
+export fn pthread_attr_setstacksize() void {}
+export fn pthread_barrier_destroy() void {}
+export fn pthread_barrier_init() void {}
+export fn pthread_barrier_wait() void {}
+export fn pthread_barrierattr_destroy() void {}
+export fn pthread_barrierattr_getpshared() void {}
+export fn pthread_barrierattr_init() void {}
+export fn pthread_barrierattr_setpshared() void {}
+export fn pthread_cancel() void {}
+export fn pthread_cond_broadcast() void {}
+export fn pthread_cond_destroy() void {}
+export fn pthread_cond_init() void {}
+export fn pthread_cond_signal() void {}
+export fn pthread_cond_timedwait() void {}
+export fn pthread_cond_wait() void {}
+export fn pthread_condattr_destroy() void {}
+export fn pthread_condattr_getclock() void {}
+export fn pthread_condattr_getpshared() void {}
+export fn pthread_condattr_init() void {}
+export fn pthread_condattr_setclock() void {}
+export fn pthread_condattr_setpshared() void {}
+export fn pthread_create() void {}
+export fn pthread_detach() void {}
+export fn pthread_equal() void {}
+export fn pthread_exit() void {}
+export fn pthread_getaffinity_np() void {}
+export fn pthread_getattr_default_np() void {}
+export fn pthread_getattr_np() void {}
+export fn pthread_getconcurrency() void {}
+export fn pthread_getcpuclockid() void {}
+export fn pthread_getname_np() void {}
+export fn pthread_getschedparam() void {}
+export fn pthread_getspecific() void {}
+export fn pthread_join() void {}
+export fn pthread_key_create() void {}
+export fn pthread_key_delete() void {}
+export fn pthread_kill() void {}
+export fn pthread_kill_other_threads_np() void {}
+export fn pthread_mutex_consistent() void {}
+export fn pthread_mutex_consistent_np() void {}
+export fn pthread_mutex_destroy() void {}
+export fn pthread_mutex_getprioceiling() void {}
+export fn pthread_mutex_init() void {}
+export fn pthread_mutex_lock() void {}
+export fn pthread_mutex_setprioceiling() void {}
+export fn pthread_mutex_timedlock() void {}
+export fn pthread_mutex_trylock() void {}
+export fn pthread_mutex_unlock() void {}
+export fn pthread_mutexattr_destroy() void {}
+export fn pthread_mutexattr_getkind_np() void {}
+export fn pthread_mutexattr_getprioceiling() void {}
+export fn pthread_mutexattr_getprotocol() void {}
+export fn pthread_mutexattr_getpshared() void {}
+export fn pthread_mutexattr_getrobust() void {}
+export fn pthread_mutexattr_getrobust_np() void {}
+export fn pthread_mutexattr_gettype() void {}
+export fn pthread_mutexattr_init() void {}
+export fn pthread_mutexattr_setkind_np() void {}
+export fn pthread_mutexattr_setprioceiling() void {}
+export fn pthread_mutexattr_setprotocol() void {}
+export fn pthread_mutexattr_setpshared() void {}
+export fn pthread_mutexattr_setrobust() void {}
+export fn pthread_mutexattr_setrobust_np() void {}
+export fn pthread_mutexattr_settype() void {}
+export fn pthread_once() void {}
+export fn pthread_rwlock_destroy() void {}
+export fn pthread_rwlock_init() void {}
+export fn pthread_rwlock_rdlock() void {}
+export fn pthread_rwlock_timedrdlock() void {}
+export fn pthread_rwlock_timedwrlock() void {}
+export fn pthread_rwlock_tryrdlock() void {}
+export fn pthread_rwlock_trywrlock() void {}
+export fn pthread_rwlock_unlock() void {}
+export fn pthread_rwlock_wrlock() void {}
+export fn pthread_rwlockattr_destroy() void {}
+export fn pthread_rwlockattr_getkind_np() void {}
+export fn pthread_rwlockattr_getpshared() void {}
+export fn pthread_rwlockattr_init() void {}
+export fn pthread_rwlockattr_setkind_np() void {}
+export fn pthread_rwlockattr_setpshared() void {}
+export fn pthread_self() void {}
+export fn pthread_setaffinity_np() void {}
+export fn pthread_setattr_default_np() void {}
+export fn pthread_setcancelstate() void {}
+export fn pthread_setcanceltype() void {}
+export fn pthread_setconcurrency() void {}
+export fn pthread_setname_np() void {}
+export fn pthread_setschedparam() void {}
+export fn pthread_setschedprio() void {}
+export fn pthread_setspecific() void {}
+export fn pthread_sigmask() void {}
+export fn pthread_sigqueue() void {}
+export fn pthread_spin_destroy() void {}
+export fn pthread_spin_init() void {}
+export fn pthread_spin_lock() void {}
+export fn pthread_spin_trylock() void {}
+export fn pthread_spin_unlock() void {}
+export fn pthread_testcancel() void {}
+export fn pthread_timedjoin_np() void {}
+export fn pthread_tryjoin_np() void {}
+export fn pthread_yield() void {}
+export fn pwrite() void {}
+export fn pwrite64() void {}
+export fn raise() void {}
+export fn read() void {}
+export fn recv() void {}
+export fn recvfrom() void {}
+export fn recvmsg() void {}
+export fn sem_close() void {}
+export fn sem_destroy() void {}
+export fn sem_getvalue() void {}
+export fn sem_init() void {}
+export fn sem_open() void {}
+export fn sem_post() void {}
+export fn sem_timedwait() void {}
+export fn sem_trywait() void {}
+export fn sem_unlink() void {}
+export fn sem_wait() void {}
+export fn send() void {}
+export fn sendmsg() void {}
+export fn sendto() void {}
+export fn sigaction() void {}
+export fn siglongjmp() void {}
+export fn sigwait() void {}
+export fn system() void {}
+export fn tcdrain() void {}
+export fn thrd_create() void {}
+export fn thrd_detach() void {}
+export fn thrd_exit() void {}
+export fn thrd_join() void {}
+export fn tss_create() void {}
+export fn tss_delete() void {}
+export fn tss_get() void {}
+export fn tss_set() void {}
+export fn vfork() void {}
+export fn wait() void {}
+export fn waitpid() void {}
+export fn write() void {}
libc/dummy/rt.zig
@@ -0,0 +1,48 @@
+const builtin = @import("builtin");
+pub fn panic(msg: []const u8, error_return_trace: ?*builtin.StackTrace) noreturn {
+    unreachable;
+}
+
+// This file exists to create a librt.so file so that LLD has something to look at
+// and emit linker errors if an attempt to link against a non-existent C symbol happens.
+
+export fn __mq_open_2() void {}
+export fn aio_cancel() void {}
+export fn aio_cancel64() void {}
+export fn aio_error() void {}
+export fn aio_error64() void {}
+export fn aio_fsync() void {}
+export fn aio_fsync64() void {}
+export fn aio_init() void {}
+export fn aio_read() void {}
+export fn aio_read64() void {}
+export fn aio_return() void {}
+export fn aio_return64() void {}
+export fn aio_suspend() void {}
+export fn aio_suspend64() void {}
+export fn aio_write() void {}
+export fn aio_write64() void {}
+export fn clock_getcpuclockid() void {}
+export fn clock_getres() void {}
+export fn clock_gettime() void {}
+export fn clock_nanosleep() void {}
+export fn clock_settime() void {}
+export fn lio_listio() void {}
+export fn lio_listio64() void {}
+export fn mq_close() void {}
+export fn mq_getattr() void {}
+export fn mq_notify() void {}
+export fn mq_open() void {}
+export fn mq_receive() void {}
+export fn mq_send() void {}
+export fn mq_setattr() void {}
+export fn mq_timedreceive() void {}
+export fn mq_timedsend() void {}
+export fn mq_unlink() void {}
+export fn shm_open() void {}
+export fn shm_unlink() void {}
+export fn timer_create() void {}
+export fn timer_delete() void {}
+export fn timer_getoverrun() void {}
+export fn timer_gettime() void {}
+export fn timer_settime() void {}
src/codegen.cpp
@@ -9148,6 +9148,7 @@ static void resolve_out_paths(CodeGen *g) {
         return;
     }
 
+    const char *prefix = "";
     const char *extname;
     switch (g->out_type) {
         case OutTypeUnknown:
@@ -9159,6 +9160,7 @@ static void resolve_out_paths(CodeGen *g) {
             extname = target_exe_file_ext(g->zig_target);
             break;
         case OutTypeLib:
+            prefix = target_lib_file_prefix(g->zig_target);
             extname = target_lib_file_ext(g->zig_target, g->is_static,
                         g->version_major, g->version_minor, g->version_patch);
             break;
@@ -9167,7 +9169,8 @@ static void resolve_out_paths(CodeGen *g) {
     assert(g->root_out_name);
 
     Buf basename = BUF_INIT;
-    buf_init_from_buf(&basename, g->root_out_name);
+    buf_init_from_str(&basename, prefix);
+    buf_append_buf(&basename, g->root_out_name);
     buf_append_str(&basename, extname);
     if (g->enable_cache || g->is_test_build) {
         os_path_join(&g->artifact_dir, &basename, &g->output_file_path);
src/link.cpp
@@ -70,6 +70,17 @@ static const char *path_from_libc(CodeGen *g, const char *subpath) {
     return buf_ptr(result);
 }
 
+static const char *build_dummy_so(CodeGen *parent, const char *name, size_t major_version) {
+    Buf *glibc_dummy_root_src = buf_sprintf("%s" OS_SEP "libc" OS_SEP "dummy" OS_SEP "%s.zig",
+            buf_ptr(parent->zig_lib_dir), name);
+    CodeGen *child_gen = create_child_codegen(parent, glibc_dummy_root_src, OutTypeLib, nullptr);
+    codegen_set_out_name(child_gen, buf_create_from_str(name));
+    codegen_set_lib_version(child_gen, major_version, 0, 0);
+    child_gen->is_static = false;
+    codegen_build_and_link(child_gen);
+    return buf_ptr(&child_gen->output_file_path);
+}
+
 static const char *get_libc_crt_file(CodeGen *parent, const char *file) {
     if (parent->libc == nullptr && target_is_glibc(parent)) {
         if (strcmp(file, "crti.o") == 0) {
@@ -181,13 +192,15 @@ static const char *get_libc_crt_file(CodeGen *parent, const char *file) {
             codegen_build_and_link(child_gen);
             return buf_ptr(&child_gen->output_file_path);
         } else if (strcmp(file, "libc.so.6") == 0) {
-            Buf *glibc_dummy_root_src = buf_create_from_str(path_from_libc(parent, "symbols.zig"));
-            CodeGen *child_gen = create_child_codegen(parent, glibc_dummy_root_src, OutTypeLib, nullptr);
-            codegen_set_out_name(child_gen, buf_create_from_str("c"));
-            codegen_set_lib_version(child_gen, 6, 0, 0);
-            child_gen->is_static = false;
-            codegen_build_and_link(child_gen);
-            return buf_ptr(&child_gen->output_file_path);
+            return build_dummy_so(parent, "c", 6);
+        } else if (strcmp(file, "libm.so.6") == 0) {
+            return build_dummy_so(parent, "m", 6);
+        } else if (strcmp(file, "libpthread.so.0") == 0) {
+            return build_dummy_so(parent, "pthread", 0);
+        } else if (strcmp(file, "librt.so.1") == 0) {
+            return build_dummy_so(parent, "rt", 1);
+        } else if (strcmp(file, "libdl.so.2") == 0) {
+            return build_dummy_so(parent, "dl", 2);
         } else if (strcmp(file, "libc_nonshared.a") == 0) {
             CodeGen *child_gen = create_child_codegen(parent, nullptr, OutTypeLib, nullptr);
             codegen_set_out_name(child_gen, buf_create_from_str("c_nonshared"));
@@ -549,6 +562,22 @@ static void construct_linker_job_elf(LinkJob *lj) {
         if (buf_eql_str(link_lib->name, "c")) {
             continue;
         }
+        if (g->libc == nullptr && target_is_glibc(g)) {
+            // glibc
+            if (buf_eql_str(link_lib->name, "m")) {
+                lj->args.append(get_libc_crt_file(g, "libm.so.6")); // this is our dummy so file
+                continue;
+            } else if (buf_eql_str(link_lib->name, "pthread")) {
+                lj->args.append(get_libc_crt_file(g, "libpthread.so.0")); // this is our dummy so file
+                continue;
+            } else if (buf_eql_str(link_lib->name, "dl")) {
+                lj->args.append(get_libc_crt_file(g, "libdl.so.2")); // this is our dummy so file
+                continue;
+            } else if (buf_eql_str(link_lib->name, "rt")) {
+                lj->args.append(get_libc_crt_file(g, "librt.so.1")); // this is our dummy so file
+                continue;
+            }
+        }
         Buf *arg;
         if (buf_starts_with_str(link_lib->name, "/") || buf_ends_with_str(link_lib->name, ".a") ||
             buf_ends_with_str(link_lib->name, ".so"))
src/target.cpp
@@ -922,6 +922,14 @@ const char *target_exe_file_ext(const ZigTarget *target) {
     }
 }
 
+const char *target_lib_file_prefix(const ZigTarget *target) {
+    if (target->os == OsWindows || target->os == OsUefi) {
+        return "";
+    } else {
+        return "lib";
+    }
+}
+
 const char *target_lib_file_ext(const ZigTarget *target, bool is_static,
         size_t version_major, size_t version_minor, size_t version_patch)
 {
src/target.hpp
@@ -143,6 +143,7 @@ const char *target_o_file_ext(const ZigTarget *target);
 const char *target_asm_file_ext(const ZigTarget *target);
 const char *target_llvm_ir_file_ext(const ZigTarget *target);
 const char *target_exe_file_ext(const ZigTarget *target);
+const char *target_lib_file_prefix(const ZigTarget *target);
 const char *target_lib_file_ext(const ZigTarget *target, bool is_static,
         size_t version_major, size_t version_minor, size_t version_patch);
 
CMakeLists.txt
@@ -805,6 +805,11 @@ set(ZIG_C_HEADER_FILES
 )
 
 set(ZIG_LIBC_FILES
+    "dummy/c.zig"
+    "dummy/dl.zig"
+    "dummy/m.zig"
+    "dummy/pthread.zig"
+    "dummy/rt.zig"
     "glibc-include/a.out.h"
     "glibc-include/aio.h"
     "glibc-include/aliases.h"
@@ -1250,60 +1255,74 @@ set(ZIG_LIBC_FILES
     "glibc/bits/floatn-common.h"
     "glibc/bits/libc-header-start.h"
     "glibc/bits/long-double.h"
+    "glibc/bits/param.h"
+    "glibc/bits/pthreadtypes.h"
+    "glibc/bits/sched.h"
+    "glibc/bits/select.h"
+    "glibc/bits/setjmp.h"
+    "glibc/bits/signum-generic.h"
+    "glibc/bits/signum.h"
+    "glibc/bits/stat.h"
     "glibc/bits/stdint-intn.h"
+    "glibc/bits/stdlib-bsearch.h"
+    "glibc/bits/time.h"
+    "glibc/bits/time64.h"
     "glibc/bits/timesize.h"
+    "glibc/bits/types/__sigset_t.h"
+    "glibc/bits/types/struct_sched_param.h"
     "glibc/bits/typesizes.h"
-    "glibc/bits/time64.h"
     "glibc/bits/uintn-identity.h"
     "glibc/bits/waitflags.h"
     "glibc/bits/waitstatus.h"
-    "glibc/bits/select.h"
-    "glibc/bits/pthreadtypes.h"
-    "glibc/bits/types/__sigset_t.h"
-    "glibc/bits/types/struct_sched_param.h"
-    "glibc/bits/stdlib-bsearch.h"
-    "glibc/bits/stat.h"
-    "glibc/bits/sched.h"
-    "glibc/bits/time.h"
     "glibc/csu/abi-note.S"
     "glibc/csu/abi-tag.h"
     "glibc/csu/elf-init.c"
     "glibc/csu/init.c"
     "glibc/debug/stack_chk_fail_local.c"
+    "glibc/elf/elf.h"
     "glibc/include/alloca.h"
+    "glibc/include/bits/cpu-set.h"
+    "glibc/include/bits/statx.h"
+    "glibc/include/bits/stdlib-float.h"
     "glibc/include/bits/types.h"
     "glibc/include/bits/types/__locale_t.h"
     "glibc/include/bits/types/clock_t.h"
-    "glibc/include/bits/types/time_t.h"
-    "glibc/include/bits/types/timer_t.h"
     "glibc/include/bits/types/clockid_t.h"
     "glibc/include/bits/types/locale_t.h"
+    "glibc/include/bits/types/sig_atomic_t.h"
     "glibc/include/bits/types/sigset_t.h"
-    "glibc/include/bits/types/struct_timeval.h"
+    "glibc/include/bits/types/struct_itimerspec.h"
     "glibc/include/bits/types/struct_timespec.h"
-    "glibc/include/bits/stdlib-float.h"
-    "glibc/include/bits/statx.h"
-    "glibc/include/bits/cpu-set.h"
+    "glibc/include/bits/types/struct_timeval.h"
+    "glibc/include/bits/types/struct_tm.h"
+    "glibc/include/bits/types/time_t.h"
+    "glibc/include/bits/types/timer_t.h"
     "glibc/include/config.h"
+    "glibc/include/dso_handle.h"
     "glibc/include/elf.h"
     "glibc/include/endian.h"
     "glibc/include/features.h"
     "glibc/include/gnu/stubs.h"
     "glibc/include/libc-modules.h"
+    "glibc/include/libc-pointer-arith.h"
     "glibc/include/libc-symbols.h"
+    "glibc/include/pthread.h"
+    "glibc/include/sched.h"
+    "glibc/include/setjmp.h"
+    "glibc/include/signal.h"
+    "glibc/include/stackinfo.h"
+    "glibc/include/stap-probe.h"
     "glibc/include/stdc-predef.h"
     "glibc/include/stdlib.h"
     "glibc/include/sys/cdefs.h"
-    "glibc/include/sys/types.h"
+    "glibc/include/sys/param.h"
     "glibc/include/sys/select.h"
+    "glibc/include/sys/signal.h"
     "glibc/include/sys/stat.h"
-    "glibc/include/stackinfo.h"
-    "glibc/include/libc-pointer-arith.h"
-    "glibc/include/dso_handle.h"
-    "glibc/include/pthread.h"
-    "glibc/include/sched.h"
-    "glibc/include/time.h"
     "glibc/include/sys/time.h"
+    "glibc/include/sys/types.h"
+    "glibc/include/time.h"
+    "glibc/io/bits/statx.h"
     "glibc/io/fstat.c"
     "glibc/io/fstat64.c"
     "glibc/io/fstatat.c"
@@ -1315,93 +1334,78 @@ set(ZIG_LIBC_FILES
     "glibc/io/stat.c"
     "glibc/io/stat64.c"
     "glibc/io/sys/stat.h"
-    "glibc/io/bits/statx.h"
     "glibc/locale/bits/types/__locale_t.h"
     "glibc/locale/bits/types/locale_t.h"
     "glibc/misc/sys/cdefs.h"
+    "glibc/misc/sys/param.h"
     "glibc/misc/sys/select.h"
     "glibc/nptl/pthread_atfork.c"
+    "glibc/posix/bits/cpu-set.h"
     "glibc/posix/bits/types.h"
-    "glibc/posix/sys/types.h"
     "glibc/posix/sched.h"
-    "glibc/posix/bits/cpu-set.h"
+    "glibc/posix/sys/types.h"
+    "glibc/setjmp/setjmp.h"
+    "glibc/setjmp/setjmp.h"
+    "glibc/signal/bits/types/sig_atomic_t.h"
+    "glibc/signal/bits/types/sigset_t.h"
+    "glibc/signal/signal.h"
+    "glibc/signal/sys/signal.h"
+    "glibc/stdlib/alloca.h"
     "glibc/stdlib/at_quick_exit.c"
     "glibc/stdlib/atexit.c"
+    "glibc/stdlib/bits/stdlib-float.h"
     "glibc/stdlib/exit.h"
     "glibc/stdlib/stdlib.h"
-    "glibc/stdlib/bits/stdlib-float.h"
+    "glibc/string/endian.h"
+    "glibc/sysdeps/generic/allocalim.h"
+    "glibc/sysdeps/generic/dl-dtprocnum.h"
     "glibc/sysdeps/generic/dwarf2.h"
+    "glibc/sysdeps/generic/libc-lock.h"
+    "glibc/sysdeps/generic/stackinfo.h"
     "glibc/sysdeps/generic/symbol-hacks.h"
     "glibc/sysdeps/generic/sysdep.h"
-    "glibc/sysdeps/generic/stackinfo.h"
-    "glibc/sysdeps/generic/dl-dtprocnum.h"
-    "glibc/sysdeps/generic/allocalim.h"
-    "glibc/sysdeps/generic/libc-lock.h"
-    "glibc/sysdeps/pthread/allocalim.h"
     "glibc/sysdeps/nptl/bits/pthreadtypes.h"
     "glibc/sysdeps/nptl/bits/thread-shared-types.h"
     "glibc/sysdeps/nptl/libc-lock.h"
+    "glibc/sysdeps/nptl/libc-lockP.h"
+    "glibc/sysdeps/nptl/lowlevellock.h"
     "glibc/sysdeps/nptl/pthread.h"
-    "glibc/sysdeps/unix/sysv/linux/x86/bits/typesizes.h"
-    "glibc/sysdeps/unix/sysv/linux/x86/sys/elf.h"
+    "glibc/sysdeps/pthread/allocalim.h"
+    "glibc/sysdeps/unix/sysv/linux/bits/param.h"
     "glibc/sysdeps/unix/sysv/linux/bits/sched.h"
+    "glibc/sysdeps/unix/sysv/linux/bits/signum.h"
+    "glibc/sysdeps/unix/sysv/linux/bits/stat.h"
     "glibc/sysdeps/unix/sysv/linux/bits/time.h"
+    "glibc/sysdeps/unix/sysv/linux/bits/timex.h"
+    "glibc/sysdeps/unix/sysv/linux/generic/bits/stat.h"
     "glibc/sysdeps/unix/sysv/linux/include/sys/timex.h"
     "glibc/sysdeps/unix/sysv/linux/sys/timex.h"
-    "glibc/sysdeps/unix/sysv/linux/bits/timex.h"
-    "glibc/sysdeps/x86/bits/floatn.h"
-    "glibc/sysdeps/x86/bits/wordsize.h"
+    "glibc/sysdeps/unix/sysv/linux/x86/bits/stat.h"
+    "glibc/sysdeps/unix/sysv/linux/x86/bits/typesizes.h"
+    "glibc/sysdeps/unix/sysv/linux/x86/sys/elf.h"
+    "glibc/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h"
     "glibc/sysdeps/x86/bits/endian.h"
+    "glibc/sysdeps/x86/bits/floatn.h"
     "glibc/sysdeps/x86/bits/select.h"
-    "glibc/sysdeps/x86/sysdep.h"
+    "glibc/sysdeps/x86/bits/setjmp.h"
+    "glibc/sysdeps/x86/bits/wordsize.h"
     "glibc/sysdeps/x86/nptl/bits/pthreadtypes-arch.h"
+    "glibc/sysdeps/x86/sysdep.h"
     "glibc/sysdeps/x86_64/crti.S"
     "glibc/sysdeps/x86_64/crtn.S"
+    "glibc/sysdeps/x86_64/stackinfo.h"
     "glibc/sysdeps/x86_64/start.S"
     "glibc/sysdeps/x86_64/sysdep.h"
-    "glibc/sysdeps/x86_64/stackinfo.h"
     "glibc/time/bits/types/clock_t.h"
     "glibc/time/bits/types/clockid_t.h"
+    "glibc/time/bits/types/struct_itimerspec.h"
+    "glibc/time/bits/types/struct_timespec.h"
+    "glibc/time/bits/types/struct_timeval.h"
+    "glibc/time/bits/types/struct_tm.h"
     "glibc/time/bits/types/time_t.h"
     "glibc/time/bits/types/timer_t.h"
-    "glibc/time/bits/types/struct_timeval.h"
-    "glibc/time/bits/types/struct_timespec.h"
-    "glibc/time/time.h"
     "glibc/time/sys/time.h"
-    "glibc/string/endian.h"
-    "glibc/signal/bits/types/sigset_t.h"
-    "glibc/stdlib/alloca.h"
-    "glibc/elf/elf.h"
-    "glibc/include/bits/types/struct_tm.h"
-    "glibc/time/bits/types/struct_tm.h"
-    "glibc/include/bits/types/struct_itimerspec.h"
-    "glibc/time/bits/types/struct_itimerspec.h"
-    "glibc/sysdeps/x86/bits/setjmp.h"
-    "glibc/include/setjmp.h"
-    "glibc/setjmp/setjmp.h"
-    "glibc/setjmp/setjmp.h"
-    "glibc/bits/setjmp.h"
-    "glibc/sysdeps/nptl/libc-lockP.h"
-    "glibc/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h"
-    "glibc/sysdeps/nptl/lowlevellock.h"
-    "glibc/include/stap-probe.h"
-    "glibc/sysdeps/unix/sysv/linux/bits/param.h"
-    "glibc/include/sys/param.h"
-    "glibc/misc/sys/param.h"
-    "glibc/bits/param.h"
-    "glibc/include/signal.h"
-    "glibc/include/sys/signal.h"
-    "glibc/signal/signal.h"
-    "glibc/signal/sys/signal.h"
-    "glibc/sysdeps/unix/sysv/linux/bits/signum.h"
-    "glibc/bits/signum.h"
-    "glibc/bits/signum-generic.h"
-    "glibc/include/bits/types/sig_atomic_t.h"
-    "glibc/signal/bits/types/sig_atomic_t.h"
-    "glibc/sysdeps/unix/sysv/linux/x86/bits/stat.h"
-    "glibc/sysdeps/unix/sysv/linux/generic/bits/stat.h"
-    "glibc/sysdeps/unix/sysv/linux/bits/stat.h"
-    "symbols.zig"
+    "glibc/time/time.h"
 )
 
 if(MSVC)