Add wxGTK build with ASAN to Travis CI
Compile and link with `-fsanitize=address` options to find memory related errors.
This commit is contained in:
		
				
					committed by
					
						
						Vadim Zeitlin
					
				
			
			
				
	
			
			
			
						parent
						
							fe7230e19c
						
					
				
				
					commit
					0310347dc4
				
			@@ -38,6 +38,10 @@ jobs:
 | 
				
			|||||||
          compiler: gcc
 | 
					          compiler: gcc
 | 
				
			||||||
          env: wxCONFIGURE_FLAGS="--disable-compat30 --disable-optimise --disable-unicode" wxSKIP_SAMPLES=1
 | 
					          env: wxCONFIGURE_FLAGS="--disable-compat30 --disable-optimise --disable-unicode" wxSKIP_SAMPLES=1
 | 
				
			||||||
          name: wxGTK ANSI Ubuntu 20.04
 | 
					          name: wxGTK ANSI Ubuntu 20.04
 | 
				
			||||||
 | 
					        - dist: focal
 | 
				
			||||||
 | 
					          compiler: gcc
 | 
				
			||||||
 | 
					          env: wxCONFIGURE_FLAGS="--disable-compat30 --disable-sys-libs" wxSKIP_SAMPLES=1 wxUSE_ASAN=1
 | 
				
			||||||
 | 
					          name: wxGTK Ubuntu 20.04 with ASAN
 | 
				
			||||||
        - os: osx
 | 
					        - os: osx
 | 
				
			||||||
          osx_image: xcode7.3
 | 
					          osx_image: xcode7.3
 | 
				
			||||||
          compiler: clang
 | 
					          compiler: clang
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -42,6 +42,24 @@ case $(uname -s) in
 | 
				
			|||||||
            done
 | 
					            done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            $SUDO apt-get install -y $libtoolkit_dev $pkg_install
 | 
					            $SUDO apt-get install -y $libtoolkit_dev $pkg_install
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if [ "$wxUSE_ASAN" = 1 ]; then
 | 
				
			||||||
 | 
					                codename=$(lsb_release --codename --short)
 | 
				
			||||||
 | 
					                # Enable the `-dbgsym` repositories.
 | 
				
			||||||
 | 
					                echo "deb http://ddebs.ubuntu.com ${codename} main restricted universe multiverse
 | 
				
			||||||
 | 
					                deb http://ddebs.ubuntu.com ${codename}-updates main restricted universe multiverse
 | 
				
			||||||
 | 
					                deb http://ddebs.ubuntu.com ${codename}-proposed main restricted universe multiverse" | \
 | 
				
			||||||
 | 
					                $SUDO tee --append /etc/apt/sources.list.d/ddebs.list
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                # Import the debug symbol archive signing key from the Ubuntu server.
 | 
				
			||||||
 | 
					                # Note that this command works only on Ubuntu 18.04 LTS and newer.
 | 
				
			||||||
 | 
					                $SUDO apt-get install -y ubuntu-dbgsym-keyring
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                $SUDO apt-get update
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                # Install the symbols to allow LSAN suppression list to work.
 | 
				
			||||||
 | 
					                $SUDO apt-get install -y libfontconfig1-dbgsym
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,6 +21,11 @@ case $wxTOOLSET in
 | 
				
			|||||||
        fi
 | 
					        fi
 | 
				
			||||||
        cmake --version
 | 
					        cmake --version
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if [ "$wxUSE_ASAN" = 1 ]; then
 | 
				
			||||||
 | 
					            echo "ASAN currently isn't supported in CMake builds"
 | 
				
			||||||
 | 
					            exit 1
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        echo 'travis_fold:start:configure'
 | 
					        echo 'travis_fold:start:configure'
 | 
				
			||||||
        echo 'Configuring...'
 | 
					        echo 'Configuring...'
 | 
				
			||||||
        mkdir build_cmake
 | 
					        mkdir build_cmake
 | 
				
			||||||
@@ -61,7 +66,20 @@ case $wxTOOLSET in
 | 
				
			|||||||
    *)
 | 
					    *)
 | 
				
			||||||
        echo 'travis_fold:start:configure'
 | 
					        echo 'travis_fold:start:configure'
 | 
				
			||||||
        echo 'Configuring...'
 | 
					        echo 'Configuring...'
 | 
				
			||||||
        ./configure --disable-optimise --disable-debug_info $wxCONFIGURE_FLAGS || rc=$?
 | 
					
 | 
				
			||||||
 | 
					        wxCONFIGURE_OPTIONS="--disable-optimise $wxCONFIGURE_FLAGS"
 | 
				
			||||||
 | 
					        if [ "$wxUSE_ASAN" = 1 ]; then
 | 
				
			||||||
 | 
					            export LSAN_OPTIONS=suppressions=$(pwd)/misc/suppressions/lsan
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            wxASAN_CFLAGS="-fsanitize=address -fno-omit-frame-pointer"
 | 
				
			||||||
 | 
					            wxASAN_CXXFLAGS=$wxASAN_CFLAGS
 | 
				
			||||||
 | 
					            wxASAN_LDFLAGS="-fsanitize=address"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            ./configure $wxCONFIGURE_OPTIONS --enable-debug "CFLAGS=$wxASAN_CFLAGS" "CXXFLAGS=$wxASAN_CXXFLAGS" "LDFLAGS=$wxASAN_LDFLAGS" || rc=$?
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					            ./configure $wxCONFIGURE_OPTIONS --disable-debug_info || rc=$?
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if [ -n "$rc" ]; then
 | 
					        if [ -n "$rc" ]; then
 | 
				
			||||||
            echo '*** Configuring failed, contents of config.log follows: ***'
 | 
					            echo '*** Configuring failed, contents of config.log follows: ***'
 | 
				
			||||||
            echo '-----------------------------------------------------------'
 | 
					            echo '-----------------------------------------------------------'
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user