wasm2c: Cleanup/separate code for heap and stack signal handlers #3389
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | ||
on: | ||
create: | ||
tags: | ||
push: | ||
branches: | ||
- main | ||
pull_request: | ||
jobs: | ||
lint: | ||
name: lint | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/setup-python@v1 | ||
with: | ||
python-version: '3.x' | ||
- uses: actions/checkout@v1 | ||
- name: install tools | ||
run: | | ||
pip3 install flake8==3.7.8 | ||
sudo apt-get install clang-format | ||
- run: flake8 | ||
- run: ./scripts/clang-format-diff.sh | ||
env: | ||
GITHUB_EVENT_BEFORE: ${{ github.event.before }} | ||
build: | ||
name: build | ||
runs-on: ${{ matrix.os }} | ||
strategy: | ||
matrix: | ||
os: [ubuntu-latest, macos-12, windows-latest] | ||
steps: | ||
- uses: actions/setup-python@v1 | ||
with: | ||
python-version: '3.x' | ||
- uses: actions/checkout@v1 | ||
with: | ||
submodules: true | ||
- name: install ninja (linux) | ||
run: sudo apt-get install ninja-build | ||
if: matrix.os == 'ubuntu-latest' | ||
- name: install ninja (osx) | ||
run: brew install ninja | ||
if: matrix.os == 'macos-12' | ||
- name: install ninja (win) | ||
run: choco install ninja | ||
if: matrix.os == 'windows-latest' | ||
- name: mkdir | ||
run: mkdir -p out | ||
- name: cmake | ||
run: cmake .. -G Ninja -DWITH_WASI=ON -DWERROR=ON -Werror=dev -Wno-deprecated | ||
working-directory: out | ||
if: matrix.os != 'windows-latest' | ||
- name: cmake (windows) | ||
run: cmake .. -DWERROR=ON -Werror=dev | ||
working-directory: out | ||
if: matrix.os == 'windows-latest' | ||
- name: build | ||
run: cmake --build out | ||
- name: check if generated files are up-to-date | ||
run: python ./scripts/check_clean.py | ||
- name: unittests | ||
run: cmake --build out --target run-unittests | ||
- name: c-api-tests | ||
run: cmake --build out --target run-c-api-tests | ||
- name: tests | ||
run: cmake --build out --target run-tests | ||
emscripten: | ||
name: emscripten | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v1 | ||
with: | ||
submodules: true | ||
- name: build | ||
run: | | ||
docker run -di --name emscripten -v $(pwd):/src emscripten/emsdk:latest bash | ||
docker exec emscripten emcc -v | ||
docker exec emscripten emcmake cmake . | ||
docker exec emscripten make -j 2 VERBOSE=1 | ||
wasi: | ||
name: wasi | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
with: | ||
submodules: true | ||
- name: build-tools | ||
run: | | ||
docker run -di --name wasi-sdk -v $(pwd):/src --workdir /src ghcr.io/webassembly/wasi-sdk:wasi-sdk-20 bash | ||
docker exec wasi-sdk cmake -S . -B out -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DBUILD_TESTS=0 -DBUILD_LIBWASM=0 | ||
docker exec wasi-sdk cmake --build out --config Release --target install | ||
- uses: ./.github/actions/release-archive | ||
with: | ||
os: wasi | ||
sanitize: | ||
name: sanitize | ||
runs-on: ubuntu-latest | ||
env: | ||
USE_NINJA: "1" | ||
CC: "clang" | ||
WASM2C_CFLAGS: "-march=x86-64-v2" # currently required for SIMDe to pass some tests on x86-64 | ||
strategy: | ||
matrix: | ||
sanitizer: [asan, ubsan, fuzz] | ||
type: [debug, release] | ||
steps: | ||
- uses: actions/setup-python@v1 | ||
with: | ||
python-version: '3.x' | ||
- uses: actions/checkout@v1 | ||
with: | ||
submodules: true | ||
- run: sudo apt-get install ninja-build | ||
- run: make clang-${{ matrix.type }}-${{ matrix.sanitizer }} | ||
- if: ${{ matrix.sanitizer }} != fuzz | ||
run: make test-clang-${{ matrix.type }}-${{ matrix.sanitizer }} | ||
build-wasm2c-memchecked: | ||
name: wasm2c-memchecked | ||
runs-on: ubuntu-latest | ||
env: | ||
USE_NINJA: "1" | ||
CC: "clang" # used by the wasm2c tests | ||
WASM2C_CFLAGS: "-march=x86-64-v2 -fsanitize=address -DWASM_RT_USE_MMAP=0" | ||
steps: | ||
- uses: actions/setup-python@v1 | ||
with: | ||
python-version: '3.x' | ||
- uses: actions/checkout@v1 | ||
with: | ||
submodules: true | ||
- run: sudo apt-get install ninja-build | ||
- run: make clang-debug-asan | ||
- run: make test-clang-debug-asan | ||
build-min-cmake: | ||
name: min-cmake | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v1 | ||
with: | ||
submodules: true | ||
- uses: actions/setup-python@v1 | ||
with: | ||
python-version: '3.x' | ||
- name: Install Ninja | ||
run: sudo apt-get install ninja-build | ||
- name: Detect minimum CMake version | ||
run: > | ||
awk 'match($0, /cmake_minimum_required\(VERSION *([0-9]+\.[0-9]+)\)/, a) | ||
{ print "WABT_CMAKE_VER=" a[1]; exit; }' CMakeLists.txt | tee $GITHUB_ENV | ||
- name: Install minimum CMake | ||
run: | | ||
python -m pip install -U setuptools wheel pip | ||
python -m pip install "cmake==${WABT_CMAKE_VER}.*" | ||
cmake --version | ||
- name: Configure WABT | ||
run: cmake -G Ninja -S . -B out -DCMAKE_BUILD_TYPE=Release | ||
- name: build | ||
run: cmake --build out | ||
- name: unittests | ||
run: cmake --build out --target run-unittests | ||
- name: c-api-tests | ||
run: cmake --build out --target run-c-api-tests | ||
- name: tests | ||
run: cmake --build out --target run-tests | ||
build-rlbox: | ||
name: rlbox | ||
runs-on: ubuntu-latest | ||
env: | ||
USE_NINJA: "1" | ||
WASM2C_CFLAGS: "-DWASM_RT_USE_MMAP=1 -DWASM_RT_SKIP_SIGNAL_RECOVERY=1 -DWASM_RT_STACK_HOST_HANDLER=1 -DWASM2C_TEST_EMBEDDER_SIGNAL_HANDLING" | ||
steps: | ||
- uses: actions/setup-python@v1 | ||
with: | ||
python-version: '3.x' | ||
- uses: actions/checkout@v1 | ||
with: | ||
submodules: true | ||
- run: sudo apt-get install ninja-build | ||
- run: make clang-debug | ||
- name: tests (excluding memory64) | ||
run: ./test/run-tests.py --exclude memory64 | ||
build-rlbox-win: | ||
name: rlbox-win | ||
runs-on: windows-latest | ||
env: | ||
USE_NINJA: "1" | ||
WASM2C_CFLAGS: "-DWASM_RT_USE_MMAP=1 -DWASM_RT_SKIP_SIGNAL_RECOVERY=1 -DWASM_RT_STACK_HOST_HANDLER=1 -DWASM2C_TEST_EMBEDDER_SIGNAL_HANDLING" | ||
steps: | ||
- uses: actions/setup-python@v1 | ||
with: | ||
python-version: '3.x' | ||
- uses: actions/checkout@v1 | ||
with: | ||
submodules: true | ||
- name: mkdir | ||
run: mkdir -p out | ||
- run: choco install ninja | ||
- name: cmake (windows) | ||
run: cmake .. -DWERROR=ON -Werror=dev | ||
working-directory: out | ||
- name: build | ||
run: cmake --build out | ||
- name: tests (excluding memory64 and stack exhaustion) | ||
run: ./test/run-tests.py --exclude memory64 --exclude call.txt --exclude call_indirect.txt --exclude fac.txt --exclude skip-stack-guard-page.txt |