| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
macos-12 is no longer available, this changes it to macos-13 (latest
available x64 macos)
macos-14 is changed to macos-latest (arm64)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Clang 17(?) tightened UBSAN checks, so that you now get this:
```
- test/wasm2c/spec/call_indirect.txt
expected error code 0, got 1.
STDERR MISMATCH:
--- expected
+++ actual
@@ -0,0 +1,3 @@
+out/test/wasm2c/spec/call_indirect/call_indirect.0.c:2144:12: runtime error: call to function w2c_call__indirect__0__wasm_f0 through pointer to incorrect function type 'unsigned int (*)(void *)'
+/home/runner/work/wabt/wabt/out/test/wasm2c/spec/call_indirect/call_indirect.0.c:1925: note: w2c_call__indirect__0__wasm_f0 defined here
+SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior out/test/wasm2c/spec/call_indirect/call_indirect.0.c:2144:12
STDOUT MISMATCH:
--- expected
+++ actual
@@ -1 +0,0 @@
-134/134 tests passed.
```
This happens because emitted functions use a typed module instance,
while function references use a `void*` instance. It is UB in C to call
the former with the latter, so clang is correct here.
We had to pick one of two ways to fix this: either emit `void*` wrapper
functions that do the appropriate downcasting for any module functions
that go into a table (potentially including imported functions), or the
approach that takes significantly less effort of changing everything to
`void*` and downcasting internally. ~~We obviously chose the latter.~~
We eventually started emitting wrapper functions.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
binaries built on 22.04 require glibc 2.34 and thus are incompatible
with 20.04, which is still supported.
|
|
|
|
|
| |
Also adds an RLBox-like CI test where the embedder takes responsibility for signal handling
Co-authored-by: wrv <wrv@utexas.edu>
|
| |
|
| |
|
| |
|
|
|
|
| |
ensure these are up to date
|
| |
|
|
|
| |
Signed-off-by: David Korczynski <david@adalogics.com>
|
|
|
| |
Fixes: #2153
|
|
|
| |
This change incorporates [simd-everywhere](https://github.com/simd-everywhere/simde) into the wasm2c output, which maps wasm SIMD C intrinsics to any supported target architecture.
|
|
|
| |
Will shorten the critical path after wasm2c is running SIMD tests
|
|
|
|
|
|
| |
We had been running the GitHub UBSAN wasm2c tests with -fsanitize=undefined
but without -fno-sanitize-recover, meaning some of the spec tests
were printing UBSAN error messages but still returning 0, so we
weren't seeing the test failures.
|
| |
|
| |
|
|
|
|
|
| |
Also, make sure we test this configuration.
Fixes: #2016
|
|
|
|
|
|
|
|
|
|
|
| |
Allows users to install wabt to a local directory and use find_package
to load the wabt and wasm-rt-impl libraries into their build. These
users, as well as FetchContent users, may link to these libraries using,
for example:
find_package(wabt REQUIRED)
target_link_libraries(myApp PRIVATE wabt::wabt)
Note the wabt:: namespace.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The stated minimum, 3.1, was released on Dec 17, 2014 and did not
support a value of 17 for CMAKE_CXX_STANDARD. The first version to do so
was 3.8. In fact, attempting to build with CMake 3.7 fails with errors
like:
CMake Error in CMakeLists.txt:
Target "wasm-strip" requires the language dialect "CXX17" , but CMake does
not know the compile flags to use to enable it.
So we might as well take this chance to raise the minimum to something
more recent. I propose 3.16 here because of the following features:
* CMP0077 (v3.13) makes the lives of FetchContent users easier by
allowing option() to be overridden.
* CMP0082 (v3.14) corrects the semantics of install() rules, which is
relevant for FetchContent users.
* CMake 3.12 allows the namelink of a shared library on Linux to be
installed separately (i.e. in a dev package)
* CMake 3.14 integrates the standard install destination variables from
GNUInstallDirs with the install() command.
* CMake 3.15 introduced the CMAKE_MSVC_RUNTIME_LIBRARY variable for
controlling the selection of the runtime library from the outside.
* CMake 3.16 gained support for generator expressions in RPATH
properties, which will make it easier to ship shared libraries.
This version is quite conservative and I would even suggest upgrading
further. Windows and macOS users enjoy frequent updates from Homebrew
and Microsoft Visual Studio. Ubuntu Linux 20.04 LTS ships 3.16 and the
newest LTS ships 3.22. Linux users can always install the latest version
through PIP, even on ARM, PowerPC, and s390x, and even without sudo.
Fixes #1568
|
|
|
| |
The trzeci/emscripten images are described as deprecated.
|
|
|
|
|
|
|
|
|
| |
Enable optimization when compiling the wasm2c output on non-Windows platforms (effectively GCC and clang). This required:
- Preventing load instructions from being optimized away if their value is unused (using inline assembly with an input operand and empty code). This is necessary to force an OOB trap on platforms that use mprotect and the signal handler to detect OOB.
- Disabling tail-call optimization in the compiler, to make sure that infinite recursion traps. (This required bumping the version of macOS in GitHub Actions to get a new-enough AppleClang. We should revert this back to 'macos-latest' as soon as that becomes the default.)
- Using NaN-quieting versions of a bunch of FP ops that were previously only used on Windows, and adding floor/ceil and promotion/demotion.
- Using the '-frounding-math' and '-fsignaling-nans' compiler flags to tell GCC and clang not to fold certain FP ops (e.g. subtracting zero, multiplying by 1).
Fixes #1925.
|
|
|
| |
Split out from #1843
|
|
|
|
|
| |
The wrong name here was causing a cmake warning because
it was finding `config.h.in` instead and this behaviour is
deprecated.
|
| |
|
| |
|
|
|
|
|
|
| |
It seems that the action we were using is not longer working:
https://github.com/actions/upload-release-asset
See https://github.com/WebAssembly/binaryen/pull/4148
|
|
|
|
|
|
|
|
|
|
| |
This adds clang-format check to the CI. This only checks the diff so it
doesn't affect the other parts of the codebase. Also generated files in
src/prebuilt/ directories are excluded from the check. A new
src/prebuilt/.clang-format is added to disable the check in the
directory.
scripts/clang-format-diff.sh is copied from the same file we are using in
Binaryen.
|
|
|
|
|
|
| |
closes #1315
result can be seen here
https://github.com/rofl0r/wabt/releases/tag/9.9.99d
|
|
|
|
| |
Fixes: #1249
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
| |
This adds some more nuanced triggering for github actions.
|
| |
|
|
|
|
| |
All tests except `threads` pass.
|
|
|
| |
Fixes #1180 and #1181.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
New `check` target now runs other. This allows for github actions to
show unittests and system tests as separate steps.
Also a couple of CMakeLists.txt cleanups:
- Don't use add_definition to add `-fno-exceptions`, this is a C++-only
flag.
- Lowercase the name of the `sanitizer` function.
- Remove opcode.def from list of library input file. On windows when
building a DLL .def files are assumed to be windows DLL .def files,
which this is not.
This change is split out from #1250
|
| |
|