[llvm] r292748 - [libFuzzer] Fix test with shared libraries on Windows.
Marcos Pividori via llvm-commits
llvm-commits at lists.llvm.org
Sat Jan 21 18:28:08 PST 2017
Author: mpividori
Date: Sat Jan 21 20:28:08 2017
New Revision: 292748
URL: http://llvm.org/viewvc/llvm-project?rev=292748&view=rev
Log:
[libFuzzer] Fix test with shared libraries on Windows.
We need to set BINARY_DIR to: ${CMAKE_BINARY_DIR}/lib/Fuzzer/test , so the dll
is placed in the same directory than the test LLVMFuzzer-DSOTest, and is found
when executing that test.
As we are using CMAKE_CXX_CREATE_SHARED_LIBRARY to link the dll, we can't modify
the output directory for the import library. It will be created in the same
directory than the dll (in BINARY_DIR), no matter which value we set to
LIBRARY_DIR. So, if we set LIBRARY_DIR to a different directory than BINARY_DIR,
when linking LLVMFuzzer-DSOTest, cmake will look for the import library
LLVMFuzzer-DSO1.lib in LIBRARY_DIR, and won't find it, since it was created in
BINARY_DIR. So, for Windows, we need that LIBRARY_DIR and BINARY_DIR are the
same directory.
Differential Revision: https://reviews.llvm.org/D27870
Modified:
llvm/trunk/lib/Fuzzer/test/CMakeLists.txt
llvm/trunk/lib/Fuzzer/test/DSO1.cpp
llvm/trunk/lib/Fuzzer/test/DSO2.cpp
Modified: llvm/trunk/lib/Fuzzer/test/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Fuzzer/test/CMakeLists.txt?rev=292748&r1=292747&r2=292748&view=diff
==============================================================================
--- llvm/trunk/lib/Fuzzer/test/CMakeLists.txt (original)
+++ llvm/trunk/lib/Fuzzer/test/CMakeLists.txt Sat Jan 21 20:28:08 2017
@@ -195,10 +195,20 @@ target_link_libraries(LLVMFuzzer-DSOTest
set_target_properties(LLVMFuzzer-DSOTest PROPERTIES RUNTIME_OUTPUT_DIRECTORY
"${CMAKE_BINARY_DIR}/lib/Fuzzer/test")
-set_target_properties(LLVMFuzzer-DSO1 PROPERTIES LIBRARY_OUTPUT_DIRECTORY
- "${CMAKE_BINARY_DIR}/lib/Fuzzer/lib")
-set_target_properties(LLVMFuzzer-DSO2 PROPERTIES LIBRARY_OUTPUT_DIRECTORY
- "${CMAKE_BINARY_DIR}/lib/Fuzzer/lib")
+
+if(MSVC)
+ set_output_directory(LLVMFuzzer-DSO1
+ BINARY_DIR "${CMAKE_BINARY_DIR}/lib/Fuzzer/test"
+ LIBRARY_DIR "${CMAKE_BINARY_DIR}/lib/Fuzzer/test")
+ set_output_directory(LLVMFuzzer-DSO2
+ BINARY_DIR "${CMAKE_BINARY_DIR}/lib/Fuzzer/test"
+ LIBRARY_DIR "${CMAKE_BINARY_DIR}/lib/Fuzzer/test")
+else(MSVC)
+ set_output_directory(LLVMFuzzer-DSO1
+ LIBRARY_DIR "${CMAKE_BINARY_DIR}/lib/Fuzzer/lib")
+ set_output_directory(LLVMFuzzer-DSO2
+ LIBRARY_DIR "${CMAKE_BINARY_DIR}/lib/Fuzzer/lib")
+endif()
set(TestBinaries ${TestBinaries} LLVMFuzzer-DSOTest)
Modified: llvm/trunk/lib/Fuzzer/test/DSO1.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Fuzzer/test/DSO1.cpp?rev=292748&r1=292747&r2=292748&view=diff
==============================================================================
--- llvm/trunk/lib/Fuzzer/test/DSO1.cpp (original)
+++ llvm/trunk/lib/Fuzzer/test/DSO1.cpp Sat Jan 21 20:28:08 2017
@@ -2,7 +2,9 @@
// License. See LICENSE.TXT for details.
// Source code for a simple DSO.
-
+#ifdef _WIN32
+__declspec( dllexport )
+#endif
int DSO1(int a) {
if (a < 123456)
return 0;
Modified: llvm/trunk/lib/Fuzzer/test/DSO2.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Fuzzer/test/DSO2.cpp?rev=292748&r1=292747&r2=292748&view=diff
==============================================================================
--- llvm/trunk/lib/Fuzzer/test/DSO2.cpp (original)
+++ llvm/trunk/lib/Fuzzer/test/DSO2.cpp Sat Jan 21 20:28:08 2017
@@ -2,7 +2,9 @@
// License. See LICENSE.TXT for details.
// Source code for a simple DSO.
-
+#ifdef _WIN32
+__declspec( dllexport )
+#endif
int DSO2(int a) {
if (a < 3598235)
return 0;
More information about the llvm-commits
mailing list