diff --git a/projects/llvm_libcxx/Dockerfile b/projects/llvm_libcxx/Dockerfile new file mode 100644 index 000000000..5777a4caf --- /dev/null +++ b/projects/llvm_libcxx/Dockerfile @@ -0,0 +1,19 @@ +# Copyright 2017 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +################################################################################ +FROM gcr.io/oss-fuzz-base/base-builder +RUN svn co http://llvm.org/svn/llvm-project/libcxxabi/trunk libcxxabi +RUN svn co http://llvm.org/svn/llvm-project/libcxx/trunk libcxx +COPY build.sh $SRC/ diff --git a/projects/llvm_libcxx/build.sh b/projects/llvm_libcxx/build.sh new file mode 100755 index 000000000..5caf6a3e8 --- /dev/null +++ b/projects/llvm_libcxx/build.sh @@ -0,0 +1,28 @@ +#!/bin/bash -eu +# Copyright 2017 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +################################################################################ + +for f in sort stable_sort partition stable_partition nth_element partial_sort; do + cat > ${f}_fuzzer.cc < +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { + int result = fuzzing::$f(data, size); + assert(result == 0); return 0; +} +EOF + $CXX $CXXFLAGS -std=c++11 ${f}_fuzzer.cc ./libcxx/fuzzing/fuzzing.cpp -I ./libcxx -o $OUT/$f -lFuzzingEngine +done diff --git a/projects/llvm_libcxx/project.yaml b/projects/llvm_libcxx/project.yaml new file mode 100644 index 000000000..c0f6db3f8 --- /dev/null +++ b/projects/llvm_libcxx/project.yaml @@ -0,0 +1,2 @@ +homepage: "https://libcxx.llvm.org/" +primary_contact: "mclow.lists@gmail.com"