Commit Graph
2344 Commits
Author SHA1 Message Date
YAMAMOTO TakashiandGitHub 6c846acc59 Implement module instance context APIs (#2436)
Introduce module instance context APIs which can set one or more contexts created
by the embedder for a wasm module instance:
```C
    wasm_runtime_create_context_key
    wasm_runtime_destroy_context_key
    wasm_runtime_set_context
    wasm_runtime_set_context_spread
    wasm_runtime_get_context
```

And make libc-wasi use it and set wasi context as the first context bound to the wasm
module instance.

Also add samples.

Refer to https://github.com/bytecodealliance/wasm-micro-runtime/issues/2460.
2023-09-07 14:54:11 +08:00
Cengizhan PasaogluandGitHub af2f3c8759 Fix typo for IP address buffer (#2532) 2023-09-07 14:29:52 +08:00
YAMAMOTO TakashiandGitHub 151dfae49c Unifdef -U WASMTIME_SSP_STATIC_CURFDS (#2533)
The macro WASMTIME_SSP_STATIC_CURFDS isn't used in the source code,
remove the related macro control code.
2023-09-06 15:25:58 +08:00
Marcin KolnyandGitHub 4798b69f36 Add ARM aeabi symbol for clearing memory content in a specific range (#2531) 2023-09-06 13:17:16 +08:00
Enrico LoparcoandGitHub 709127d631 Add callback to handle memory.grow failures (#2522)
When embedding WAMR, this PR allows to register a callback that is
invoked when memory.grow fails.

In case of memory allocation failures, some languages allow to handle
the error (e.g. by checking the return code of malloc/calloc in C), some
others (e.g. Rust) just panic.
2023-09-05 16:41:52 +08:00
YAMAMOTO TakashiandGitHub 48b71a05fb libc-wasi: Remove unused code (#2528) 2023-09-04 19:14:56 +08:00
YAMAMOTO TakashiandGitHub 9e3904337e Revert "Return error when exception was raised after main thread finishes" (#2524)
This reverts commit 71d43f3ca1.
2023-09-04 18:01:09 +08:00
YAMAMOTO TakashiandGitHub 2e78230e06 set_exception_visitor: Remove the special case for wasi proc exit (#2525)
While wasi proc exit is not a real trap, what the runtime does on it is mostly same as
real traps. That is, kill the siblings threads and represent the exit/trap as the result of
the "process" to the user api. There seems no reason to distinguish it from real traps
here.

Note that:
- The target thread either doesn't care the specific exception type or ignore wasi
  proc exit by themselves. (clear_wasi_proc_exit_exception)
- clear_wasi_proc_exit_exception only clears local exception.
2023-09-04 16:52:19 +08:00
Marcin KolnyandGitHub 8c2dc1d011 Add unit tests for the tid allocator (#2519)
Add simple infrastructure to add more unit tests in the future. At the moment tests
are only executed on Linux, but can be extended to other platforms if needed.

Use https://github.com/google/googletest/ as a framework.
2023-09-04 13:21:10 +08:00
YAMAMOTO TakashiandGitHub 1ff41ebdc2 Implement os_usleep for posix (#2517) 2023-09-01 12:10:54 +08:00
YAMAMOTO TakashiandGitHub 382d52fc05 Stop abusing shared memory lock to protect exception (#2509)
Use a separate global lock instead.

Fixes: https://github.com/bytecodealliance/wasm-micro-runtime/issues/2407
2023-08-31 20:39:08 +08:00
Marcin KolnyandGitHub 53d7027de0 Implement strict validation of thread IDs according to the specification (#2521) 2023-08-31 20:23:54 +08:00
Maks LitskevichandGitHub 411b903cee Add mutex stress test (#2472)
As a part of stress-testing we want to ensure that mutex implementation is working
correctly and protecting shared resource to be allocated from other threads when
mutex is locked.

This test covers the most common situations that happen when some program uses
mutexes like locks from various threads, locks from the same thread etc.
2023-08-30 19:01:44 +08:00
Jämes MénétreyandGitHub ff151fb7ba sgx-ra: Disable the building of samples (#2507) 2023-08-28 09:42:16 +08:00
Wenyong Huang b7a9da1620 Merge branch main into dev/wasi-libc-windows 2023-08-23 17:05:19 +08:00
Wenyong HuangandGitHub fa2f29fd8a Fix issues in releasing wamr-lldb (#2497)
- Update lldb patch due to swig was upgraded to 4.1 in macos
- Export LD_LIBRARY_PATH for searching libpython3.10.so when validating wamr-lldb
  in Ubuntu-20.04
- Rename lldb-wasm.patch to lldb_wasm.path
2023-08-23 12:56:11 +08:00
Wenyong HuangandGitHub 858d1dd69c Fix duplicate vector init in wasm_module_validate (#2498) 2023-08-23 12:35:46 +08:00
Marcin KolnyandGitHub 834e0314aa Enable running WASI tests on Windows (#2489)
Tests are not passing yet therefore we don't enable them in CI.
2023-08-23 10:51:30 +08:00
Xu JunandGitHub 377c3d7a38 Auto increase port number in lldb validation script (#2492) 2023-08-22 14:24:42 +08:00
liang.heandGitHub 2b30bb0fda Upgrade swig to 4.1 (#2491)
Upgrade to sig@4.1 when building wamr-lldb on MacOS since swig@3
had been disabled: https://formulae.brew.sh/formula/swig
2023-08-22 13:57:23 +08:00
Huang QiandGitHub 051dfbbb9e Fix a typo in is_win_platform (#2490) 2023-08-22 11:50:11 +08:00
Marcin KolnyandGitHub 7f996a4559 Update version number and release notes (#2378)
Update the version number to 1.2.3 and update the release notes.
2023-08-22 08:55:36 +08:00
tonibofarullandGitHub 59bedecc5e Fix set wasi args order (#2485)
set_wasi_args should be called before module instantiation.
2023-08-22 08:50:26 +08:00
liang.heandGitHub f0632edc37 Clone the input binary during wasm_module_validate (#2483) 2023-08-21 19:43:28 +08:00
Wenyong HuangandGitHub a2f76cf93c Fix typo in aot_emit_aot_file.c (#2478) 2023-08-18 13:57:23 +08:00
Maks LitskevichandGitHub 0e12cdec48 Add sample pre-commit hook (#2470)
Using pre-commit hooks helps us to decrease CI load and improve developers' experience.
2023-08-18 10:40:05 +08:00
Marcin KolnyandGitHub aefb265b0d Move commn iwasm code related to WASI to a shared file (#2477) 2023-08-18 10:37:41 +08:00
Wenyong HuangandGitHub 2cb701f7f3 Fix windows AOT hw bound check (#2475)
When AOT out of bound linear memory access or stack overflow occurs, the call stack of
AOT functions cannot be unwound currently, so from the exception handler, runtime
cannot jump back into the place that calls the AOT function.
We temporarily skip the current instruction and let AOT code continue to run and return
to caller as soon as possible. And use the zydis library the decode the current instruction
to get its size.

And remove using RtlAddFunctionTable to register the AOT functions since it doesn't work
currently.
2023-08-18 10:16:03 +08:00
Wenyong HuangandGitHub 6716c23dd1 wamrc: Fix windows relocation to aot_func_internal#n (#2474)
AOT relocation to aot_func_internal#n is generated by wamrc --bounds-checks=1.
Resolve the issue by applying the relocation in the compilation stage by wamrc and
don't generate these relocations in the AOT file.

Fixes #2471.
2023-08-18 09:56:00 +08:00
Xu JunandGitHub 7baaed2fb8 Fix opcode overwrite issue in fast interp (#2476) 2023-08-17 19:49:35 +08:00
Marcin KolnyandGitHub 3534980c9e Fix spec tests on windows, enable spec tests for windows in CI (#2473) 2023-08-17 19:23:27 +08:00
Wenyong HuangandGitHub e2f8721ec9 Fix issues reported by Coverity and clear windows warnings (#2467) 2023-08-17 10:54:02 +08:00
Maks LitskevichandGitHub 4ce675aacd Add another wamr test (#2411)
Follows up #2364 where we discussed that we might want to have a test
which has really short thread function and creates many threads.
2023-08-17 10:31:05 +08:00
TianlongLiangandGitHub c820643b2b wamrc: More friendly to print help info (#2451)
Allow wamrc to print help info like below:
```bash
wamrc --target=help
wamrc --target-abi=help
wamrc --target=<target> --cpu=help
wamrc --target=<target> --cpu=help --cpu-features=+help
```
2023-08-16 11:28:45 +08:00
YAMAMOTO TakashiandGitHub 0f18051e66 aot: Disable musttail for mips (#2457)
Fixes https://github.com/bytecodealliance/wasm-micro-runtime/issues/2412
2023-08-15 11:15:45 +08:00
Maks LitskevichandGitHub a9bd6af0ac Build wasi-libc from source in WAMR CI (#2465)
We need to apply some bug fixes that were merged to wasi-libc because wasi-sdk-20
is about half a year old.

It is a temporary solution and the code will be removed when wasi-sdk 21 is released.
2023-08-15 10:36:10 +08:00
tonibofarullandGitHub 571c057549 wamr-python: Enable debugging WASM and grant dir access (#2449)
- Enable debugging a WASM loaded and executed from Python.
- Expose API to enable access to list of host directories. Similar to --dir in iwasm.
- Add another python language binding sample: native-symbol.
2023-08-15 10:32:43 +08:00
Jämes MénétreyandGitHub 365cdfeb71 Upgrade SGX-RA integration for 0.1.2 and Ubuntu 20.04 (#2454) 2023-08-15 10:12:43 +08:00
tonibofarullandGitHub b45d014112 wasi-nn: Improve TPU support (#2447)
1. Allow TPU and GPU support at the same time.
2. Add Dockerfile to run example with [Coral USB](https://coral.ai/products/accelerator/).
2023-08-14 20:03:56 +08:00
Wenyong HuangandGitHub 923e8d6471 Fix windows link error and clear windows warnings (#2463)
- Fix windows wamrc link error: aot_generate_tempfile_name undefined.
- Clear windows compile warnings.
- And rename folder `samples/bh_atomic` and `samples/mem_allocator` to
  `samples/bh-atomic` and `samples/mem-allocator`.
2023-08-14 19:04:49 +08:00
YAMAMOTO TakashiandGitHub e360b7a919 wasm_instantiate: Fix a potential integer overflow issue (#2459)
Fixes: https://github.com/bytecodealliance/wasm-micro-runtime/issues/2450
2023-08-14 17:27:14 +08:00
tonibofarullandGitHub 8d1cf46f02 Implement wasm_externref_objdel and wasm_externref_set_cleanup (#2455)
## Context

Some native libraries may want to explicitly delete an externref object without
waiting for the module instance to be deleted.
In addition, it may want to add a cleanup function.

## Proposed Changes

Implement:
* `wasm_externref_objdel` to explicitly delete an externeref'd object. 
* `wasm_externref_set_cleanup` to set a cleanup function that is called when
  the externref'd object is deleted.
2023-08-14 16:45:30 +08:00
YAMAMOTO TakashiandGitHub 5c6613b2b1 Correct --heap-size option in messages (#2458) 2023-08-14 15:12:59 +08:00
YAMAMOTO TakashiandGitHub 5780effc07 iwasm: Fix native lib cleanup after error occurs (#2443)
- If something failed after calling init_native_lib, call deinit_native_lib to clean up.
- Restructure the relevant code for better maintainability.
2023-08-14 14:05:59 +08:00
tonibofarullandGitHub 0b0af1b3df wasi-nn: Support uint8 quantized networks (#2433)
Support (non-full) uint8 quantized networks.
Inputs and outputs are still required to be `float`. The (de)quantization is done internally by wasi-nn.

Example generated from `quantized_model.py`:
![Screenshot from 2023-08-07 17-57-05](https://github.com/bytecodealliance/wasm-micro-runtime/assets/80318361/91f12ff6-870c-427a-b1dc-e307f7d1f5ee)

Visualization with [netron](https://netron.app/).
2023-08-11 07:55:40 +08:00
YAMAMOTO TakashiandGitHub a550f4d9f7 iwasm: call native lib init/deinit if exists (#2439) 2023-08-10 09:26:52 +08:00
Wenyong HuangandGitHub 490fa2ddac Auto-check wrgsbase in cmake script (#2437)
Auto-check whether `WRGSBASE` instruction is supported in linux x86-64 in the
cmake script. And if not, disable writing x86 GS register.
2023-08-09 19:43:08 +08:00
Florian CastellaneandGitHub f34e7431fd Fix typos in wamrc print_help() (#2442) 2023-08-09 14:31:02 +08:00
Wenyong HuangandGitHub 8b5bb0009d wasm_export.h: Fix struct wasm_val_t (#2435)
Struct wasm_val_t should be same in wasm_export.h and wasm_c_api.h.

And fix some invalid calls to aot function in LLVM JIT mode.
2023-08-09 09:43:20 +08:00
Marcin KolnyandGitHub ea763009b7 Enable running spec tests on Windows (#2423)
Update wamr-test-suites scripts to enable running spec tests on Windows.
We don't enable those tests in CI yet as not all of them are passing.
2023-08-09 09:40:59 +08:00