summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang-tools-extra/clangd/CMakeLists.txt3
-rw-r--r--clang-tools-extra/clangd/fuzzer/CMakeLists.txt12
-rw-r--r--clang-tools-extra/clangd/fuzzer/DummyClangdMain.cpp18
-rw-r--r--clang-tools-extra/clangd/fuzzer/clangd-fuzzer.cpp (renamed from clang-tools-extra/clangd/fuzzer/ClangdFuzzer.cpp)0
4 files changed, 24 insertions, 9 deletions
diff --git a/clang-tools-extra/clangd/CMakeLists.txt b/clang-tools-extra/clangd/CMakeLists.txt
index 5152d5fc866..3b2d4447387 100644
--- a/clang-tools-extra/clangd/CMakeLists.txt
+++ b/clang-tools-extra/clangd/CMakeLists.txt
@@ -116,7 +116,8 @@ add_clang_library(clangDaemon
)
add_subdirectory(refactor/tweaks)
-if( LLVM_LIB_FUZZING_ENGINE OR LLVM_USE_SANITIZE_COVERAGE )
+if (LINUX)
+ # FIXME: Make fuzzer not use linux-specific APIs, build it everywhere.
add_subdirectory(fuzzer)
endif()
add_subdirectory(tool)
diff --git a/clang-tools-extra/clangd/fuzzer/CMakeLists.txt b/clang-tools-extra/clangd/fuzzer/CMakeLists.txt
index ca76c977451..603073e6ef6 100644
--- a/clang-tools-extra/clangd/fuzzer/CMakeLists.txt
+++ b/clang-tools-extra/clangd/fuzzer/CMakeLists.txt
@@ -2,13 +2,10 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/..)
set(LLVM_LINK_COMPONENTS support)
-if(LLVM_USE_SANITIZE_COVERAGE)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=fuzzer")
-endif()
-
-add_clang_executable(clangd-fuzzer
- EXCLUDE_FROM_ALL
- ClangdFuzzer.cpp
+# This fuzzer runs on oss-fuzz, so keep it around even if it looks unreferenced.
+add_llvm_fuzzer(clangd-fuzzer
+ clangd-fuzzer.cpp
+ DUMMY_MAIN DummyClangdMain.cpp
)
target_link_libraries(clangd-fuzzer
@@ -20,5 +17,4 @@ target_link_libraries(clangd-fuzzer
clangSema
clangTooling
clangToolingCore
- ${LLVM_LIB_FUZZING_ENGINE}
)
diff --git a/clang-tools-extra/clangd/fuzzer/DummyClangdMain.cpp b/clang-tools-extra/clangd/fuzzer/DummyClangdMain.cpp
new file mode 100644
index 00000000000..cd5a6121751
--- /dev/null
+++ b/clang-tools-extra/clangd/fuzzer/DummyClangdMain.cpp
@@ -0,0 +1,18 @@
+//===---- DummyClangdMain.cpp - Entry point to sanity check the fuzzer ----===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// Implementation of main so we can build and test without linking libFuzzer.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/FuzzMutate/FuzzerCLI.h"
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size);
+int main(int argc, char *argv[]) {
+ return llvm::runFuzzerOnInputs(argc, argv, LLVMFuzzerTestOneInput);
+}
diff --git a/clang-tools-extra/clangd/fuzzer/ClangdFuzzer.cpp b/clang-tools-extra/clangd/fuzzer/clangd-fuzzer.cpp
index eba98261d80..eba98261d80 100644
--- a/clang-tools-extra/clangd/fuzzer/ClangdFuzzer.cpp
+++ b/clang-tools-extra/clangd/fuzzer/clangd-fuzzer.cpp
OpenPOWER on IntegriCloud