Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Cirrus CI: Use --with-asan --with-ubsan instead of env vars
Alex Richardson committed 5 years ago
commit 0477d731fe560bc28abac06a1eee5fb7e33ed67a
parent 0c727b4
4 files changed +36 -27
modified .cirrus.yml
@@ -1,7 +1,7 @@
freebsd_task:
        install_script: ASSUME_ALWAYS_YES=yes pkg bootstrap -f ; pkg install -y kyua pkgconf mini_httpd
        script:
-
                - ./configure
+
                - ./configure $EXTRA_ARGS
                - make -j4 || make V=1
        check_script: make check || { kyua report --verbose ; exit 1 ; }
        matrix:
@@ -18,10 +18,8 @@ freebsd_task:
                  freebsd_instance:
                     image_family: freebsd-14-0-snap
                  env:
-
                     LDFLAGS: -fsanitize=address
-
                     CPPFLAGS: -fsanitize=address
-
                     CXXFLAGS: -fsanitize=address
-
                     CFLAGS: -fsanitize=address
+
                     EXTRA_ARGS: --with-asan --with-ubsan
+

ubuntu_task:
        container:
                image: ubuntu:latest
@@ -29,13 +27,14 @@ ubuntu_task:
                - DEBIAN_FRONTEND=noninteractive apt-get update
                - DEBIAN_FRONTEND=noninteractive apt-get install -y libsqlite3-dev libbsd-dev libarchive-dev libssl-dev liblzma-dev liblua5.2-dev nettle-dev liblzo2-dev libattr1-dev libacl1-dev wget build-essential zlib1g-dev libbz2-dev m4 libexpat1-dev liblz4-dev libxml2-dev libzstd-dev
        env:
-
                LDFLAGS: -fsanitize=address -ldl
-
                CPPFLAGS: -fsanitize=address
-
                CXXFLAGS: -fsanitize=address
-
                CFLAGS: -fsanitize=address
+
                # False-positive leak detection in recent glibc:
+
                # Direct leak of 12 byte(s) in 2 object(s) allocated from:
+
                # #0 0x7fe222e5d3cf in __interceptor_malloc (/lib64/libasan.so.6+0xab3cf)
+
                # #1 0x7fe22260f08f in __vasprintf_internal (/lib64/libc.so.6+0x7f08f)
+
                ASAN_OPTIONS: detect_leaks=0
        install_script: scripts/install_deps.sh
        script:
-
                - ./configure --with-libarchive.pc
+
                - ./configure --with-libarchive.pc --with-asan --with-ubsan
                - make -j4 || make V=1
        check_script: make check || { kyua report --verbose ; exit 1 ; }

@@ -44,12 +43,12 @@ osx_task:
                image: catalina-xcode
        install_script: scripts/install_deps.sh
        env:
-
                LDFLAGS: -L/usr/local/opt/libarchive/lib -L/usr/local/opt/openssl/lib -fsanitize=address,undefined
-
                CPPFLAGS: -I/usr/local/opt/libarchive/include -I/usr/local/opt/openssl/include -fsanitize=address,undefined
-
                CXXFLAGS: -I/usr/local/opt/libarchive/include -I/usr/local/opt/openssl/include -fsanitize=address,undefined
-
                CFLAGS: -I/usr/local/opt/libarchive/include -I/usr/local/opt/openssl/include -fsanitize=address,undefined
+
                LDFLAGS: -L/usr/local/opt/libarchive/lib -L/usr/local/opt/openssl/lib
+
                CPPFLAGS: -I/usr/local/opt/libarchive/include -I/usr/local/opt/openssl/include
+
                CXXFLAGS: -I/usr/local/opt/libarchive/include -I/usr/local/opt/openssl/include
+
                CFLAGS: -I/usr/local/opt/libarchive/include -I/usr/local/opt/openssl/include
        script:
-
                - ./configure
+
                - ./configure --with-asan --with-ubsan
                - make -j4 || make V=1
        check_script: make check || { kyua report --verbose ; exit 1 ;}

@@ -57,21 +56,19 @@ fedora_task:
        container:
                image: fedora:latest
        env:
-
                LDFLAGS: -fsanitize=address,undefined -ldl -g
-
                # Avoid error when building with UBSan inside _mum_hash_avx2
-
                CPPFLAGS: -fsanitize=address,undefined -g -D_MUM_UNALIGNED_ACCESS=0
-
                CXXFLAGS: -fsanitize=address,undefined -g
-
                CFLAGS: -fsanitize=address,undefined -g
-
                # False-positive leak detection in glibc:
+
                # False-positive leak detection in recent glibc:
                # Direct leak of 12 byte(s) in 2 object(s) allocated from:
                # #0 0x7fe222e5d3cf in __interceptor_malloc (/lib64/libasan.so.6+0xab3cf)
                # #1 0x7fe22260f08f in __vasprintf_internal (/lib64/libc.so.6+0x7f08f)
                ASAN_OPTIONS: detect_leaks=0
-
                UBSAN_OPTIONS: print_stacktrace=1:halt_on_error=1
        install_script:
                - dnf -y upgrade
-
                - dnf -y install kyua libatf-c-devel libatf-sh-devel libatf-sh libbsd-devel gcc g++ make zlib-devel bzip2-devel libarchive-devel openssl-devel xz-devel m4 lz4-devel expat-devel libxml2-devel libacl-devel libzstd-devel diffutils bsdtar openssl which xz
+
                - dnf -y install gcc g++ make kyua libatf-c-devel libatf-sh-devel libatf-sh libbsd-devel zlib-devel \
+
                                 bzip2-devel libarchive-devel openssl-devel xz-devel m4 lz4-devel expat-devel \
+
                                 libxml2-devel libacl-devel libzstd-devel \
+
                                 libasan-static libubsan-static libasan-static libubsan-static \
+
                                 bsdtar diffutils openssl which xz
        script:
-
                - ./configure --with-libarchive.pc
+
                - ./configure --with-libarchive.pc --with-asan --with-ubsan
                - make -j4 || make V=1
        check_script: make check || { kyua report --verbose ; exit 1 ; }
modified Makefile.autosetup
@@ -15,6 +15,9 @@ clean-profiles:

check: all
@if TESTS
+
@if ubsan
+
	export UBSAN_OPTIONS=print_stacktrace=1:halt_on_error=1
+
@endif
	export LLVM_PROFILE_FILE=/tmp/pkg.%p.profraw
	if [ "$(HTML)" != "" ]; then \
		args="-r $(top_builddir)/res.db" ; \
modified auto.def
@@ -276,10 +276,18 @@ cc-check-includes bsd/err.h bsd/libutil.h bsd/readpassphrase.h \
if {[opt-bool with-asan]} {
	define-append ASAN_CFLAGS -O0 -ggdb -fsanitize=address
	define-append ASAN_LDFLAGS -fsanitize=address
+
	if {[string match *-linux* [get-define host]]} {
+
		# ASAN depends on libdl for dlsym when building with GCC
+
		define-append ASAN_LDFLAGS -ldl
+
	}
	define asan 1
	undefine HAVE_STATIC
}
if {[opt-bool with-ubsan]} {
+
	# Avoid alignment error when building with UBSan inside _mum_hash_avx2
+
	define-append UBSAN_CFLAGS -D_MUM_UNALIGNED_ACCESS=0
+
	define-append UBSAN_CFLAGS -O0 -ggdb -fsanitize=undefined
+
	define-append UBSAN_LDFLAGS -fsanitize=undefined
	define ubsan 1
}
if {[opt-bool with-coverage]} {
modified mk/defs.mk.in
@@ -6,11 +6,12 @@ CFLAGS+= @COVERAGE_CFLAGS@
LDFLAGS+=	@COVERAGE_LDFLAGS@
@endif
@if asan
-
CFLAGS+=	-O0 -ggdb -fsanitize=address
-
LDFLAGS+=	-fsanitize=address
+
CFLAGS+=	@ASAN_CFLAGS@
+
LDFLAGS+=	@ASAN_LDFLAGS@
@endif
@if ubsan
-
CFLAGS+=	-fsanitize=undefined
+
CFLAGS+=	@UBSAN_CFLAGS@
+
LDFLAGS+=	@UBSAN_LDFLAGS@
@endif
SHOBJ_CFLAGS=	@SHOBJ_CFLAGS@
LIBSOEXT=	@LIBSOEXT@