Commit Graph
2316 Commits
Author SHA1 Message Date
Liu JiaandGitHub 14d09bfb66 Fixed unit tests on X86_32 (#4279)
* fix unit tests on x86_32
* enbale wasm-c-api unit test on X86_32
* enable aot-stack-frame unit test on X86_32
* add ci: unit tests on X86_32
2025-05-19 10:32:07 +08:00
liang.heandGitHub e48367c044 Fix SIMD load lane to avoid incompatible pointer types (#4278) 2025-05-19 10:31:17 +08:00
jammar1GitHubJames Marshliang.he@intel.com <liang.he@intel.com>TianlongLiang
c7b2db1832 Update version to 2.3.0 (#4171)
- Update version to 2.3.0
- Update RELEASE_NOTES.md. Remove commits that forget to squash when PRs were merged, and some updates on commit messages

---------

Co-authored-by: James Marsh <mrshnja@amazon.co.uk>
Co-authored-by: liang.he@intel.com <liang.he@intel.com>
Co-authored-by: TianlongLiang <111852609+TianlongLiang@users.noreply.github.com>
2025-05-14 17:32:00 +08:00
liang.heandGitHub 28702edaf7 Merge commit from fork 2025-05-14 12:43:55 +08:00
Maks LitskevichandGitHub 129dc3a30f Add select 128 (#4236)
Add select 128
2025-05-14 12:35:56 +08:00
liang.heandGitHub 8ad47897d1 Add error handling for sgx ci (#4222)
> Process completed with exit code 143.

It will attempt to run spec test scripts three times if they end with code 143.

It is a known issue with GitHub-hosted runners. Usually, increasing the swap
file can help avoid it. However, sometimes error 143 still occurs. To prevent
confusion, let's capture error 143 and allow the CI to pass.
2025-05-14 11:09:08 +08:00
James RingandGitHub 70b35f9e60 Check for WASM_ENABLE_SIMDE in a couple more places (#4266)
For WAMR users who don't use cmake, it's possible that WASM_ENABLE_SIMD
is set when WASM_ENABLE_SIMDE isn't. This was causing build failures.
2025-05-14 10:58:19 +08:00
liang.heandGitHub 5c7f64bcc0 Set CMAKE_OSX_SYSROOT when building lldb (#4274)
CMake 4 no longer sets the CMAKE_OSX_SYSROOT variable by default, causing the
lldb build to fail after all GitHub-hosted runners have been upgraded to
CMake 4.

As a workaround, the variable is set using CMake command line options. There
is a PR to fix this issue in the llvm-project:
https://github.com/llvm/llvm-project/pull/138020. We might want to remove
this workaround after that PR has been merged.
2025-05-14 10:39:06 +08:00
liang.heandGitHub 065cc72350 Bypass wamr_ide-related components from the release process. (#4268)
Mostly because of some observations:
- There is no actual usage reported.
- Both ide-ext and ide-docker-image have not been maintained for quite a while.
- At the very least, there is no need to recompile it every time when there are no modifications.
2025-05-14 10:38:49 +08:00
liang.heandGitHub f0a8286863 Refactor fast-interpreter SIMD compilation flags (#4261)
- enable SIMD flag by default unless hardware limitation
- use SIMDE flag to control fast-interpreter behavior
2025-05-14 10:38:30 +08:00
Su YihanandGitHub 26aa4830e9 fix buf checking in load_table_section (#4276)
Signed-off-by: Su Yihan <yihan.su@intel.com>
2025-05-14 06:35:32 +08:00
YAMAMOTO TakashiandGitHub 477d66d00f product-mini/platforms/windows: set C++17 explicitly (#4269)
The recent LLVM uses std::optional, which is C++17.
2025-05-13 12:40:24 +08:00
Zhenwei JinandGitHub 7446b088c9 disable compiler to prevent get_current_target() crash (#4251) 2025-05-13 07:13:39 +08:00
Zhenwei JinandGitHub 3cce6fdaac avoid access null pointer (#4262) 2025-05-12 10:21:45 +08:00
YAMAMOTO TakashiandGitHub 510bb11f4a CI: make macos' build_samples_wasm_c_api similar to ubuntu (#4253) 2025-05-09 17:38:48 +08:00
James RingandGitHub c48dd5ccd7 Don't call os_thread_get_stack_boundary unless we actually use it (#4264)
Previously, if the user sets their own stack boundary, we still compute
the thread stack boundary (which is expensive), then immediately discard
the result. This change makes the expensive call only if we need it for
sure.
2025-05-09 17:14:33 +08:00
liang.heandGitHub 8f3961026e fix: improve error handling of snprintf() in send_thread_stop_status() (#4234)
Prevent `MAX_PACKET_SIZE - len` from overflowing.
2025-05-09 17:14:20 +08:00
YAMAMOTO TakashiandGitHub 908838a5b5 build-scripts/build_llvm.py: bump to llvm 18 (#4259)
* build-scripts/build_llvm.py: bump to llvm 18

cf. https://github.com/bytecodealliance/wasm-micro-runtime/issues/4210

why not 20?
because, as of writing this, 19 is the latest released version for
the xtensa fork of llvm: https://github.com/espressif/llvm-project

why not 19?
because of a bug in the xtensa fork of llvm:
https://github.com/espressif/llvm-project/issues/112

while we can use different versions for different targets,
it's nicer to use the same version everywhere when possible.

* spec-test-script/runtest.py: --size-level=0 for x86-64

with the recent version of LLVM, wamrc --size-level=1 often
generates R_X86_64_32S relocations which fail on load with
the infamous error:

"relocation truncated to fit R_X86_64_32S failed"

it seems that these relocations are often for jump tables.

this commit workarounds it with --size-level=0.

an alternative is to disable jump tables. (although it seems that
jump tables are not the only source of these relocations.)

cf. https://github.com/bytecodealliance/wasm-micro-runtime/issues/3035

it might be better to do this in wamrc itself. however, currently
target info is not available there in case of native compilation.
related: https://github.com/bytecodealliance/wasm-micro-runtime/issues/3356

* wamr-compiler: size_level=0 for sgx mode

cf. https://github.com/bytecodealliance/wasm-micro-runtime/issues/3035
2025-05-09 17:14:02 +08:00
liang.heandGitHub 1a72dcf34f Improve readlinkat_dup() to handle symlink size correctly (#4229)
* In readlinkat_dup(), use fstatat() to estimate size first.
* Reduce additional space in samples/file
2025-05-09 14:01:29 +08:00
YAMAMOTO TakashiandGitHub 6aa223dbf3 Stop pretending to support extended-const proposal (#4258)
As far as I know, we don't implement the proposal at all.

```
spacetanuki% wasm2wat --enable-all data.28.wasm
(module
  (memory (;0;) 1)
  (data (;0;) (i32.const 42
    i32.const 0
    i32.sub) ""))
spacetanuki% toywasm --load data.28.wasm
spacetanuki% ~/git/wasm-micro-runtime/product-mini/platforms/darwin/b.classic/iwasm data.28.wasm
WASM module load failed: illegal opcode or constant expression required or type mismatch
spacetanuki%
```

data.28.wasm in the above example is a binary version of:
https://github.com/WebAssembly/extended-const/blob/8d4f6aa2b00a8e7c0174410028625c6a176db8a1/test/core/data.wast#L184-L187
2025-05-09 09:29:06 +08:00
YAMAMOTO TakashiandGitHub 0a8994a2d5 aot_resolve_object_relocation_group: adapt to LLVM 19 (#4254)
cf.
https://github.com/llvm/llvm-project/pull/95031
https://github.com/llvm/llvm-project/pull/89693
2025-05-08 10:34:04 +08:00
YAMAMOTO TakashiandGitHub f88718d705 JIT: don't join worker threads twice (#4252)
in case of WASM_ENABLE_LAZY_JIT==0, compile_jit_functions should
have already joined these threads. joining them again here is
an undefined behavior.
2025-05-08 10:24:55 +08:00
Chris WoodsandGitHub ca5a2faf58 Modifying build flags to ensure libiwasm.so is built (#4255) 2025-05-08 10:13:09 +08:00
liang.heandGitHub 216404d7cb initialize WASI stdio handles to invalid for better error handling (#4092)
* initialize WASI stdio handles to invalid for better error handling
* implement os_invalid_raw_handle function for consistent invalid handle representation
2025-05-08 08:47:07 +08:00
Chris WoodsandGitHub 0e8b57d8a8 More detail to python setup, and fixed small typo (#4247) 2025-05-07 11:32:43 +08:00
YAMAMOTO TakashiandGitHub 88b5f6a535 samples/wasm-c-api: remove unused valgrind detection (#4249)
- it's unused
- valgrind is basically a linux-only software.
  it isn't a good idea to make it a hard requirement.
  if we want to use valgrind, it's better to introduce
  a separate option to control it.
2025-05-07 11:32:29 +08:00
YAMAMOTO TakashiandGitHub ac2fe552d5 aot_resolve_object_relocation_group: adapt to LLVM 16 (#4250)
cf. https://reviews.llvm.org/D123264
2025-05-07 11:32:14 +08:00
liang.heandGitHub ea417d7619 Add overflow check for preserved local offset in preserve_referenced_local (#4211) 2025-05-07 09:45:49 +08:00
YAMAMOTO TakashiandGitHub bb36a43fa4 riscv: avoid llvm.cttz.i32/i64 for xip (#4248)
LLVM 16 and later expands cttz intrinsic to a table lookup,
which involves some relocations. (unless ZBB is available,
in which case the native instructions are preferred over
the table-based lowering.)

cf. https://reviews.llvm.org/D128911
2025-05-07 09:42:51 +08:00
YAMAMOTO TakashiandGitHub 1996c18c4b samples/wasm-c-api: skip aot compilation unless necessary (#4239) 2025-05-07 07:09:44 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
d053f5534a build(deps): Bump github/codeql-action from 3.28.15 to 3.28.17 (#4243)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.15 to 3.28.17.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Commits](https://github.com/github/codeql-action/compare/v3.28.15...v3.28.17)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.28.17
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-06 11:16:45 +08:00
YAMAMOTO TakashiandGitHub 4735956eeb fix return types of our 64-bit clz/ctz/popcount intrinsics (#4238)
the corresponding LLVM intrinsics' return types are same as
their first argument. eg. i64 for llvm.cttz.i64.
cf. https://llvm.org/docs/LangRef.html#llvm-cttz-intrinsic

this commit changes the return types of our versions of the
intrinsics to match llvm versions as our aot compiler,
specifically __call_llvm_intrinsic, assumes.

strictly speaking, this is a potential AOT ABI change.
however, I suppose it isn't a problem for many of 64-bit ABIs
out there, where (lower half of) a 64-bit register is used to
return a 32-bit value anyway.  (for such ABIs, this commit
would fix the upper 32-bit value of the register.)
2025-05-06 10:15:00 +08:00
liang.heandGitHub 5910e5cd21 Use --target to pass a triple in wamrc (#4199)
Provide a triple string in the format of <arch>-<vendor>-<os>-<abi>
via --target.
2025-05-06 06:56:06 +08:00
Huang QiandGitHub 5bdbba0dbe platform/nuttx: Fix dcache operation in os_dcache_flush (#4225)
Replace up_invalidate_dcache_all() with up_flush_dcache_all() in
os_dcache_flush() to properly flush the data cache instead of just
invalidating it. This ensures that any modified data in the cache
is written back to memory before execution.

Signed-off-by: Huang Qi <huangqi3@xiaomi.com>
2025-05-06 06:55:53 +08:00
YAMAMOTO TakashiandGitHub 382aa9e6c3 run_clang_format_diff: mention homebrew for clang-format installation (#4237) 2025-05-06 06:55:42 +08:00
YAMAMOTO TakashiandGitHub 3232bdf2f7 teach aot emitter/loader about .srodata and .srodata.cst* sections (#4240)
LLVM 19 and later started to use srodata ("small read only data")
sections for RISCV.  cf. https://github.com/llvm/llvm-project/pull/82214
this commit makes our aot emitter/loader deal with those sections.

an alternative would be to disable small data sections completely by
setting the "SmallDataLimit" module attribute to zero. however, i feel
this commit is more straightforward and consisitent as we are already
dealing with sdata sections.
2025-05-06 06:55:35 +08:00
Liu JiaandGitHub 9773390537 set default value of WAMR_BUILD_REF_TYPES to 1 in standalone cases (#4227)
- set default value of WAMR_BUILD_REF_TYPES to 1 in CMakeLists.txt
2025-04-30 14:10:56 +08:00
liang.heandGitHub a9966897b6 use a selected llvm libs list to replace the full list (#4232) 2025-04-29 11:41:34 +08:00
liang.heandGitHub 1d39b9c834 bypass vptr santizier (#4231)
LLVM, by default, disables the use of C++'s built-in Run-Time Type Information.
This decision is primarily driven by concerns about code size and efficiency.

But '-fsanitize=vptr' not allowed with '-fno-rtti'.
2025-04-29 10:05:02 +08:00
liang.heandGitHub 791e60f533 feat(fuzz): add a new fuzzing target about aot compiler (#4121)
support llvm-jit running mode as another fuzzing target
2025-04-28 21:44:04 +08:00
YAMAMOTO TakashiandGitHub 84767f9121 wamrc: add --disable-llvm-jump-tables option (#4224)
while ideally a user should not need to care this kind of
optimization details, in reality i guess it's sometimes useful.
both of clang and GCC expose a similar option.  (-fno-jump-tables)
2025-04-28 16:43:53 +08:00
YAMAMOTO TakashiandGitHub 6593b3f347 LLVMCreateTargetMachineWithOpts: disable large data (#4220)
for x86-64, llvm 17 and later sometimes uses "l" prefix
for data sections.
cf. https://github.com/llvm/llvm-project/commit/43249378da67319906cf04f2c6cd38df141f3bf6

because our aot file emitter/loader doesn't support such
sections, it ends up with load-time errors solving symbols like ".lrodata".

this commit fixes it by avoid placing data in the large data sections.

references:
https://groups.google.com/g/x86-64-abi/c/jnQdJeabxiU
https://github.com/llvm/llvm-project/commit/1feb00a28c9fdab162da08a15fcc9d088a36c352
2025-04-27 11:48:57 +08:00
YAMAMOTO TakashiandGitHub c2d7fa30df LLVM: don't verify instcombine fixpoint (#4219)
LLVM 18 and later, instcombine perfoms only one iteration.
it performs extra "verify fixpoint" operation when instcombine
is specified in certain ways, including how we do so here.
a problem is that the verification raises a fatal error when it
finds we didn't reach a fixpoint:

    LLVM ERROR: Instruction Combining did not reach a fixpoint
    after 1 iterations

while it should be rare, it's quite normal not to reach a fixpoint.
this commit fixes the issue by simply disabing the verification.

cf. https://github.com/llvm/llvm-project/commit/41895843b5915bb78e9d02aa711fa10f7174db43
2025-04-27 11:30:35 +08:00
Liu JiaandGitHub af2a2040db fix print_help when libc wasi is enabled (#4218) 2025-04-25 16:46:37 +08:00
Zhenwei JinandGitHub 6d61e72344 Update unit test cases (#4214)
* Update gc unit test cases
* Update aot stack frame unit test cases
2025-04-25 14:43:24 +08:00
Marcin KolnyandGitHub c883fafead Merge pull request #4203 from jammar1/jammar1/fix-br-v128
Add missing V128 handling in WASM_OP_BR, reported in #4173
2025-04-22 14:47:08 +01:00
TianlongLiangandGitHub ff2768775c fix potential memory leak (#4205) 2025-04-22 12:08:25 +08:00
James Marsh 0702f788fd Add missing V128 handling in WASM_OP_BR, reported in #4173 2025-04-17 10:43:28 +01:00
liang.heandGitHub 8f8c5605e9 Raise wasi-sdk to 25 and wabt to 1.0.37 (#4187)
Raise wasi-sdk to 25 and wabt to 1.0.37. It includes
  - Refactor CI workflow to install WASI-SDK and WABT from a composite action
  - Use ExternalProject to bring wasm-apps for few samples. file/ wasi-threads/
  - Refactor sample build and test steps in SGX compilation workflow for improved clarity and efficiency (workaround)

Add CMake support for EMSCRIPTEN and WAMRC, update module paths
2025-04-17 16:41:47 +08:00
liang.heandGitHub ecb47d9326 Add missing casts and improve error handling in performance map functions (#4202)
Wrong type of arguments to formatting function.
2025-04-17 15:22:23 +08:00