Commit Graph

1446 Commits

Author SHA1 Message Date
TL
f1ffbb5b37 cr suggestions 2025-02-24 21:20:07 +00:00
TL
2e4ebfb20a cr suggestions 2025-02-24 21:20:07 +00:00
TL
dfcadc6202 prevent data overflow on 32 bit platform for memory.grow 2025-02-24 21:20:07 +00:00
d9c01b39d1 fix: when load aot init expr,no type_idx set. (#4094)
Fix an assertion from *gc_object.c line 91*  `bh_assert(rtt_type->type_flag == WASM_TYPE_STRUCT;`
2025-02-21 15:33:36 +08:00
d0e2a7271c fix(aot_emit_aot_file): prevent buffer emission for zero byte_count (#4095)
if using a debug building of wamrc to run spec test. there will be:
core/iwasm/compilation/aot_emit_aot_file.c:1794:13: runtime error: null pointer passed as argument 2, which is declared to never be null
2025-02-21 07:46:20 +08:00
964037c9b5 feat: add support for EXTERNREF value type and enable AOT validator in fuzz tests (#4083) 2025-02-17 13:34:18 +08:00
159f5890a6 [gc] Subtyping fix (#4075) 2025-02-17 11:55:58 +08:00
71bc3c2d15 Add a conditional check for the macro __STDC_VERSION__ (#4080) 2025-02-14 16:13:15 +08:00
7b724e2382 fix(aot): ensure value_cmp does not exceed br_count in branch table compilation (#4065) 2025-02-06 20:05:33 +08:00
e6a47d5cee In wasm32, fix potential conversion overflow when enlarging 65536 pages (#4064)
fix enlarge 65536 pages conversion overflow in wasm32
2025-02-06 14:48:53 +08:00
376385c608 Update memory allocation functions to use allocator user data (#4043) 2025-02-06 13:15:00 +08:00
10f12c030f Add version.h and update versioning documentation for embedded platforms 2025-02-05 10:31:20 +00:00
4f7c5af046 Remove deprecated version.h file and update versioning documentation 2025-02-05 10:31:20 +00:00
e64685f43c Add versioning support and update CMake configuration 2025-02-05 10:31:20 +00:00
67cd5043d3 initial 2025-02-05 09:48:21 +00:00
c6712b4033 add a validator for aot module (#3995)
- Add AOT module validation to ensure memory constraints are met
- Enable AOT validator in build configuration and update related source files
2025-02-05 15:21:49 +08:00
b2c7cb2375 Use wasm32-wasip1 instead of wasm32-wasi target for rust code (#4057)
Rust compiler previously deprecated, and now removed the wasm32-wasi target and replaced it with wasm32-wasip1. This
change updates all the occurrences of wasm32-wasi in the context of Rust compilation.

covers the wasi-nn/test.
2025-02-05 11:31:49 +08:00
b6dea221a6 Fix wasm loader check data segment count (#4039)
correctly report error when datacount section has non-zero data segment count while the data section is not present
2025-01-21 13:08:09 +08:00
e3ddbd58f7 Synchronize the GC spec tests to the commit from December 9. 2024. (#4022)
- Synchronize the GC spec tests to the commit from December 9. 2024.
- Revise the error messages to be consistent with the spec test cases.
- bypass gc spec test on the nuttx platform as a workaround
2025-01-20 09:41:47 +08:00
831e4bbfd5 Refine getting const offsets in wasm loader of fast-interp (#4012)
- Refine const offsets in loader for fast-interp
- handle const cell num overflow
- Use const array, remove list
2025-01-20 09:39:32 +08:00
ba75b8fd56 fixes for compiling on windows (#4026) 2025-01-17 11:06:14 +08:00
9c3807e124 Refine read leb int wasm loader of fast interpreter (#4017) 2025-01-14 17:43:29 +08:00
53da420c41 Enable shrunk memory by default and add related configurations (#4008)
- Enable shrunk memory by default and add related configurations
- Improve error messages for memory access alignment checks
- Add documentation for WAMR shrunk memory build option
- Update NuttX workflow to disable shrunk memory build option
2025-01-13 07:09:04 +08:00
02683d2eed Improve stack consistency by ensuring sufficient space for dummy offsets (#4011)
One more corner case: if the `frame_offset` increases and becomes equal to
the `frame_offset_boundary` after the last assignment within the for loop.
2025-01-09 13:11:25 +08:00
a653746b7b Check whether related table has funcref elem in opcode call_indirect (#3999)
* check whether table has funcref elem in call_indirect
* check whether table has funcref elem in call_indirect when gc is enabled
2025-01-06 13:55:43 +08:00
9989b1cc1b [fuzzing] Use software bound-check during fuzzing (#4003)
* Update CMakeLists.txt of fuzzing

- enable software bound-check
- enable wasi
- disable libc builtin and multiple modules

* Fix off-by-one error in result offset calculation for function calls
2025-01-06 11:36:11 +08:00
1958808a24 Fix table index calculations in wasm_loader and wasm_mini_loader (#4004) 2025-01-05 15:27:40 +08:00
099056b076 Ensure __heap_base and __data_end global indices are validated against import count (#3996) 2025-01-03 14:37:09 +08:00
31ff576edf Error message improvement (#4000)
Improve error message in the scenario where the runtime was built
with ref types disabled but the module uses reference types feature.
2025-01-03 10:44:25 +08:00
7f3e0df21c Handle a new scenario where an item is both exported and imported. (#3984) 2024-12-29 15:52:12 +08:00
24ecee83ff Merge pull request #3987 from no1wudi/fix
Break aot_create_comp_data into small functions
2024-12-28 20:25:19 +08:00
38cf274292 Optimize memory initialization handling in AOT loader (#3983)
Save memory if the file buffer is always exist before exit.

Signed-off-by: Huang Qi <huangqi3@xiaomi.com>
2024-12-26 15:15:25 +08:00
9b807660d5 Break aot_create_comp_data into small functions
Signed-off-by: Huang Qi <huangqi3@xiaomi.com>
2024-12-26 09:32:16 +08:00
8ac06490db Set thread information earlier in exec_env creation (#3967)
For boundary checking, WAMR calls `pthread_attr_np`, which is
unfortunately quite slow on Linux when not called on the main thread
(see https://github.com/bytecodealliance/wasm-micro-runtime/issues/3966
for discussion).

This change moves the cost of stack bounds checking earlier in the
wasm_exec_env creation process. The idea is that it's perhaps better to
pay the price when creating the execution environment rather than in the
first function call.

The original code is left in place inside
`call_wasm_with_hw_bound_check` in case the `wasm_exec_env` is created
via `wasm_runtime_spawn_exec_env`.
2024-12-24 07:25:52 +08:00
9598611e35 CMakeLists.txt: Do not require C++ (#3956)
By default, the project() CMake command defaults to C and C++. [1]
Therefore, CMake might perform tests for both C and C++ compilers as
part of the configuration phase.

However, this has the consequence of the configuration phase to fail if
the system does not have a C++ toolchain installed, even if C++ is not
really used by the top-level project under the default settings.

Some configurations might still require a C++ toolchain, so
enable_language is selectively called under such circumstances.

[1]: https://cmake.org/cmake/help/latest/command/project.html
2024-12-20 13:05:50 +08:00
932eb5d9e5 Only access Zephyr thread stats info when it's available (#3962) 2024-12-19 14:26:34 +08:00
296c3cc69d wasm_export.h: Use "default" visibility for gcc and clang (#3957)
Since the top-level CMakelists.txt is appending `-fvisibility=hidden` to
the compile options, no public symbols are exported by default. This
forbids users from linking against the shared library.

Using `gcc/clang` attributes [1], it is possible to override the definition
for `WASM_RUNTIME_API_EXTERN` so that only required symbols are
correctly exported.

[1]: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#Common-Function-Attributes
2024-12-19 08:49:13 +08:00
9563909d6c set alignment 4 when loading multi return value (#3955)
set alignment 4 when loading multi return value for all call opcodes
2024-12-12 20:33:46 +08:00
bebdd4ad17 Fix aot table instantiate (#3946) 2024-12-10 20:26:32 +08:00
591b740571 Consume the placeholders that were put when emitting table info (#3940) 2024-12-10 20:26:14 +08:00
kk
c32a6ceae1 Refactor SConscript and add file checks in iwasm.c (#3945) 2024-12-06 14:54:37 +08:00
aabe83074e Improvements for platform thread APIs on Windows and Zephyr (#3941)
* improvements for os_thread_join on Windows and Zephyr
2024-12-06 14:39:53 +08:00
739efd78e9 Fix incorrect assignment in win_file.c (#3939)
win_error should be compared to ERROR_INVALID_HANDLE but was instead
being assigned the value.
2024-12-01 20:40:43 +08:00
838dd81e68 don't return an uninitialized trap if argv_to_results fails (#3935)
Currently, if argv_to_results fails (e.g. because an unsupported type is
encountered), an non-null trap with an uninitialized message is
returned.
2024-11-28 11:50:44 +08:00
e09613c722 support WASM_FUNCREF return type in argv_to_results (#3936) 2024-11-28 11:50:16 +08:00
8698d22e67 add thread cpu time for zephyr (#3937) 2024-11-28 11:49:55 +08:00
1d111a38d6 Fix loader small bug (#3928) 2024-11-26 10:08:51 +08:00
b0c6d5c23a add testcases for shared heap and fix POP_MEM_OFFSET of memory64 (#3916)
- add testcases for shared_heap
- fix POP_MEM_OFFSET and POP_TBL_ELEM_IDX of memory64

Signed-off-by: wenlingyun1 <wenlingyun1@xiaomi.com>
2024-11-24 11:34:38 +08:00
dbdf3df60b Use plain assignment rather than bh_memcpy_s (#3924) 2024-11-24 11:32:34 +08:00
9d8150efae Fix WASI Path Mapping Processing (#3923)
Filesystem paths can be mapped from the host path to a guest path using
the format `<guest-path>::<host-path>`.

Previously `strtok` was used to find the `::` delimiter. Unfortunately
`strtok` processes each delimiter character individually. This meant
that the code was ~equivalent to `strtok(mapping_copy, ":")` which
breaks with Windows-style paths (E.g. `C:\my_path\`).

To fix this `strstr` is used to search for the exact delimiter.
2024-11-24 11:31:55 +08:00