diff --git a/projects/solidity/Dockerfile b/projects/solidity/Dockerfile index 3e78860cc..f28fd02fc 100644 --- a/projects/solidity/Dockerfile +++ b/projects/solidity/Dockerfile @@ -22,4 +22,8 @@ RUN git clone --depth 1 https://github.com/ethereum/solidity-fuzzing-corpus.git RUN git clone --recursive -b boost-1.69.0 https://github.com/boostorg/boost.git boost RUN git clone --depth 1 https://github.com/google/libprotobuf-mutator.git RUN (mkdir LPM && cd LPM && cmake ../libprotobuf-mutator -GNinja -DLIB_PROTO_MUTATOR_DOWNLOAD_PROTOBUF=ON -DLIB_PROTO_MUTATOR_TESTING=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="/usr" && ninja && ninja install && cd external.protobuf && cp -Rf bin lib include /usr) +RUN git clone --branch="v0.1.0" --recurse-submodules https://github.com/ethereum/evmone.git +RUN git clone --branch="v0.2.0" https://github.com/chfast/intx.git +RUN git clone --branch="v0.4.4" https://github.com/chfast/ethash.git +RUN (wget https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.sh && chmod +x cmake-3.14.5-Linux-x86_64.sh && mkdir -p /src/cmake-3.14.5 && ./cmake-3.14.5-Linux-x86_64.sh --skip-license --prefix="/src/cmake-3.14.5") COPY build.sh $SRC/ diff --git a/projects/solidity/build.sh b/projects/solidity/build.sh index 3ce2930d5..e8dd9a567 100755 --- a/projects/solidity/build.sh +++ b/projects/solidity/build.sh @@ -25,11 +25,38 @@ cd $SRC/boost system regex filesystem unit_test_framework program_options \ install -j $(($(nproc)/2)) +# Newer cmake version required for evmone +CMAKE_NEW=${SRC}/cmake-3.14.5/bin/cmake + +# Instrument evmone and dependencies +cd $SRC/ethash +mkdir -p build +cd build +$CMAKE_NEW .. -G Ninja -DBUILD_SHARED_LIBS=OFF -DETHASH_BUILD_TESTS=OFF -DCMAKE_INSTALL_PREFIX="/usr" +ninja +ninja install + +cd $SRC/intx +mkdir -p build +cd build +$CMAKE_NEW .. -G Ninja -DBUILD_SHARED_LIBS=OFF -DINTX_TESTING=OFF -DINTX_BENCHMARKING=OFF -DCMAKE_INSTALL_PREFIX="/usr" +ninja +ninja install + +cd $SRC/evmone +mkdir -p build +cd build +$CMAKE_NEW .. -G Ninja -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX="/usr" +ninja +ninja install # Compile proto C++ bindings protoc \ --proto_path=$SRC/solidity/test/tools/ossfuzz yulProto.proto \ --cpp_out=$SRC/solidity/test/tools/ossfuzz +protoc \ + --proto_path=$SRC/solidity/test/tools/ossfuzz abiV2Proto.proto \ + --cpp_out=$SRC/solidity/test/tools/ossfuzz # Build solidity cd $SRC/solidity @@ -57,7 +84,7 @@ cmake -DUSE_Z3=OFF -DUSE_CVC4=OFF -DOSSFUZZ=ON \ -DBoost_UNIT_TEST_FRAMEWORK_LIBRARY=/usr/local/lib/libboost_unit_test_framework.a \ -DBoost_UNIT_TEST_FRAMEWORK_LIBRARIES=/usr/local/lib/libboost_unit_test_framework.a \ $SRC/solidity -make ossfuzz ossfuzz_proto -j $(nproc) +make ossfuzz ossfuzz_proto ossfuzz_abiv2 -j $(nproc) # Copy fuzzer binary, seed corpus, fuzzer options, and dictionary cp test/tools/ossfuzz/*_ossfuzz $OUT/