Commit Graph

2028 Commits

Author SHA1 Message Date
2baac8d9e0 build(deps): bump actions/upload-artifact from 3.1.0 to 4.4.0
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3.1.0 to 4.4.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v3.1.0...v4.4.0)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-30 10:45:34 +00:00
0e05b0a451 Add CODEOWNERS (#3822) 2024-09-29 12:54:00 +08:00
438b81bd04 Fix missing symbols when using aot mode on riscv platforms (#3812)
Add symbol __atomic_compare_exchange_4 and __atomic_store_4.
2024-09-28 21:55:09 +08:00
5ce6f90bd6 Add scoreboard CI for supply-chain security (#3819) 2024-09-27 15:52:00 +08:00
86926aa9d2 Fix unused param warning when GC is enabled (#3814) 2024-09-25 16:59:52 +08:00
e87f7a920d Fix Windows compile error when uvwasi is enabled (#3810)
No need to compile win_file.c when uvwasi is enabled.
2024-09-25 16:43:00 +08:00
21330990a8 Add no_resolve to LoadArgs and wasm_runtime_resolve_symbols (#3790)
Add no_resolve to LoadArgs and wasm_runtime_resolve_symbols so one can
delay resolving of symbols.

This is useful for inspecting the module between loading and instantiating.
2024-09-20 08:54:09 +08:00
51a71092bf Support dynamic aot debug (#3788)
Enable dynamic aot debug feature which debugs the aot file
and is able to set the break point and do single step. Refer to
the README for the detailed steps.

Signed-off-by: zhangliangyu3 <zhangliangyu3@xiaomi.com>
2024-09-18 11:02:10 +08:00
e9cc8731da Restore cmake hidden compile symbol visibility (#3796)
This was originally fixed in #3655, but regressed in #3762 which removed
the `-fvisibility=hidden` flag from the CMakeLists.txt file.

This also removes extraneous ending whitespace from the file.
2024-09-18 10:24:30 +08:00
79e695e1a3 Fix a compile warning in aot_emit_function.c (#3793)
This just fixes an unused variable warning when WASM_ENABLE_AOT_STACK_FRAME is != 0.
2024-09-18 09:37:57 +08:00
d64a3ab6ec Fix aot multi export memory support (#3791) 2024-09-14 10:53:01 +08:00
926f662231 Add memory instance support apis (#3786)
Now that WAMR supports multiple memory instances, this PR adds some APIs
to access them in a standard way.

This involves moving some existing utility functions out from the
`WASM_ENABLE_MULTI_MODULE` blocks they were nested in, but multi-memory
and multi-module seem independent as far as I can tell so I assume that's okay.

APIs added:
```C
wasm_runtime_lookup_memory
wasm_runtime_get_default_memory
wasm_runtime_get_memory
wasm_memory_get_cur_page_count
wasm_memory_get_max_page_count
wasm_memory_get_bytes_per_page
wasm_memory_get_shared
wasm_memory_get_base_address
wasm_memory_enlarge
```
2024-09-14 10:31:13 +08:00
9aadbfee29 Ignore temporary file from aider (#3787)
Aider is AI pair programming in your terminal: https://aider.chat
2024-09-13 09:43:44 +08:00
9c2083a27f Implement option for skipping function index in the callstack (#3785)
Also add a script that converts instruction pointers to function indexes (or function names).

https://github.com/bytecodealliance/wasm-micro-runtime/issues/3758
2024-09-11 16:08:37 +08:00
b882017674 Fix compiler warnings (#3784)
The definition of os_get_invalid_handle in platform_internal.h did not
match the declaration in platform_api_extension.h.
2024-09-11 08:59:16 +08:00
1a61cb75e1 Appease GCC -Wformat (#3783)
I'm not sure we want to use C99 %tu here.
While C99 %zu is more widely used in WAMR, %tu is rare (if any)
and I'm not sure if it's ubiquitously implemented in platforms
we support.
2024-09-10 14:53:11 +08:00
cd47438af9 spec_test_on_nuttx.yml: Disable riscv32_ilp32f for now (#3777)
It seems failing too frequently.

cf. https://github.com/bytecodealliance/wasm-micro-runtime/issues/3776
2024-09-10 10:58:22 +08:00
c276aca202 Fix compile error when multi-module and tags are enabled (#3781) 2024-09-10 09:55:15 +08:00
f453d9d5ce Appease GCC strict prototypes warning (#3775) 2024-09-10 09:42:23 +08:00
cbc2078898 AOT call stack optimizations (#3773)
- Implement TINY / STANDARD frame modes - tiny mode is only able to keep track on the IP
  and func idx, STANDARD mode provides more capabilities (parameters, stack pointer etc.).
- Implement FRAME_PER_FUNCTION / FRAME_PER_CALL modes - frame per function adds
  code at the beginning and at the end of each function for allocating / deallocating stack frame,
  whereas in per-call mode the frame is allocated before each call. The exception is call to
  the imported function, where frame-per-function mode also allocates the stack before the
  `call` instruction (as it can't instrument the imported function).

At the moment TINY + FRAME_PER_FUNCTION is automatically enabled in case GC and perf
profiling are disabled and `values` call stack feature is not requested. In all the other cases
STANDARD + FRAME_PER_CALL is used.

STANDARD + FRAME_PER_FUNCTION and TINY + FRAME_PER_CALL are currently not
implemented but possible, and might be enabled in the future.

ps. https://github.com/bytecodealliance/wasm-micro-runtime/issues/3758
2024-09-10 09:05:23 +08:00
0599351262 wasi-nn: Add a new target for llama.cpp as a wasi-nn backend (#3709)
Minimum support:
- [x] accept (WasmEdge) customized model parameters. metadata.
- [x] Target [wasmedge-ggml examples](https://github.com/second-state/WasmEdge-WASINN-examples/tree/master/wasmedge-ggml)
  - [x] basic
  - [x] chatml
  - [x] gemma
  - [x] llama
  - [x] qwen

---

In the future, to support if required:
- [ ] Target [wasmedge-ggml examples](https://github.com/second-state/WasmEdge-WASINN-examples/tree/master/wasmedge-ggml)
  - [ ] command-r. (>70G memory requirement)
  - [ ] embedding. (embedding mode)
  - [ ] grammar. (use the grammar option to constrain the model to generate the JSON output)
  - [ ] llama-stream. (new APIS `compute_single`, `get_output_single`, `fini_single`)
  - [ ] llava. (image representation)
  - [ ] llava-base64-stream. (image representation)
  - [ ] multimodel. (image representation)
- [ ] Target [llamaedge](https://github.com/LlamaEdge/LlamaEdge)
2024-09-10 08:45:18 +08:00
cb71ca5822 CI: Disable parallel test in spectest for NuttX (#3780) 2024-09-09 21:58:07 +08:00
b38a2e88a2 Fix building iwasm_shared and iwasm_static libs on win32 (#3762)
Fixes to enable building iwasm_shared and iwasm_static libraries on win32.
2024-09-06 11:01:54 +08:00
6f97822c18 Add wamrc parameter to configure stack frame features (#3763)
Those parameters can be used to reduce the size of the AOT code.

There's going to be more changes related to AOT code size reduction,
this is just the initial step.

p.s. https://github.com/bytecodealliance/wasm-micro-runtime/issues/3758
2024-09-05 21:44:06 +08:00
b4380fb3b1 refactoring: Re-use commit IP functionality between exception handling and other cases (#3768) 2024-09-05 16:18:47 +08:00
65521b188d Remove unnecessary code duplication in aot runtime (#3767) 2024-09-05 11:10:18 +08:00
fed0fe953c compilation_on_nuttx.yml: Update checkout action to suppress warnings (#3765) 2024-09-04 12:08:25 +08:00
5cc94e59ec Improve posix mmap retry logic (#3714)
- Only retry on EAGAIN, ENOMEM or EINTR.
- On EINTR, don't count it against the retry budget, just keep retrying.
  EINTR can happen in bursts.
- Log the errno on failure, and don't conditionalize that logging on
  BH_ENABLE_TRACE_MMAP. In other parts of the code, error logging is not
  conditional on that define, while turning on that tracing define makes
  things overly verbose.
2024-09-03 11:03:24 +08:00
0b62cc8921 Update ref to the multi-memory tests (#3764)
The specific commit has been deleted, I am pointing to the same commit in the main branch though.
2024-09-03 10:39:03 +08:00
eab409a4df aot loader: Call os_mmap with MMAP_MAP_32BIT only when target is x86-64 or riscv64 (#3755)
Mac on aarch64 uses posix_memmap.c os_mmap which doesn't do anything with
the flag MMAP_MAP_32BIT for that build so this condition ends up asserting unless
the mapping ends up in the first 4 gigs worth of addressable space.

Thsi PR changes to call os_mmap with MMAP_MAP_32BIT flag only when the target
is x86-64 or riscv64, and the macro __APPLE__ isn't enabled. The behavior is similar
to what the posix os_mmap does.
2024-08-29 15:25:17 +08:00
d1141f6f30 aot compiler: Allow to control stack boundary check when boundary check is enabled (#3754)
In the AOT compiler, allow the user to control stack boundary check when the boundary
check is enabled (e.g. `wamrc --bounds-checks=1`). Now the code logic is:

1. When `--stack-bounds-checks` is not set, it will be the same value as `--bounds-checks`.
2. When `--stack-bounds-checks` is set, it will be the option value no matter what the
    status of `--bounds-checks` is.
2024-08-29 11:08:39 +08:00
20949bdc82 Merge pull request #3757 from bytecodealliance/dev/merge_aot_data_text
Merge branch dev/merge_aot_data_text into main to keep the commit history.
2024-08-29 09:03:50 +08:00
a8d539d84d Merge branch 'main' into dev/merge_aot_data_text 2024-08-29 08:49:33 +08:00
cb3a69f778 CI: Freeze version of bloaty for NuttX compilation (#3756)
Fix the compilation error of this CI:
https://github.com/bytecodealliance/wasm-micro-runtime/actions/runs/10575515238

```
/__w/wasm-micro-runtime/wasm-micro-runtime/bloaty/third_party/abseil-cpp/absl/debugging/failure_signal_handler.cc:139:32: error: no matching function for call to 'max(long int, int)'
  139 |   size_t stack_size = (std::max(SIGSTKSZ, 65536) + page_mask) & ~page_mask;
      |                        ~~~~~~~~^~~~~~~~~~~~~~~~~
```
2024-08-28 16:05:07 +08:00
e8c2952bf9 Fix arm64 issues on mac (#3688)
Make wamrc normalize "arm64" to "aarch64v8". Previously the only way to
make the "arm64" target was to not specify a target on 64 bit arm-based
mac builds. Now arm64 and aarch64v8 are treated as the same.

Make aot_loader accept "aarch64v8" on arm-based apple (as well as
accepting legacy "arm64" based aot targets).

This also removes __APPLE__ and __MACH__ from the block that defaults
size_level to 1 since it doesn't seem to be supported for aarch64:
`LLVM ERROR: Only small, tiny and large code models are allowed on AArch64`
2024-08-23 09:49:06 +08:00
b00904b092 Add a comment on AOT_SECTION_TYPE_SIGNATURE (#3746)
cf. https://github.com/bytecodealliance/wasm-micro-runtime/issues/3744
2024-08-22 12:35:25 +08:00
67dce48201 Enable merged os_mmap for aot data sections and aot text (#3743)
Enable merged os_mmap for aot data sections first, and try enabling merged
os_mmap for them and aot text except on platform nuttx and esp-idf.

This fixes the issue that aarch64 AOT module fails to load on android:
https://github.com/bytecodealliance/wasm-micro-runtime/issues/2274

And also refine os_mmap related code.
2024-08-21 12:55:34 +08:00
1329e1d3e1 Add support for multi-memory proposal in classic interpreter (#3742)
Implement multi-memory for classic-interpreter. Support core spec (and bulk memory) opcodes now,
and will support atomic opcodes, and add multi-memory export APIs in the future. 

PS: Multi-memory spec test patched a lot for linking test to adapt for multi-module implementation.
2024-08-21 12:22:23 +08:00
9423fee046 Merge pull request #3739 from bytecodealliance/main
Merge branch main into dev/merge_aot_data_text
2024-08-21 09:51:22 +08:00
f4383a9e62 Use node 18.x to build vscode extension (#3735)
Fix the issue of releasing wamr-ide vscode extension:
https://github.com/bytecodealliance/wasm-micro-runtime/actions/runs/10467675321/job/28987014745
2024-08-20 17:03:28 +08:00
d67cc26d56 Fix load error not reported when magic header is invalid (#3734)
When AOT isn't enabled and the input is a wasm file, wasm_runtime_load doesn't
report error. Same when interpreter isn't enabled and the input is AOT file.

This PR makes wasm_runtime_load report error "magic header not detected" for
such situations.
2024-08-20 16:03:04 +08:00
c04ef6b44f Update version to 2.1.2 and update release notes (#3718) 2024-08-20 12:00:39 +08:00
6fdad9916f riscv: Add missing relocation intrinsics for __fixdfsi/__ltdf2 (#3733) 2024-08-20 11:06:07 +08:00
581e1d9767 compilation: Use the dedicated stack-sizes section only for AOT (#3732)
For JIT, we naturally use mach-o on macOS, where the section name
we currently use is not valid and ends up with the errors like:

```
LLVM ERROR: Global variable '__orc_lcl.aot_stack_sizes.0' has an invalid section specifier '.aot_stack_sizes': mach-o section specifier requires a segment and section separated by a comma.
```

Because the dedicated section is not necessary for JIT,
this commit simply stops using it.

Fixes: https://github.com/bytecodealliance/wasm-micro-runtime/issues/3730
2024-08-20 10:26:26 +08:00
97c95a2e2f Fix table idx resolving in op call_indirect/return_call_indirect (#3726)
The table index in the call_indirect/return_call_indirect opcode should be
one byte 0x00 when ref-types/GC isn't enabled, and should be treated as
leb u32 when ref-types/GC is enabled.

And make aot compiler bail out if ref-types/GC is disabled by command line
argument while ref-types instructions are used.
2024-08-19 10:57:36 +08:00
88caa0c53a CI: Unify configuration stage for NuttX (#3725) 2024-08-19 10:35:18 +08:00
67c33a29e3 CI: Enable XIP spectest for RISCV32 ILP32F (#3727) 2024-08-19 09:52:38 +08:00
4c127715df aot compiler: Fix NaN handling for opcode f32/f64.const in XIP mode (#3721)
If the value of a float constant is an NaN, the aot compiler creates an alloca,
stores the converted i32 const into it and then loads f32 from it again, which
may introduce a relocation in the AOT file and is not allowed for XIP mode.
2024-08-16 14:04:41 +08:00
59f761b58d aot compiler: Track non-0x00 tableindex as ref types use (#3695)
Any use of a table index that isn't exactly a null byte (`0x00`) means that
the module makes use of the reference types proposal. This is important
to track because `aot_compiler.c` will blindly assume that all table indices
are a single byte long otherwise.

This fixes a crash in WAMR for modules that contain multi-byte encodings
of table indices in `call_indirect` but make no other use of reference types
features.
2024-08-16 12:37:10 +08:00
a44c487632 runtest.py: Normallize option handling for XIP mode (#3722) 2024-08-16 11:33:51 +08:00