| // Copyright 2026 The IREE Authors | |
| // | |
| // Licensed under the Apache License v2.0 with LLVM Exceptions. | |
| // See https://llvm.org/LICENSE.txt for license information. | |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| // End-to-end test for the wasm binary bundler. | |
| // | |
| // This C program is compiled to wasm32 (freestanding) and uses the iree_syscall | |
| // imports (write) declared via __attribute__((import_module)). The bundler | |
| // collects the JS companion (syscall_imports.js) from the dependency graph and | |
| // produces a single .mjs file that provides the imports at runtime. | |
| // | |
| // The test verifies the full pipeline: | |
| // 1. C -> .wasm (via wasm32 toolchain) | |
| // 2. JS companion collection (via collect_wasm_js aspect) | |
| // 3. DCE (via wasm import section parsing) | |
| // 4. Bundling (via wasm_binary_bundler.py) | |
| // 5. Runtime execution (via Node.js) | |
| #include <stdint.h> | |
| // Declare the iree_syscall.write import directly. This matches the declaration | |
| // in syscall_imports.h but avoids depending on the full libc header (which is | |
| // internal to the libc package). | |
| __attribute__((import_module("iree_syscall"), import_name("write"))) int32_t | |
| iree_syscall_write(int32_t fd, const void* buffer, int32_t length); | |
| __attribute__((export_name("run_test"))) int run_test(void) { | |
| const char message[] = "PASS: bundler end-to-end test\n"; | |
| iree_syscall_write(1, message, sizeof(message) - 1); | |
| return 0; | |
| } |