From 02729a12e1735f629d3066b51c96a056f712b080 Mon Sep 17 00:00:00 2001 From: Jacob Gravelle Date: Mon, 22 Jan 2018 12:50:36 -0800 Subject: First pass at LLD support for Emscripten (#1346) * Skeleton of a beginning of o2wasm, WIP and probably not going to be used * Get building post-cherry-pick * ast->ir, remove commented out code, include a debug module print because linking * Read linking section, print emscripten metadata json * WasmBinaryWriter emits user sections on Module * Remove debugging prints, everything that isn't needed to build metadata * Rename o2wasm to lld-metadata * lld-metadata support for outputting to file * Use tables index instead of function index for initializer functions * Add lld-emscripten tool to add emscripten-runtime functions to wasm modules (built with lld) * Handle EM_ASM in lld-emscripten * Add a list of functions to forcibly export (for initializer functions) * Disable incorrect initializer function reading * Add error printing when parsing .o files in lld-metadata * Remove ';; METADATA: ' prefix from lld-metadata, output is now standalone json * Support em_asm consts that aren't at the start of a segment * Initial test framework for lld-metadata tool * Add em_asm test * Add support for WASM_INIT_FUNCS in the linking section * Remove reloc section parsing because it's unused * lld-emscripten can read and write text * Add test harness for lld-emscripten * Export all functions for now * Add missing lld test output * Add support for reading object files differently Only difference so far is in importing mutable globals being an object file representation for symbols, but invalid wasm. * Update help strings * Update linking tests for stackAlloc fix * Rename lld-emscripten,lld-metadata to wasm-emscripten-finalize,wasm-link-metadata * Add help text to header comments * auto& instead of auto & * Extract LinkType to abi/wasm-object.h * Remove special handling for wasm object file reading, allow mutable globals * Add braces around default switch case * Fix flake8 errors * Handle generating dyncall thunks for imports as well * Use explicit bool for stackPointerGlobal * Use glob patterns for lld file iteration * Use __wasm_call_ctors for all initializer functions --- check.py | 3 +++ 1 file changed, 3 insertions(+) (limited to 'check.py') diff --git a/check.py b/check.py index 7455a2cac..5a926bf8e 100755 --- a/check.py +++ b/check.py @@ -31,6 +31,7 @@ from scripts.test.shared import ( ) import scripts.test.asm2wasm as asm2wasm +import scripts.test.lld as lld import scripts.test.s2wasm as s2wasm import scripts.test.wasm2asm as wasm2asm @@ -604,6 +605,8 @@ def main(): run_binaryen_js_tests() s2wasm.test_s2wasm() s2wasm.test_linker() + lld.test_wasm_link_metadata() + lld.test_wasm_emscripten_finalize() wasm2asm.test_wasm2asm() run_validator_tests() if options.torture and options.test_waterfall: -- cgit v1.2.3