Commit Graph
100 Commits
Author SHA1 Message Date
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
YAMAMOTO TakashiandGitHub 0ba6532636 debug-engine: fix a few type mismatches (#4189)
- use strict prototypes complained by GCC `-Wstrict-prototypes`
- use `int*` instead of `int32*`

Note: on some targets, int32_t is a long.
for example, GCC shipped with the recent ESP-IDF has such a
configuration.

- https://github.com/apache/nuttx/issues/15755#issuecomment-2635652808
- https://github.com/apache/nuttx/pull/16022
- https://docs.espressif.com/projects/esp-idf/en/stable/esp32/migration-guides/release-5.x/5.0/gcc.html#espressif-toolchain-changes
2025-04-17 00:07:08 +08:00
YAMAMOTO TakashiandGitHub 46ec863da3 fix false native stack overflow detections with HW_BOUND_CHECK (#4196)
In call_wasm_with_hw_bound_check/call_native_with_hw_bound_check,
ensure to set up the stack boundary (wasm_exec_env_set_thread_info)
before checking the overflow.

It seems that the problem was introduced by:
https://github.com/bytecodealliance/wasm-micro-runtime/pull/2940
2025-04-15 11:48:48 +08:00
YAMAMOTO TakashiandGitHub 040e776162 top-level cmake: link llvm libraries to our shared library (#3973)
This fixes link errors seen on my environment.
(macOS 15.2, x86-64, Xcode 16.2)

Tested as:
```
mkdir b
cd b
cmake -D WAMR_BUILD_JIT=1 -D LLVM_DIR=/usr/local/opt/llvm@19/lib/cmake/llvm ..
make
```
2024-12-23 13:38:48 +08:00
YAMAMOTO TakashiandGitHub 9916813a34 top-level cmakefile: fix macOS build (#3968)
At least fast-jit seems to require a bit new C++ standard.
C++17 was chosen to match product-mini/platforms/darwin.
2024-12-19 16:49:25 +08:00
YAMAMOTO TakashiandGitHub 95edef3185 Bump AOT_CURRENT_VERSION for WAMR 2.x (gc, memory64) (#3880)
* Bump AOT_CURRENT_VERSION for WAMR 2.x (gc, memory64)

Maybe it's too late because we have already made a few releases
since then.
But this might still help users who haven't upgraded to WAMR 2.x yet.
Also, for the purpose of the versioning, it's safer to bump
needlessly than missing necessary bumps.

Fixes https://github.com/bytecodealliance/wasm-micro-runtime/issues/3837

* test-tools/aot-analyzer/include/config.h: bump AOT_CURRENT_VERSION
2024-10-29 11:26:06 +08:00
YAMAMOTO TakashiandGitHub 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
YAMAMOTO TakashiandGitHub 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
YAMAMOTO TakashiandGitHub f453d9d5ce Appease GCC strict prototypes warning (#3775) 2024-09-10 09:42:23 +08:00
YAMAMOTO TakashiandGitHub 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
YAMAMOTO TakashiandGitHub 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
YAMAMOTO TakashiandGitHub 6ddaecafb3 wamrc: Add some help text for --size-level (#3689) 2024-08-07 13:43:47 +08:00
YAMAMOTO TakashiandGitHub 3ce242b5db spec-test-script/runtest.py: Use wamrc --xip option for xip (#3683) 2024-08-02 21:26:18 +08:00
YAMAMOTO TakashiandGitHub 08fad88d75 spec_test_on_nuttx.yml: Retire CONFIG_EOL_IS_LF (#3676)
It has been removed in nuttx while ago:
https://github.com/apache/nuttx/pull/8628
2024-08-02 09:54:07 +08:00
YAMAMOTO TakashiandGitHub c3bd6b495b spec_test_on_nuttx.yml: Replace sed with kconfig-tweak (#3672)
Fixes: https://github.com/bytecodealliance/wasm-micro-runtime/issues/3646
2024-07-31 09:45:11 +08:00
YAMAMOTO TakashiandGitHub 3b56e7c607 spec_test_on_nuttx.yml: Record more logs (#3670)
Upload artifacts including nuttx config/image and wasm/aot modules
for post-mortem investigations.
2024-07-27 15:38:24 +08:00
YAMAMOTO TakashiandGitHub 84b5221517 spec_test_on_nuttx.yml: Enable xip (#3671)
Related changes:
https://github.com/bytecodealliance/wasm-micro-runtime/pull/3662
https://github.com/bytecodealliance/wasm-micro-runtime/pull/3666
2024-07-27 15:31:31 +08:00
YAMAMOTO TakashiandGitHub 22df091603 spec_test_on_nuttx.yml: Add xtensa (#3665)
Fixes: https://github.com/bytecodealliance/wasm-micro-runtime/issues/3608.
2024-07-26 14:14:04 +08:00
YAMAMOTO TakashiandGitHub 4dfdbbb5a5 spec-test-script: Use -mtext-section-literals for xtensa xip (#3666) 2024-07-26 09:40:22 +08:00
YAMAMOTO TakashiandGitHub 83b36558a7 spec-test-script: Skip a few tests for xtensa qemu (#3664)
Because these test cases require more memory than what nuttx on esp32s3 qemu can afford.
2024-07-25 11:59:31 +08:00
YAMAMOTO TakashiandGitHub 2f147fae96 aot compiler: Bail out on too long native symbol names (#3663)
The old code was silently truncating long names.
2024-07-25 11:38:29 +08:00
YAMAMOTO TakashiandGitHub a055e0b26f aot compiler: Enlarge AOTNativeSymbol->symbol (#3662)
The old value was not enough for wasm_externref_obj_to_internal_obj,
which is 34 characters long.
2024-07-25 11:21:07 +08:00
YAMAMOTO TakashiandGitHub b21e3fd2fa wamr-compiler: Avoid size-level tweak if target is specified (#3659)
If target is specified, assume a cross-build.

Partly fixes: https://github.com/bytecodealliance/wasm-micro-runtime/issues/3356
2024-07-25 10:39:48 +08:00
YAMAMOTO TakashiandGitHub b300797b71 wamrc: Add --mllvm= option (#3658)
This allows users to specify llvm command line options, similarly to clang's -mllvm option.

My motivations:
* -debug and friends
* -mtext-section-literals for xtensa
2024-07-24 20:25:45 +08:00
YAMAMOTO TakashiandGitHub 79dacfcead spec-test-script/runtest.py: Reduce stack size for aot w/o gc (#3653) 2024-07-23 23:08:26 +08:00
YAMAMOTO TakashiandGitHub d7521eea4c libc-builtin: Fix a printf format (#3652) 2024-07-23 17:59:31 +08:00
YAMAMOTO TakashiandGitHub 5744e11916 spec-test-script: Make case_last_words larger (#3651)
The current size is usually too small to contain useful info for post mortem investigations.
2024-07-23 17:04:16 +08:00
YAMAMOTO TakashiandGitHub 50f28495a1 Remove a few hardcoded spec test knowledge from the core library (#3648)
Tweak the stack sizes in the spec test runner instead.
2024-07-22 13:30:00 +08:00
YAMAMOTO TakashiandGitHub b05fdfd3ba spec-test-script/runtest.py: Use a shorter timeout when expected to fail (#3647)
This is a band-aid fix; ideally we should wait for the expected
failure message directly with a timeout, not the successful prompt
as we currently do.
2024-07-22 13:20:08 +08:00
YAMAMOTO TakashiandGitHub 583fa52226 spec-test-script: Add xtensa case (#3643) 2024-07-18 20:15:12 +08:00
YAMAMOTO TakashiandGitHub 7c9686df5f spec-test-script/runtest.py: Avoid specifying -v=0 unnecessarily (#3642)
The -v=n option is not always available.
Note: WASM_ENABLE_LOG is off by default on NuttX.
2024-07-18 14:49:57 +08:00
YAMAMOTO TakashiandGitHub 2b5b771537 CI: Build llvm for xtensa (#3637) 2024-07-18 13:51:16 +08:00
YAMAMOTO TakashiandGitHub 9f637e6f0a wamr-test-suites/test_wamr.sh: Add an option to specify wamrc binary (#3635) 2024-07-18 13:32:40 +08:00
YAMAMOTO TakashiandGitHub 2879e67aa9 wamr-test-suites: Remove dead code (wasi_test) (#3634) 2024-07-18 12:22:57 +08:00
YAMAMOTO TakashiandGitHub 7c6fc70aea spec-test-script/runtest.py: Don't assume the tmp dir path (#3632)
The current coding assumes the tmp file is created in /tmp.
However,

* It's somewhere under /var/folders/... by default on macOS.

* A user can set TMPDIR.
2024-07-18 10:05:24 +08:00
YAMAMOTO TakashiandGitHub 46695b992c EH: Use the consistent type for EH handlers (#3619)
The "handlers" on the interpreter stack is sometimes treated as
host pointers and sometimes treated as i64 values. It's quite broken
for targets where pointers are not 64-bit.

This commit makes them host pointers consistently. (at least for
32-bit and 64-bit pointers. We don't support other pointer
sizes anyway.)

Fixes https://github.com/bytecodealliance/wasm-micro-runtime/issues/3110
2024-07-12 11:00:55 +08:00
YAMAMOTO TakashiandGitHub 1b1ec715e9 wasm loader: Reject v128 for interpreters (#3611)
discussed in:
https://github.com/bytecodealliance/wasm-micro-runtime/pull/3592
2024-07-10 13:50:52 +08:00
YAMAMOTO TakashiandGitHub 3d4d8e61f0 aot-analyzer: Fix a few printf formats (#3590) 2024-07-02 15:32:38 +08:00
YAMAMOTO TakashiandGitHub 212d830eb7 aot-analyzer: Fix macos build (#3589)
* macOS doesn't have -lrt.

* this program doesn't seem to require librt even on ubuntu.

build tested on macOS and ubuntu.
2024-07-02 15:25:03 +08:00
YAMAMOTO TakashiandGitHub 0d9cea434c wasm-mutator-fuzz: Set compilers earlier (#3585)
CMAKE_C_COMPILER etc should be set before project(),
in which cmake tries to decide which compiler to use.
2024-07-02 11:27:31 +08:00
YAMAMOTO TakashiandGitHub ea582fbc07 wasm-mutator-fuzz: Make compilers overridable (#3578)
eg.
```shell
cmake .. \
-DCMAKE_C_COMPILER=/usr/local/opt/llvm@15/bin/clang \
-DCMAKE_CXX_COMPILER=/usr/local/opt/llvm@15/bin/clang++
```
2024-07-01 08:43:33 +08:00
YAMAMOTO TakashiandGitHub 867dbd8912 aot compiler: Propagate const-ness by ourselves (#3567)
aot_load_const_from_table() hides the const-ness of the
value and prevents optimizations like
https://github.com/bytecodealliance/wasm-micro-runtime/pull/3552.

This commit makes the aot compiler tracks the const-ness
of the value directly in the AOTValue and enables the above
mentioned optimization for XIP.
2024-06-25 10:57:49 +08:00
YAMAMOTO TakashiandGitHub e66b41427f aot_resolve_target_info: Avoid in-place modification of e_type (#3564)
* I believe that LLVM MemoryBuffer interface is supposed to be read-only
  and it's allowed to use eg. read-only mmap of the underlying file.
  It isn't appropriate to modify the view at all.

* in case of WASM_ENABLE_DEBUG_AOT, the whole buffer is written as the text
  section of the aot file. the modified e_type would confuse dwarf consumers.
  note that, even when we are using XIP, the debug info usually contains
  relocations. for example, llvm-dwarfdump doesn't seem to perform relocations
  on .debug_info section for ET_CORE (== 4 == our E_TYPE_XIP) objects.
2024-06-25 10:47:23 +08:00
YAMAMOTO TakashiandGitHub 4c2af25aff aot compiler: Use larger alignment for load/store when possible (#3552)
Consider the following wasm module:
```wast
(module
  (func (export "foo")
    i32.const 0x104
    i32.const 0x12345678
    i32.store
  )
  (memory 1 1)
)
```

While the address (0x104) is perfectly aligned for i32.store,
as our aot compiler uses 1-byte alignment for load/store LLVM
IR instructions, it often produces inefficient machine code,
especially for alignment-sensitive targets.

For example, the above "foo" function is compiled into the
following xtensa machine code.
```
0000002c <aot_func_internal#0>:
  2c:   004136          entry   a1, 32
  2f:   07a182          movi    a8, 0x107
  32:   828a            add.n   a8, a2, a8
  34:   291c            movi.n  a9, 18
  36:   004892          s8i     a9, a8, 0
  39:   06a182          movi    a8, 0x106
  3c:   828a            add.n   a8, a2, a8
  3e:   ffff91          l32r    a9, 3c <aot_func_internal#0+0x10> (ff91828a <aot_func_internal#0+0xff91825e>)
                        3e: R_XTENSA_SLOT0_OP   .literal+0x8
  41:   004892          s8i     a9, a8, 0
  44:   05a182          movi    a8, 0x105
  47:   828a            add.n   a8, a2, a8
  49:   ffff91          l32r    a9, 48 <aot_func_internal#0+0x1c> (ffff9182 <aot_func_internal#0+0xffff9156>)
                        49: R_XTENSA_SLOT0_OP   .literal+0xc
  4c:   41a890          srli    a10, a9, 8
  4f:   0048a2          s8i     a10, a8, 0
  52:   04a182          movi    a8, 0x104
  55:   828a            add.n   a8, a2, a8
  57:   004892          s8i     a9, a8, 0
  5a:   f01d            retw.n
```

Note that the each four bytes are stored separately using
one-byte-store instruction, s8i.

This commit tries to use larger alignments for load/store LLVM IR
instructions when possible.  with this commit, the above example is
compiled into the following machine code, which seems more reasonable.
```
0000002c <aot_func_internal#0>:
  2c:   004136          entry   a1, 32
  2f:   ffff81          l32r    a8, 2c <aot_func_internal#0> (81004136 <aot_func_internal#0+0x8100410a>)
                        2f: R_XTENSA_SLOT0_OP   .literal+0x8
  32:   416282          s32i    a8, a2, 0x104
  35:   f01d            retw.n
```

Note: this doesn't work well for --xip because aot_load_const_from_table()
hides the constness of the value. Maybe we need our own mechanism to
propagate the constness and the value.
2024-06-22 10:32:52 +08:00
YAMAMOTO TakashiandGitHub a16da4f874 dwarf_extractor.cpp: Try to preserve link name (#3542)
mainly for C++.
2024-06-19 16:51:44 +08:00
YAMAMOTO TakashiandGitHub 7f94d183ac dwarf_extractor.cpp: Fix buffer overruns (#3541)
Probably it's better to skip the optimized out parameters.
(that is, parameters w/o locations)
However, I'm not sure how/if it can be done with the lldb api.
For now, just disable parameter processing to avoid crashes.
2024-06-19 16:19:57 +08:00
YAMAMOTO TakashiandGitHub 72f74b7b51 dwarf_extractor.cpp: Enable limited support for C++ (#3540)
While band-aid fixes like this is not plausible IMO,
some people prefer to have some debug info even if it's
partial/limited/broken. This commit partially (re)enables
C++ processing. On the other hand, do not bother to process
variables because it's known incompatible with C++.
2024-06-18 15:42:56 +08:00
YAMAMOTO TakashiandGitHub f096b2fa38 wamrc: Fix truncated DW_AT_producer (#3537) 2024-06-17 18:02:12 +08:00
YAMAMOTO TakashiandGitHub 42ad4728f6 wasm-mutator-fuzz: Fix build errors and warnings for macOS (#3519)
Tested with the homebrew version of LLVM 15.
(xcode doesn't seem to ship the fuzzer runtime.)
2024-06-13 07:48:55 +08:00
YAMAMOTO TakashiandGitHub 1f8a78d61a posix iwasm: Make the timeout logic a bit more robust (#3478)
Use an absolute timeout calculation to avoid being affected much
by CPU scheduling.
2024-05-30 15:55:24 +08:00
YAMAMOTO TakashiandGitHub 6067dbb3ab NuttX: Fix a dbus-related crash on esp32s3 (#3470)
Although I don't know what exactly the esp32s3 rom version of memset is,
it seems that the current code crashes only with a small "len". I guess
it changes the logic depending on the size.
Anyway, it's safer to use dbus here.
2024-05-27 11:07:30 +08:00
YAMAMOTO TakashiandGitHub 403f472ff1 wasi: Tweak the configuration for nuttx and explain why (#3451) 2024-05-21 14:42:30 +08:00
YAMAMOTO TakashiandGitHub 5bc38f77f6 NuttX: Rename a few recently-added nuttx options (#3449)
from:
ARCH_TEXT_HEAP_SEPARATE_DATA_ADDRESS
ARCH_TEXT_HEAP_WORD_ALIGNED_READ

to:
ARCH_HAVE_TEXT_HEAP_SEPARATE_DATA_ADDRESS
ARCH_HAVE_TEXT_HEAP_WORD_ALIGNED_READ
2024-05-21 14:31:14 +08:00
YAMAMOTO TakashiandGitHub ec44f494cc NuttX: Replace esp32s3 bits with the OS-provided APIs (#3439)
Expected merge order:
https://github.com/apache/nuttx/pull/12355
https://github.com/apache/nuttx-apps/pull/2395
https://github.com/bytecodealliance/wasm-micro-runtime/pull/3439
2024-05-18 20:35:16 +08:00
YAMAMOTO TakashiandGitHub 51ecfd6673 libc-wasi: Fix a locking botch (#3437) 2024-05-15 15:41:40 +08:00
YAMAMOTO TakashiandGitHub 267eaa1747 product-mini/platforms/posix/main.c: Adapt to WASM_MEM_DUAL_BUS_MIRROR (#3427) 2024-05-14 12:16:19 +08:00
YAMAMOTO TakashiandGitHub b1529bc803 nuttx/esp32s3: Apply ibus/dbus adjustment to internal ram 1 as well (#3421) 2024-05-14 11:28:24 +08:00
YAMAMOTO TakashiandGitHub 456e2f6919 aot compiler: Fix a type mismatch in compile_op_float_min_max (#3423)
Fixes https://github.com/bytecodealliance/wasm-micro-runtime/issues/3422
2024-05-14 10:06:48 +08:00
YAMAMOTO TakashiandGitHub 8f098a5905 aot: Make precheck functions use short-call for xtensa (#3418)
Note: this breaks AOT ABI for xtensa again because of a revert of an ABI-breaking change.
2024-05-13 16:55:00 +08:00
YAMAMOTO TakashiandGitHub 46f83cf486 core/iwasm/compilation: Remove stale function prototypes (#3408) 2024-05-09 16:55:32 +08:00
YAMAMOTO TakashiandGitHub 3e5361f76d samples/native-stack-overflow: Examine native functions with signature (#3382)
Note: wamrc chooses different methods to call native functions
with and without signatures.
2024-05-03 09:16:35 +08:00
YAMAMOTO TakashiandGitHub 163f29e51b Add some more comments on WASM_STACK_GUARD_SIZE (#3380) 2024-05-01 15:15:17 +08:00
YAMAMOTO TakashiandGitHub 120b9659dd A few native stack detection fixes for macOS/arm64 (#3368) 2024-04-26 19:37:55 +08:00
YAMAMOTO TakashiandGitHub 410ee580ae Add wasm_runtime_detect_native_stack_overflow_size (#3355)
- Add a few API (https://github.com/bytecodealliance/wasm-micro-runtime/issues/3325)
   ```c
   wasm_runtime_detect_native_stack_overflow_size
   wasm_runtime_detect_native_stack_overflow
   ```
- Adapt the runtime to use them
- Adapt samples/native-stack-overflow to use them
- Add a few missing overflow checks in the interpreters
- Build and run the sample on the CI
2024-04-26 16:00:58 +08:00
YAMAMOTO TakashiandGitHub 1b5ff93656 CI: Use macos-13 instead of macos-latest (#3366)
Our workflows assume macos-latest is intel, but now it's arm64.
Use macos-13, which is documented to be intel, instead.

reference:
https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners
2024-04-26 14:38:49 +08:00
YAMAMOTO TakashiandGitHub a36c7d5aa9 Random improvements to samples/native-stack-overflow (#3353) 2024-04-25 11:22:08 +08:00
YAMAMOTO TakashiandGitHub 9d6d3466ff Fix a few native stack address calculations (#3351) 2024-04-24 16:39:38 +08:00
YAMAMOTO TakashiandGitHub 09a5be411f Reduce WASM_STACK_GUARD_SIZE a bit for posix-like platforms (#3350)
I found a few mistakes in my research on the stack consumption.
Update the comment and tweak WASM_STACK_GUARD_SIZE accordingly.
2024-04-24 16:18:58 +08:00
YAMAMOTO TakashiandGitHub 98ad36e35a core/config.h: Bump the default WASM_STACK_GUARD_SIZE (#3344)
The old value (1KB) doesn't seem sufficient for many cases.

I suspect that the new value is still not sufficient for some cases.
But it's far safer than the old value.
Consider if the classic interpreter loop (2600 bytes) calls
host snprintf. (2000 bytes)

Fixes: https://github.com/bytecodealliance/wasm-micro-runtime/issues/3314
2024-04-23 16:51:47 +08:00
YAMAMOTO TakashiandGitHub 7bdea3c2ae Add some more comments on WASM_STACK_GUARD_SIZE (#3341) 2024-04-22 15:00:09 +08:00
YAMAMOTO TakashiandGitHub d6e8d224ce Add native-stack-overflow sample (#3321)
This is a test code to examine native stack overflow detection logic.

The current output on my environment (macOS amd64):

```shell
====== Interpreter
 stack size   | fail?  | leak?  | exception
---------------------------------------------------------------------------
    0 - 14704 | failed | leaked | Exception: native stack overflow
14704 - 17904 | failed |     ok | Exception: native stack overflow
17904 - 24576 |     ok |     ok |

====== AOT
 stack size   | fail?  | leak?  | exception
---------------------------------------------------------------------------
    0 - 18176 | failed | leaked | Exception: native stack overflow
18176 - 24576 |     ok |     ok |

====== AOT WAMR_DISABLE_HW_BOUND_CHECK=1
 stack size   | fail?  | leak?  | exception
---------------------------------------------------------------------------
    0 -  1968 | failed |     ok | Exception: native stack overflow
 1968 - 24576 |     ok |     ok |
```

This is a preparation to work on relevant issues, including:

https://github.com/bytecodealliance/wasm-micro-runtime/issues/3325
https://github.com/bytecodealliance/wasm-micro-runtime/issues/3320
https://github.com/bytecodealliance/wasm-micro-runtime/issues/3314
https://github.com/bytecodealliance/wasm-micro-runtime/issues/3297
2024-04-19 15:49:09 +08:00
YAMAMOTO TakashiandGitHub f6481cedec Add a comment on WASM_STACK_GUARD_SIZE (#3332) 2024-04-19 10:19:59 +08:00
YAMAMOTO TakashiandGitHub 53f0941ffa Revert "lldb_function_to_function_dbi: A hack to avoid crashing on C++ methods (#3190)" (#3281)
This reverts commit 0e8d949440.

Because it doesn't make much sense anymore after we disabled debug info
processing on C++ functions in:
"aot debug: process lldb_function_to_function_dbi only for C".
2024-04-06 15:00:48 +08:00
YAMAMOTO TakashiandGitHub b4cab84e5f aot debug: Process lldb_function_to_function_dbi only for C (#3278)
This is a workaroud for:
https://github.com/bytecodealliance/wasm-micro-runtime/issues/3187
https://github.com/bytecodealliance/wasm-micro-runtime/issues/3163
2024-04-03 18:03:31 +08:00
YAMAMOTO TakashiandGitHub dae09c0e03 aot debug: Fix a NULL dereference (#3274)
It happens on eg. a C function taking a structure argument.
2024-04-03 17:10:46 +08:00
YAMAMOTO TakashiandGitHub 4806e4e298 LLVM 19: Switch to debug records (#3272)
References:
    https://llvm.org/docs/RemoveDIsDebugInfo.html
    https://github.com/llvm/llvm-project/pull/86529
2024-04-02 16:00:43 +08:00
YAMAMOTO TakashiandGitHub 6b0b5de1c5 aot debug: Fix a few NULL dereferences on errors (#3273) 2024-04-02 14:30:08 +08:00
YAMAMOTO TakashiandGitHub 0e8d949440 lldb_function_to_function_dbi: A hack to avoid crashing on C++ methods (#3190)
Also, print the function name on argument mismatch.
2024-03-04 17:08:11 +08:00
YAMAMOTO TakashiandGitHub 503c9694c8 lldb_function_to_function_dbi: Fix a null dereference (#3189)
C++ allows unnamed arguments.
In the debug info, they are represented as DW_TAG_formal_parameter
w/o DW_AT_name.
variable.GetName() here returns NULL for them.

cf. https://github.com/bytecodealliance/wasm-micro-runtime/issues/3187
2024-02-29 14:03:49 +08:00
YAMAMOTO TakashiandGitHub b0c54c8a86 Fix a ubsan complaint "applying zero offset to null pointer" (#3160)
Set a type's `result_ref_type_maps` only when `ref_type_map_count > 0`.
2024-02-17 10:11:10 +08:00
YAMAMOTO TakashiandGitHub 5931aaacbe aot compiler: Place precheck wrapper before the corresponding wrapped function (#3141)
This increases the chance to use "short" calls.

Assumptions:
- LLVM preserves the order of functions in a module
- The wrapper function are smaller than the wrapped functions
- The target CPU has "short" PC-relative variation of call/jmp instructions
  and they are preferrable over the "long" ones.

A motivation:
- To avoid some relocations for XIP, I want to use xtensa PC-relative
  call instructions, which can only reach ~512KB.
2024-02-06 15:05:32 +08:00
YAMAMOTO TakashiandGitHub 6e547baf46 aot_compile_op_call: Stop setting calling convention explicitly (#3140)
The current logic doesn't work for some cases.
cf. https://github.com/bytecodealliance/wasm-micro-runtime/issues/3138

It's unclear why we are setting the calling convention explicitly here
at all. In many cases, the default just seems working.
2024-02-06 13:14:25 +08:00
YAMAMOTO TakashiandGitHub 529fa9dd17 EH: Fix broken stack usage calculation (#3121)
Fixes: https://github.com/bytecodealliance/wasm-micro-runtime/issues/3108
2024-02-03 12:21:15 +08:00
YAMAMOTO TakashiandGitHub edc3643909 EH: Fix validation of delegate opcode (#3107)
cf. https://github.com/bytecodealliance/wasm-micro-runtime/issues/1884#issuecomment-1914000294
2024-02-01 12:32:06 +08:00
YAMAMOTO TakashiandGitHub 3111a86cb3 EH: Fix delegate parsing in wasm_loader_find_block_addr (#3106) 2024-02-01 07:46:49 +08:00
YAMAMOTO TakashiandGitHub 10e87d2966 EH: Don't call word_copy with zero size (#3105) 2024-01-31 21:54:19 +08:00
YAMAMOTO TakashiandGitHub 43c4a5c434 exception handling: Fix build error (#3104) 2024-01-31 20:24:34 +08:00
YAMAMOTO TakashiandGitHub 7e65f9a244 aot: Fix LLVMSetTailCallKind check (#3099) 2024-01-30 20:50:33 +08:00
YAMAMOTO TakashiandGitHub 9afbeab1c8 wasi: Apply wasm_runtime_begin_blocking_op to poll as well (#3080)
While we used a different approach for poll_oneoff [1],
the implementation works only when the poll list includes
an absolute clock event. That is, if we have a thread which is
polling on descriptors without a timeout, we fail to terminate
the thread.

This commit fixes it by applying wasm_runtime_begin_blocking_op
to poll as well.

[1] https://github.com/bytecodealliance/wasm-micro-runtime/pull/1951
2024-01-25 16:29:34 +08:00
YAMAMOTO TakashiandGitHub f56154ed80 thread-mgr: Fix locking problems around aux stack allocation (#3073)
Fixes: https://github.com/bytecodealliance/wasm-micro-runtime/issues/3069
2024-01-24 09:46:53 +08:00
YAMAMOTO TakashiandGitHub ab97d543e0 wasm_cluster_destroy_spawned_exec_env: Avoid "invalid exec env" trap (#3068)
Possible alternatives:

* Make wasm_cluster_destroy_spawned_exec_env take two exec_env.
  One for wasm execution and another to specify the target to destroy.

* Make execute functions to switch exec_env as briefly discussed in
  https://github.com/bytecodealliance/wasm-micro-runtime/pull/2047
2024-01-23 15:20:01 +08:00
YAMAMOTO TakashiandGitHub b44aa654b8 aot_reloc_x86_64.c: Suggest to try --size-level=0 as well (#3067)
cf. https://github.com/bytecodealliance/wasm-micro-runtime/issues/3035
2024-01-23 13:00:19 +08:00
YAMAMOTO TakashiandGitHub 4bafa40052 nuttx: If STACK_GUARD_SIZE is not set, leave it to config.h (#2927)
cf. https://github.com/apache/nuttx-apps/pull/2241
2024-01-23 11:52:25 +08:00
YAMAMOTO TakashiandGitHub bc35602004 Fix aot large model (--size-level=0) with LLVM 18 (#3057)
The recent versions LLVM uses ".ltext" section for X86 large model.

cf. https://github.com/llvm/llvm-project/commit/d8a04398f9492f043ffd8fbaf2458778f7d0fcd5

This fixes https://github.com/bytecodealliance/wasm-micro-runtime/issues/3034
2024-01-19 19:43:41 +08:00
YAMAMOTO TakashiandGitHub 17b0111577 wasm_runtime_begin_blocking_op: A comment about usage expectation (#3056) 2024-01-19 18:31:21 +08:00
YAMAMOTO TakashiandGitHub 8b37048823 Do not inherit WASM_SUSPEND_FLAG_BLOCKING from the parent thread (#3051)
It seems that some users want to wrap rather large chunk of code
with wasm_runtime_begin_blocking_op/wasm_runtime_end_blocking_op.

If the wrapped code happens to have a call to
e.g. wasm_runtime_spawn_exec_env, WASM_SUSPEND_FLAG_BLOCKING is
inherited to the child exec_env and it may cause unexpected behaviors.
2024-01-19 09:55:01 +08:00
YAMAMOTO TakashiandGitHub fde98331ff examples/terminate: Use wasm_runtime_spawn_exec_env as well (#3049) 2024-01-18 20:44:09 +08:00
YAMAMOTO TakashiandGitHub b97370e3a8 samples/terminate: Add a sample to demonstrate wasm_runtime_terminate (#3043)
This is basically a modified copy of the "shared-module" example.
2024-01-18 15:01:03 +08:00
YAMAMOTO TakashiandGitHub d13a54f860 Revert "Enable MAP_32BIT for macOS (#2992)" (#3032)
Revert "Do not use pagezero size option if osx version >= 13 (#3025)"
and  "Enable MAP_32BIT for macOS (#2992)".

Discussion: https://github.com/bytecodealliance/wasm-micro-runtime/issues/3009
2024-01-18 09:22:09 +08:00
YAMAMOTO TakashiandGitHub 685d55d2e7 nuttx: Use larger alignment for os_mmap and comment why (#3017)
Other platforms with malloc-based os_mmap might need similar changes
too, depending on their target cpu arch.
2024-01-16 09:17:58 +08:00