mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #6413 from ethereum/ossfuzz-build-ci
Add CI to build ossfuzz fuzzer binaries
This commit is contained in:
commit
e9ffbefb05
@ -17,6 +17,14 @@ defaults:
|
|||||||
[ -n "$COVERAGE" -a "$CIRCLE_BRANCH" != release -a -z "$CIRCLE_TAG" ] && CMAKE_OPTIONS="$CMAKE_OPTIONS -DCOVERAGE=ON"
|
[ -n "$COVERAGE" -a "$CIRCLE_BRANCH" != release -a -z "$CIRCLE_TAG" ] && CMAKE_OPTIONS="$CMAKE_OPTIONS -DCOVERAGE=ON"
|
||||||
cmake .. -DCMAKE_BUILD_TYPE=Release $CMAKE_OPTIONS
|
cmake .. -DCMAKE_BUILD_TYPE=Release $CMAKE_OPTIONS
|
||||||
make -j4
|
make -j4
|
||||||
|
- run_build_ossfuzz: &run_build_ossfuzz
|
||||||
|
name: Build_ossfuzz
|
||||||
|
command: |
|
||||||
|
mkdir -p build
|
||||||
|
cd build
|
||||||
|
/src/LPM/external.protobuf/bin/protoc --proto_path=../test/tools/ossfuzz yulProto.proto --cpp_out=../test/tools/ossfuzz
|
||||||
|
cmake .. -DCMAKE_BUILD_TYPE=Release $CMAKE_OPTIONS
|
||||||
|
make ossfuzz ossfuzz_proto -j4
|
||||||
- run_tests: &run_tests
|
- run_tests: &run_tests
|
||||||
name: Tests
|
name: Tests
|
||||||
command: scripts/tests.sh --junit_report test_results
|
command: scripts/tests.sh --junit_report test_results
|
||||||
@ -390,6 +398,27 @@ jobs:
|
|||||||
path: docs/_build/html/
|
path: docs/_build/html/
|
||||||
destination: docs-html
|
destination: docs-html
|
||||||
|
|
||||||
|
build_x86_linux_ossfuzz:
|
||||||
|
docker:
|
||||||
|
- image: buildpack-deps:cosmic
|
||||||
|
environment:
|
||||||
|
TERM: xterm
|
||||||
|
CC: /usr/bin/clang-7
|
||||||
|
CXX: /usr/bin/clang++-7
|
||||||
|
CMAKE_OPTIONS: -DOSSFUZZ=1 -DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/libfuzzer.cmake
|
||||||
|
steps:
|
||||||
|
- checkout
|
||||||
|
- run:
|
||||||
|
name: Install build dependencies
|
||||||
|
command: |
|
||||||
|
apt-get -qq update
|
||||||
|
apt-get -qy install clang-7 cmake libboost-regex-dev libboost-filesystem-dev libboost-test-dev libboost-system-dev libboost-program-options-dev libcvc4-dev libbz2-dev ninja-build zlib1g-dev
|
||||||
|
./scripts/install_obsolete_jsoncpp_1_7_4.sh
|
||||||
|
./scripts/install_lpm.sh
|
||||||
|
./scripts/install_libfuzzer.sh
|
||||||
|
- run: *setup_prerelease_commit_hash
|
||||||
|
- run: *run_build_ossfuzz
|
||||||
|
|
||||||
workflows:
|
workflows:
|
||||||
version: 2
|
version: 2
|
||||||
build_all:
|
build_all:
|
||||||
@ -434,6 +463,8 @@ workflows:
|
|||||||
<<: *build_on_tags
|
<<: *build_on_tags
|
||||||
requires:
|
requires:
|
||||||
- build_x86_archlinux
|
- build_x86_archlinux
|
||||||
|
- build_x86_linux_ossfuzz: *build_on_tags
|
||||||
|
|
||||||
test_nightly:
|
test_nightly:
|
||||||
triggers:
|
triggers:
|
||||||
- schedule:
|
- schedule:
|
||||||
|
2
cmake/toolchains/libfuzzer.cmake
Normal file
2
cmake/toolchains/libfuzzer.cmake
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# Require libfuzzer specific flags
|
||||||
|
set(CMAKE_CXX_FLAGS "-O1 -gline-tables-only -fsanitize=address -fsanitize-address-use-after-scope -fsanitize=fuzzer-no-link -stdlib=libstdc++")
|
13
scripts/install_libfuzzer.sh
Executable file
13
scripts/install_libfuzzer.sh
Executable file
@ -0,0 +1,13 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
set -e
|
||||||
|
TEMPDIR=$(mktemp -d)
|
||||||
|
(
|
||||||
|
cd $TEMPDIR
|
||||||
|
svn co https://llvm.org/svn/llvm-project/compiler-rt/trunk/lib/fuzzer libfuzzer
|
||||||
|
mkdir -p build-libfuzzer
|
||||||
|
cd build-libfuzzer
|
||||||
|
CXXFLAGS="-O1 -stdlib=libstdc++"
|
||||||
|
$CXX $CXXFLAGS -std=c++11 -O2 -fPIC -c ../libfuzzer/*.cpp -I../libfuzzer
|
||||||
|
ar r /usr/lib/libFuzzingEngine.a *.o
|
||||||
|
)
|
||||||
|
rm -rf $TEMPDIR
|
13
scripts/install_lpm.sh
Executable file
13
scripts/install_lpm.sh
Executable file
@ -0,0 +1,13 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
TEMPDIR="src"
|
||||||
|
cd /
|
||||||
|
mkdir -p $TEMPDIR
|
||||||
|
(
|
||||||
|
cd $TEMPDIR
|
||||||
|
git clone --depth 1 https://github.com/google/libprotobuf-mutator.git
|
||||||
|
mkdir -p LPM
|
||||||
|
cd LPM
|
||||||
|
cmake ../libprotobuf-mutator -GNinja -DLIB_PROTO_MUTATOR_DOWNLOAD_PROTOBUF=ON -DLIB_PROTO_MUTATOR_TESTING=OFF -DCMAKE_BUILD_TYPE=Release && ninja install
|
||||||
|
)
|
Loading…
Reference in New Issue
Block a user