From a88717dfdbf058cbb03898fa8b68e8a740598904 Mon Sep 17 00:00:00 2001 From: Kostya Serebryany Date: Wed, 18 Oct 2017 12:38:14 -0700 Subject: [PATCH] add LLVM libc++ (llvm_libcxx) (#904) --- projects/llvm_libcxx/Dockerfile | 19 +++++++++++++++++++ projects/llvm_libcxx/build.sh | 28 ++++++++++++++++++++++++++++ projects/llvm_libcxx/project.yaml | 2 ++ 3 files changed, 49 insertions(+) create mode 100644 projects/llvm_libcxx/Dockerfile create mode 100755 projects/llvm_libcxx/build.sh create mode 100644 projects/llvm_libcxx/project.yaml 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"