| // 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 | |
| // Program termination and assertion failure for wasm32. | |
| // | |
| // abort() and exit() call JS imports for diagnostic reporting, then execute | |
| // __builtin_trap() to ensure the wasm module actually stops. The trap | |
| // instruction (unreachable) is a single byte and causes a RuntimeError that | |
| // the JS host can catch. | |
| // | |
| // iree_wasm_assert_fail() is called by the assert() macro from assert.h. | |
| #include <stdlib.h> | |
| #include "syscall_imports.h" | |
| _Noreturn void abort(void) { | |
| iree_wasm_exit(134); // 128 + SIGABRT(6) — conventional abort exit code. | |
| __builtin_trap(); | |
| } | |
| _Noreturn void exit(int status) { | |
| iree_wasm_exit(status); | |
| __builtin_trap(); | |
| } | |
| _Noreturn void iree_wasm_assert_fail(const char* expression, const char* file, | |
| int line, const char* function) { | |
| iree_wasm_assert_fail_import(expression, file, line, function); | |
| __builtin_trap(); | |
| } |