From 671eb85b7219a1a3e6f1e1c646886e9351f5ea58 Mon Sep 17 00:00:00 2001 From: Marcos Pividori Date: Fri, 10 Feb 2017 01:40:28 +0000 Subject: [PATCH] [libFuzzer] Export external functions on tests. We need to export external functions so they are found when calling GetProcAddress() on Windows. But we can't use `__declspec(dllexport)` because we want the targets to be completely independent from the fuzz engines and don't depend on other header files. Also, we don't want to include platform specific code managed with conditional macros. So, the solution is to add the exported symbols with linker flags in cmake. Differential revision: https://reviews.llvm.org/D29752 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294688 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Fuzzer/test/CMakeLists.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/Fuzzer/test/CMakeLists.txt b/lib/Fuzzer/test/CMakeLists.txt index cf9c99a36ca..890cbeef5e4 100644 --- a/lib/Fuzzer/test/CMakeLists.txt +++ b/lib/Fuzzer/test/CMakeLists.txt @@ -142,6 +142,18 @@ foreach(Test ${Tests}) add_libfuzzer_test(${Test} SOURCES ${Test}.cpp) endforeach() +function(test_export_symbol target symbol) + if(MSVC) + set_target_properties(LLVMFuzzer-${target} PROPERTIES LINK_FLAGS + "-export:${symbol}") + endif() +endfunction() + +test_export_symbol(InitializeTest "LLVMFuzzerInitialize") +test_export_symbol(BogusInitializeTest "LLVMFuzzerInitialize") +test_export_symbol(CustomCrossOverTest "LLVMFuzzerCustomCrossOver") +test_export_symbol(CustomMutatorTest "LLVMFuzzerCustomMutator") + ############################################################################### # Unit tests ############################################################################### -- 2.11.0