Add option to enable asan compilation in CS: --enable-asan (#3428)
Add workflow `ci-asan.yml` to test CS with ASAN as well.
This commit is contained in:
parent
e93d1341fb
commit
c5e3de2a7b
90
.github/workflows/ci-asan.yml
vendored
Normal file
90
.github/workflows/ci-asan.yml
vendored
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
name: Test with ASan
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
racketcs-asan:
|
||||||
|
runs-on: ubuntu-18.04
|
||||||
|
container: racket/racket-ci:latest
|
||||||
|
|
||||||
|
env:
|
||||||
|
ASAN_OPTIONS: 'halt_on_error=0,log_path=racket-asan'
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
fetch-depth: 100
|
||||||
|
- name: Create logs directory
|
||||||
|
run: mkdir $PWD/logs
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
export cpus=$(grep -c ^processor /proc/cpuinfo)
|
||||||
|
make CPUS="${cpus}" PKGS="racket-test db-test unstable-flonum-lib net-test" CONFIGURE_ARGS_qq='--enable-asan' cs-in-place 2>&1 | tee logs/build.log
|
||||||
|
- name: Add new racket to PATH
|
||||||
|
# This should be:
|
||||||
|
# run: echo "::add-path::${{ github.workspace }}/racket/bin"
|
||||||
|
# but due to a github bug, the variable ${{ github.workspace }} value inside a container is broken
|
||||||
|
# so we hard code the real value
|
||||||
|
run: |
|
||||||
|
echo "::add-path::/__w/racket/racket/racket/bin"
|
||||||
|
find /__w/racket/racket/racket/bin -type f
|
||||||
|
- name: Racket version
|
||||||
|
run: |
|
||||||
|
which racket
|
||||||
|
racket --version
|
||||||
|
- name: Run tests/racket/test
|
||||||
|
continue-on-error: true
|
||||||
|
run: raco test -l tests/racket/test
|
||||||
|
- name: Run tests/racket/contract/all
|
||||||
|
continue-on-error: true
|
||||||
|
run: racket -l tests/racket/contract/all
|
||||||
|
- name: Run tests/json/json
|
||||||
|
continue-on-error: true
|
||||||
|
run: raco test -l tests/json/json
|
||||||
|
- name: Run tests/file/main
|
||||||
|
continue-on-error: true
|
||||||
|
run: raco test -l tests/file/main
|
||||||
|
- name: Run tests/net/head
|
||||||
|
continue-on-error: true
|
||||||
|
run: raco test -l tests/net/head
|
||||||
|
- name: Run tests/net/uri-codec
|
||||||
|
continue-on-error: true
|
||||||
|
run: raco test -l tests/net/uri-codec
|
||||||
|
- name: Run tests/net/url
|
||||||
|
continue-on-error: true
|
||||||
|
run: raco test -l tests/net/url
|
||||||
|
- name: Run tests/net/url-port
|
||||||
|
continue-on-error: true
|
||||||
|
run: raco test -l tests/net/url-port
|
||||||
|
- name: Run tests/net/encoders
|
||||||
|
continue-on-error: true
|
||||||
|
run: raco test -l tests/net/encoders
|
||||||
|
- name: Run tests/openssl/basic
|
||||||
|
continue-on-error: true
|
||||||
|
run: raco test -l tests/openssl/basic
|
||||||
|
- name: Run tests/openssl/https
|
||||||
|
continue-on-error: true
|
||||||
|
run: raco test -l tests/openssl/https
|
||||||
|
- name: Run tests/match/main
|
||||||
|
continue-on-error: true
|
||||||
|
run: raco test -l tests/match/main
|
||||||
|
- name: Run tests/zo-path
|
||||||
|
continue-on-error: true
|
||||||
|
run: raco test -l tests/zo-path
|
||||||
|
- name: Run tests/xml
|
||||||
|
continue-on-error: true
|
||||||
|
run: raco test -c tests/xml
|
||||||
|
- name: Run tests/future
|
||||||
|
continue-on-error: true
|
||||||
|
run: raco test -c tests/future
|
||||||
|
- name: Run tests/stxparse
|
||||||
|
continue-on-error: true
|
||||||
|
run: raco test -c tests/stxparse
|
||||||
|
- name: Run db tests
|
||||||
|
continue-on-error: true
|
||||||
|
run: raco test -l tests/db/all-tests
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: asan-errors-cs_git${{ github.sha }}
|
||||||
|
path: ./racket-asan.*
|
5
.github/workflows/ci-ubsan.yml
vendored
5
.github/workflows/ci-ubsan.yml
vendored
|
@ -1,11 +1,11 @@
|
||||||
name: Test with Sanitizers
|
name: Test with UBSan
|
||||||
|
|
||||||
on: [push, pull_request]
|
on: [push, pull_request]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|
||||||
# Build jobs
|
# Build jobs
|
||||||
# These jobs build Racket using the sanitizers and gather the results into a final log
|
# These jobs build Racket using undefined behaviour sanitizers and gathers the results into a final log
|
||||||
racket3m-ubsan:
|
racket3m-ubsan:
|
||||||
runs-on: ubuntu-18.04
|
runs-on: ubuntu-18.04
|
||||||
container: racket/racket-ci:latest
|
container: racket/racket-ci:latest
|
||||||
|
@ -178,3 +178,4 @@ jobs:
|
||||||
with:
|
with:
|
||||||
name: runtime-errors-cs_git${{ github.sha }}
|
name: runtime-errors-cs_git${{ github.sha }}
|
||||||
path: runtime-errors_git${{ github.sha }}.log
|
path: runtime-errors_git${{ github.sha }}.log
|
||||||
|
|
||||||
|
|
8
racket/src/ac/asan.m4
Normal file
8
racket/src/ac/asan.m4
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
if test "${enable_asan}" = "yes" ; then
|
||||||
|
ASAN="-fsanitize=address -fsanitize-recover=address -fno-omit-frame-pointer -fno-common"
|
||||||
|
CFLAGS="$CFLAGS $ASAN"
|
||||||
|
CPPFLAGS="$CPPFLAGS $ASAN"
|
||||||
|
PREFLAGS="$PREFLAGS $ASAN"
|
||||||
|
LDFLAGS="$LDFLAGS $ASAN"
|
||||||
|
fi
|
||||||
|
|
1
racket/src/ac/asan_arg.m4
Normal file
1
racket/src/ac/asan_arg.m4
Normal file
|
@ -0,0 +1 @@
|
||||||
|
AC_ARG_ENABLE(asan, [ --enable-asan compile with -fsanitize=address])
|
20
racket/src/cs/c/configure
vendored
20
racket/src/cs/c/configure
vendored
|
@ -796,6 +796,7 @@ enable_mac64
|
||||||
enable_libs
|
enable_libs
|
||||||
enable_noopt
|
enable_noopt
|
||||||
enable_ubsan
|
enable_ubsan
|
||||||
|
enable_asan
|
||||||
enable_bcdefault
|
enable_bcdefault
|
||||||
enable_csonly
|
enable_csonly
|
||||||
enable_csdefault
|
enable_csdefault
|
||||||
|
@ -1446,6 +1447,7 @@ Optional Features:
|
||||||
--enable-libs install static libraries (enabled by default for Unix)
|
--enable-libs install static libraries (enabled by default for Unix)
|
||||||
--enable-strip strip debug on install (usually enabled by default)
|
--enable-strip strip debug on install (usually enabled by default)
|
||||||
--enable-ubsan compile with -fsanitize=undefined
|
--enable-ubsan compile with -fsanitize=undefined
|
||||||
|
--enable-asan compile with -fsanitize=address
|
||||||
--enable-bcdefault install BC without suffix
|
--enable-bcdefault install BC without suffix
|
||||||
--enable-bconly BC default, and skip CS build
|
--enable-bconly BC default, and skip CS build
|
||||||
--enable-csdefault install CS without suffix
|
--enable-csdefault install CS without suffix
|
||||||
|
@ -2679,6 +2681,12 @@ if test "${enable_ubsan+set}" = set; then :
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# Check whether --enable-asan was given.
|
||||||
|
if test "${enable_asan+set}" = set; then :
|
||||||
|
enableval=$enable_asan;
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Check whether --enable-bcdefault was given.
|
# Check whether --enable-bcdefault was given.
|
||||||
if test "${enable_bcdefault+set}" = set; then :
|
if test "${enable_bcdefault+set}" = set; then :
|
||||||
enableval=$enable_bcdefault;
|
enableval=$enable_bcdefault;
|
||||||
|
@ -4727,6 +4735,18 @@ if test "${enable_ubsan}" = "yes" ; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
############## ubsan ################
|
||||||
|
|
||||||
|
if test "${enable_asan}" = "yes" ; then
|
||||||
|
ASAN="-fsanitize=address -fsanitize-recover=address -fno-omit-frame-pointer -fno-common"
|
||||||
|
CFLAGS="$CFLAGS $ASAN"
|
||||||
|
CPPFLAGS="$CPPFLAGS $ASAN"
|
||||||
|
PREFLAGS="$PREFLAGS $ASAN"
|
||||||
|
LDFLAGS="$LDFLAGS $ASAN"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
############## Makefile includes ################
|
############## Makefile includes ################
|
||||||
|
|
||||||
if test "$INCLUDEDEP" = "#" ; then
|
if test "$INCLUDEDEP" = "#" ; then
|
||||||
|
|
|
@ -28,6 +28,7 @@ m4_include(../ac/sdk_arg.m4)
|
||||||
m4_include(../ac/instlib_arg.m4)
|
m4_include(../ac/instlib_arg.m4)
|
||||||
m4_include(../ac/strip_arg.m4)
|
m4_include(../ac/strip_arg.m4)
|
||||||
m4_include(../ac/ubsan_arg.m4)
|
m4_include(../ac/ubsan_arg.m4)
|
||||||
|
m4_include(../ac/asan_arg.m4)
|
||||||
m4_include(../ac/vm_arg.m4)
|
m4_include(../ac/vm_arg.m4)
|
||||||
m4_include(../ac/crossany_arg.m4)
|
m4_include(../ac/crossany_arg.m4)
|
||||||
AC_ARG_ENABLE(libz, [ --enable-libz use installed libz if available])
|
AC_ARG_ENABLE(libz, [ --enable-libz use installed libz if available])
|
||||||
|
@ -470,6 +471,10 @@ fi
|
||||||
|
|
||||||
m4_include(../ac/ubsan.m4)
|
m4_include(../ac/ubsan.m4)
|
||||||
|
|
||||||
|
############## ubsan ################
|
||||||
|
|
||||||
|
m4_include(../ac/asan.m4)
|
||||||
|
|
||||||
############## Makefile includes ################
|
############## Makefile includes ################
|
||||||
|
|
||||||
if test "$INCLUDEDEP" = "#" ; then
|
if test "$INCLUDEDEP" = "#" ; then
|
||||||
|
|
Loading…
Reference in New Issue
Block a user