mirror of
https://github.com/Vita3K/unicorn.git
synced 2024-11-23 13:29:40 +00:00
216c348c35
* Fix watchpoint leak in ARM * Builds fuzz targets with sanitizer support * Builds fuzz targets with directory driver * Adds script to dowlonad public corpus * Adds CIfuzz To checks Pull Requests with fuzzing * Use static library for fuzz targets * Less verbose logs for fuzz driver directory
275 lines
9.2 KiB
YAML
275 lines
9.2 KiB
YAML
language: c
|
|
env:
|
|
- PATH=$PATH:/usr/local/opt/binutils/bin
|
|
script:
|
|
- |
|
|
if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then
|
|
choco install cygwin cyg-get && \
|
|
cyg-get.bat default autoconf automake make gcc-core clang pkg-config libpcre-devel cmake python27-setuptools ruby wget && \
|
|
export SHELLOPTS && set -o igncr \
|
|
cmd.exe //C "C:\\tools\\cygwin\\bin\\bash.exe -lc 'cd /cygdrive/$TRAVIS_BUILD_DIR; make; ./install-cmocka-linux.sh; export PATH="$PATH":/cygdrive/$TRAVIS_BUILD_DIR:/cygdrive/$TRAVIS_BUILD_DIR/cmocka/src; make test'"
|
|
else
|
|
make && make -C bindings/go && make -C bindings/go test && make test
|
|
fi
|
|
compiler:
|
|
- clang
|
|
- gcc
|
|
os:
|
|
- linux
|
|
- osx
|
|
- windows
|
|
matrix:
|
|
fast_finish: true
|
|
include:
|
|
- name: "Linux arm64 clang C"
|
|
arch: arm64
|
|
os: linux
|
|
compiler: clang
|
|
language: c
|
|
env:
|
|
- PATH=$PATH:/usr/local/opt/binutils/bin
|
|
script: make && make -C tests/unit test && make -C tests/regress test
|
|
|
|
- name: "Linux arm64 gcc C"
|
|
arch: arm64
|
|
os: linux
|
|
compiler: gcc
|
|
language: c
|
|
env:
|
|
- PATH=$PATH:/usr/local/opt/binutils/bin
|
|
script: make && make -C tests/unit test && make -C tests/regress test
|
|
|
|
- name: "Linux clang ASAN"
|
|
os: linux
|
|
compiler: clang
|
|
env:
|
|
- PATH=$PATH:/usr/local/opt/binutils/bin
|
|
- ASAN_OPTIONS=detect_leaks=0
|
|
- CXXFLAGS="-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fsanitize=address -fsanitize=fuzzer-no-link"
|
|
- CFLAGS="-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fsanitize=address -fsanitize=fuzzer-no-link"
|
|
- LDFLAGS="-fsanitize=address"
|
|
script: make && make -C tests/fuzz && sh tests/fuzz/dlcorpus.sh
|
|
|
|
- name: "Linux clang MSAN"
|
|
os: linux
|
|
compiler: clang
|
|
env:
|
|
- PATH=$PATH:/usr/local/opt/binutils/bin
|
|
- ASAN_OPTIONS=detect_leaks=0
|
|
- CXXFLAGS="-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fsanitize=memory -fsanitize=fuzzer-no-link"
|
|
- CFLAGS="-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fsanitize=memory -fsanitize=fuzzer-no-link"
|
|
- LDFLAGS="-fsanitize=memory"
|
|
script: make && make -C tests/fuzz && sh tests/fuzz/dlcorpus.sh
|
|
|
|
- name: "Linux clang USAN"
|
|
os: linux
|
|
compiler: clang
|
|
env:
|
|
- PATH=$PATH:/usr/local/opt/binutils/bin
|
|
- ASAN_OPTIONS=detect_leaks=0
|
|
- CXXFLAGS="-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fsanitize=undefined -fsanitize=fuzzer-no-link"
|
|
- CFLAGS="-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fsanitize=undefined -fsanitize=fuzzer-no-link"
|
|
- LDFLAGS="-fsanitize=undefined"
|
|
script: make && make -C tests/fuzz && sh tests/fuzz/dlcorpus.sh
|
|
|
|
- name: "Linux 32bit"
|
|
os: linux
|
|
compiler: gcc
|
|
env:
|
|
- CFLAGS="-m32" LDFLAGS="-m32" LDFLAGS_STATIC="-m32" UNICORN_QEMU_FLAGS="--cpu=i386"
|
|
- PATH=$PATH:/usr/local/opt/binutils/bin
|
|
script: make && make -C tests/unit test && make -C tests/regress test
|
|
addons:
|
|
apt:
|
|
packages:
|
|
- lib32ncurses5-dev
|
|
- lib32z1-dev
|
|
- libpthread-stubs0-dev
|
|
- lib32gcc-4.8-dev
|
|
- libc6-dev-i386
|
|
- gcc-multilib
|
|
- libcmocka-dev:i386
|
|
|
|
- name: "Linux Cmake 32bit"
|
|
os: linux
|
|
compiler: gcc
|
|
env:
|
|
- CFLAGS="-m32" LDFLAGS="-m32" LDFLAGS_STATIC="-m32" UNICORN_QEMU_FLAGS="--cpu=i386"
|
|
- PATH=$PATH:/usr/local/opt/binutils/bin
|
|
script:
|
|
- mkdir build
|
|
- cd build
|
|
- ../cmake.sh x86
|
|
- cp libunicorn.* ../
|
|
- make -C ../tests/unit test && make -C ../tests/regress test
|
|
addons:
|
|
apt:
|
|
packages:
|
|
- lib32ncurses5-dev
|
|
- lib32z1-dev
|
|
- libpthread-stubs0-dev
|
|
- lib32gcc-4.8-dev
|
|
- libc6-dev-i386
|
|
- gcc-multilib
|
|
- libcmocka-dev:i386
|
|
|
|
- name: "Linux Cmake 64bit"
|
|
os: linux
|
|
compiler: gcc
|
|
env:
|
|
- PATH=$PATH:/usr/local/opt/binutils/bin
|
|
script:
|
|
- mkdir build
|
|
- cd build
|
|
- ../cmake.sh
|
|
- cp libunicorn.* ../
|
|
- make -C ../tests/unit test && make -C ../tests/regress test
|
|
|
|
- name: "MacOSX brew"
|
|
os: osx
|
|
osx_image: xcode10.1
|
|
python: 3.7
|
|
before_cache:
|
|
- brew cleanup
|
|
- find /usr/local/Homebrew \! -regex ".+\.git.+" -delete;
|
|
cache:
|
|
directories:
|
|
- $HOME/Library/Caches/Homebrew
|
|
- /usr/local/Homebrew
|
|
before_install:
|
|
- cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core && git stash && git clean -d -f
|
|
script:
|
|
- brew install --HEAD unicorn
|
|
- brew test unicorn
|
|
|
|
- name: "Windows nmake 32bit"
|
|
os: windows
|
|
language: shell
|
|
script:
|
|
- mkdir build
|
|
- cd build
|
|
- cmd.exe //C 'C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvarsall.bat' x86 '&' cmd.exe //C '..\nmake.bat' x86
|
|
|
|
- name: "Windows nmake 64bit"
|
|
os: windows
|
|
language: shell
|
|
script:
|
|
- mkdir build
|
|
- cd build
|
|
- cmd.exe //C 'C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvarsall.bat' amd64 '&' cmd.exe //C '..\nmake.bat'
|
|
|
|
- name: "Windows MSVC 32bit"
|
|
os: windows
|
|
language: shell
|
|
env:
|
|
- MSBUILD_PATH="C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin"
|
|
script:
|
|
- PATH=$MSBUILD_PATH:$PATH
|
|
- cmd.exe //C 'msbuild.exe msvc/unicorn.sln /m:2 /nologo /p:Configuration=Release /p:Platform=Win32'
|
|
|
|
- name: "Windows MSVC 64bit"
|
|
os: windows
|
|
language: shell
|
|
env:
|
|
- MSBUILD_PATH="C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin"
|
|
script:
|
|
- PATH=$MSBUILD_PATH:$PATH
|
|
- cmd.exe //C 'msbuild.exe msvc/unicorn.sln /m:2 /nologo /p:Configuration=Release /p:Platform=x64'
|
|
|
|
- name: "Windows MSYS2/MinGW32"
|
|
os: windows
|
|
language: shell
|
|
env:
|
|
- PATH=/C/tools/msys64/mingw32/bin:$PATH
|
|
before_install:
|
|
- |
|
|
if [[ ! -f /C/tools/msys64/msys2_shell.cmd ]]; then
|
|
rm -rf /C/tools/msys64
|
|
fi
|
|
- choco uninstall -y mingw
|
|
- choco upgrade --no-progress -y msys2
|
|
- export msys2='cmd //C RefreshEnv.cmd '
|
|
- export msys2+='& set MSYS=winsymlinks:nativestrict '
|
|
- export msys2+='& C:\\tools\\msys64\\msys2_shell.cmd -defterm -no-start'
|
|
- export shell="$msys2 -mingw32 -full-path -here -c \$\* --"
|
|
- export msys2+=" -msys2 -c \$\* --"
|
|
- $msys2 pacman --sync --noconfirm --needed \
|
|
autoconf \
|
|
automake \
|
|
make \
|
|
perl \
|
|
python \
|
|
mingw-w64-i686-libtool \
|
|
mingw-w64-i686-toolchain \
|
|
mingw-w64-i686-gcc \
|
|
mingw-w64-i686-cmake \
|
|
mingw-w64-i686-cmocka \
|
|
mingw-w64-i686-python3-setuptools \
|
|
unzip
|
|
- export CPPFLAGS=-D__USE_MINGW_ANSI_STDIO=1
|
|
- export CC=i686-w64-mingw32-gcc
|
|
- export AR=gcc-ar
|
|
- export RANLIB=gcc-ranlib
|
|
- export CFLAGS="-m32"
|
|
- export LDFLAGS="-m32"
|
|
- export LDFLAGS_STATIC="-m32"
|
|
- export UNICORN_QEMU_FLAGS="--cpu=i386"
|
|
before_cache:
|
|
- $msys2 pacman --sync --clean --noconfirm
|
|
cache:
|
|
directories:
|
|
- $HOME/AppData/Local/Temp/chocolatey
|
|
- /C/tools/msys64
|
|
script:
|
|
- $shell make; cp unicorn.dll /C/Windows/SysWOW64/; $shell make test
|
|
|
|
- name: "Windows MSYS2/MinGW64"
|
|
os: windows
|
|
language: shell
|
|
env:
|
|
- PATH=/C/tools/msys64/mingw64/bin:$PATH
|
|
before_install:
|
|
- |
|
|
if [[ ! -f /C/tools/msys64/msys2_shell.cmd ]]; then
|
|
rm -rf /C/tools/msys64
|
|
fi
|
|
- choco uninstall -y mingw
|
|
- choco upgrade --no-progress -y msys2
|
|
- export msys2='cmd //C RefreshEnv.cmd '
|
|
- export msys2+='& set MSYS=winsymlinks:nativestrict '
|
|
- export msys2+='& C:\\tools\\msys64\\msys2_shell.cmd -defterm -no-start'
|
|
- export shell="$msys2 -mingw64 -full-path -here -c \$\* --"
|
|
- export msys2+=" -msys2 -c \$\* --"
|
|
- $msys2 pacman --sync --noconfirm --needed \
|
|
autoconf \
|
|
automake \
|
|
make \
|
|
perl \
|
|
python \
|
|
mingw-w64-x86_64-libtool \
|
|
mingw-w64-x86_64-toolchain \
|
|
mingw-w64-x86_64-cmake \
|
|
mingw-w64-x86_64-cmocka \
|
|
mingw-w64-x86_64-python3-setuptools
|
|
unzip
|
|
- export CPPFLAGS=-D__USE_MINGW_ANSI_STDIO=1
|
|
- export CC=x86_64-w64-mingw32-gcc
|
|
- export AR=gcc-ar
|
|
- export RANLIB=gcc-ranlib
|
|
before_cache:
|
|
- $msys2 pacman --sync --clean --noconfirm
|
|
cache:
|
|
directories:
|
|
- $HOME/AppData/Local/Temp/chocolatey
|
|
- /C/tools/msys64
|
|
script:
|
|
- $shell make; cp unicorn.dll /C/Windows/System32/; $shell make test
|
|
addons:
|
|
apt:
|
|
packages:
|
|
- libpthread-stubs0-dev
|
|
- libcmocka-dev
|
|
homebrew:
|
|
update: true
|
|
brewfile: true
|