diff --git a/system/lib/sbrk.c b/system/lib/libc/sbrk.c similarity index 96% rename from system/lib/sbrk.c rename to system/lib/libc/sbrk.c index 21f2d570956eb..aa1410518bfd7 100644 --- a/system/lib/sbrk.c +++ b/system/lib/libc/sbrk.c @@ -6,6 +6,12 @@ * */ +// libc files are compiled as -std=c99 which doesn't normally declare +// max_align_t. +#if __STDC_VERSION__ < 201112L +#define __NEED_max_align_t +#endif + #ifndef EMSCRIPTEN_NO_ERRNO #include #endif diff --git a/test/code_size/hello_wasm_worker_wasm.json b/test/code_size/hello_wasm_worker_wasm.json index fd3c7cade8ae8..1c477feb0bcd4 100644 --- a/test/code_size/hello_wasm_worker_wasm.json +++ b/test/code_size/hello_wasm_worker_wasm.json @@ -3,8 +3,8 @@ "a.html.gz": 433, "a.js": 733, "a.js.gz": 463, - "a.wasm": 1854, - "a.wasm.gz": 1034, - "total": 3324, - "total_gz": 1930 + "a.wasm": 1859, + "a.wasm.gz": 1033, + "total": 3329, + "total_gz": 1929 } diff --git a/test/code_size/hello_webgl2_wasm.json b/test/code_size/hello_webgl2_wasm.json index 8f2a7cbe7bf44..69df7d2928d07 100644 --- a/test/code_size/hello_webgl2_wasm.json +++ b/test/code_size/hello_webgl2_wasm.json @@ -3,8 +3,8 @@ "a.html.gz": 379, "a.js": 4971, "a.js.gz": 2430, - "a.wasm": 10451, - "a.wasm.gz": 6680, - "total": 15991, - "total_gz": 9489 + "a.wasm": 10459, + "a.wasm.gz": 6689, + "total": 15999, + "total_gz": 9498 } diff --git a/test/code_size/hello_webgl2_wasm2js.json b/test/code_size/hello_webgl2_wasm2js.json index 82590513233fa..17ddaf74b7b1d 100644 --- a/test/code_size/hello_webgl2_wasm2js.json +++ b/test/code_size/hello_webgl2_wasm2js.json @@ -1,10 +1,10 @@ { "a.html": 567, "a.html.gz": 379, - "a.js": 18201, - "a.js.gz": 8063, + "a.js": 18219, + "a.js.gz": 8059, "a.mem": 3171, - "a.mem.gz": 2714, - "total": 21939, - "total_gz": 11156 + "a.mem.gz": 2713, + "total": 21957, + "total_gz": 11151 } diff --git a/test/code_size/hello_webgl_wasm.json b/test/code_size/hello_webgl_wasm.json index 2e5c5d3487a3e..71d230beea6b4 100644 --- a/test/code_size/hello_webgl_wasm.json +++ b/test/code_size/hello_webgl_wasm.json @@ -3,8 +3,8 @@ "a.html.gz": 379, "a.js": 4450, "a.js.gz": 2250, - "a.wasm": 10451, - "a.wasm.gz": 6680, - "total": 15470, - "total_gz": 9309 + "a.wasm": 10459, + "a.wasm.gz": 6689, + "total": 15478, + "total_gz": 9318 } diff --git a/test/code_size/hello_webgl_wasm2js.json b/test/code_size/hello_webgl_wasm2js.json index 0bce64c31085a..f67f4f18bae42 100644 --- a/test/code_size/hello_webgl_wasm2js.json +++ b/test/code_size/hello_webgl_wasm2js.json @@ -1,10 +1,10 @@ { "a.html": 567, "a.html.gz": 379, - "a.js": 17673, - "a.js.gz": 7885, + "a.js": 17691, + "a.js.gz": 7882, "a.mem": 3171, - "a.mem.gz": 2714, - "total": 21411, - "total_gz": 10978 + "a.mem.gz": 2713, + "total": 21429, + "total_gz": 10974 } diff --git a/test/other/metadce/test_metadce_hello_dylink.size b/test/other/metadce/test_metadce_hello_dylink.size index 748b6c86252a0..22e75887797fe 100644 --- a/test/other/metadce/test_metadce_hello_dylink.size +++ b/test/other/metadce/test_metadce_hello_dylink.size @@ -1 +1 @@ -9486 +9488 diff --git a/test/test_core.py b/test/test_core.py index dec35b9f46535..327f3b9b42746 100644 --- a/test/test_core.py +++ b/test/test_core.py @@ -1017,7 +1017,7 @@ def test_emmalloc(self, *args): self.set_setting('MALLOC', 'none') self.emcc_args += [ '-fno-builtin', - path_from_root('system/lib/sbrk.c'), + path_from_root('system/lib/libc/sbrk.c'), path_from_root('system/lib/emmalloc.c') ] self.emcc_args += args diff --git a/tools/system_libs.py b/tools/system_libs.py index 8098052fbbba8..88f533d758c29 100644 --- a/tools/system_libs.py +++ b/tools/system_libs.py @@ -955,6 +955,8 @@ def get_libcall_files(self): path='system/lib/libc', filenames=['emscripten_memcpy.c', 'emscripten_memset.c', 'emscripten_scan_stack.c', + 'emscripten_get_heap_size.c', # needed by malloc + 'sbrk.c', # needed by malloc 'emscripten_memmove.c']) # Calls to iprintf can be generated during codegen. Ideally we wouldn't # compile these with -O2 like we do the rest of compiler-rt since its @@ -973,7 +975,12 @@ def get_libcall_files(self): iprintf_files += files_in_path( path='system/lib/libc/musl/src/string', filenames=['strlen.c']) - return math_files + exit_files + other_files + iprintf_files + + errno_files = files_in_path( + path='system/lib/libc/musl/src/errno', + filenames=['__errno_location.c']) + + return math_files + exit_files + other_files + iprintf_files + errno_files def get_files(self): libc_files = [] @@ -1185,6 +1192,7 @@ def get_files(self): 'sigaction.c', 'sigtimedwait.c', 'wasi-helpers.c', + 'sbrk.c', ]) if settings.RELOCATABLE: @@ -1587,8 +1595,7 @@ def get_files(self): malloc = utils.path_from_root('system/lib', { 'dlmalloc': 'dlmalloc.c', 'emmalloc': 'emmalloc.c', }[malloc_base]) - sbrk = utils.path_from_root('system/lib/sbrk.c') - return [malloc, sbrk] + return [malloc] def get_cflags(self): cflags = super().get_cflags()