[compiler-rt] c12f111 - Corrected __libfuzzer_is_present symbol inclusion for MSVC x86 32-bit

Vitaly Buka via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 17 18:30:14 PDT 2020


Author: Vitaly Buka
Date: 2020-07-17T18:29:47-07:00
New Revision: c12f11184682c55e10922665cea628332eb158eb

URL: https://github.com/llvm/llvm-project/commit/c12f11184682c55e10922665cea628332eb158eb
DIFF: https://github.com/llvm/llvm-project/commit/c12f11184682c55e10922665cea628332eb158eb.diff

LOG: Corrected __libfuzzer_is_present symbol inclusion for MSVC x86 32-bit

The incorrect symbol will cause linking failures for 32-bit targets:

clang_rt.fuzzer-i386.lib(FuzzerDriver.obj) : error LNK2001: unresolved external symbol __libfuzzer_is_present

Verified no longer fails to link with this change for 32-bit and still succeeds for 64-bit MSVC.

Reviewed By: vitalybuka

Differential Revision: https://reviews.llvm.org/D83594

Added: 
    

Modified: 
    compiler-rt/lib/fuzzer/FuzzerDriver.cpp

Removed: 
    


################################################################################
diff  --git a/compiler-rt/lib/fuzzer/FuzzerDriver.cpp b/compiler-rt/lib/fuzzer/FuzzerDriver.cpp
index a847c76e292d..00a33a413d2f 100644
--- a/compiler-rt/lib/fuzzer/FuzzerDriver.cpp
+++ b/compiler-rt/lib/fuzzer/FuzzerDriver.cpp
@@ -33,7 +33,11 @@
 // binary can test for its existence.
 #if LIBFUZZER_MSVC
 extern "C" void __libfuzzer_is_present() {}
+#if defined(_M_IX86) || defined(__i386__)
+#pragma comment(linker, "/include:___libfuzzer_is_present")
+#else
 #pragma comment(linker, "/include:__libfuzzer_is_present")
+#endif
 #else
 extern "C" __attribute__((used)) void __libfuzzer_is_present() {}
 #endif  // LIBFUZZER_MSVC


        


More information about the llvm-commits mailing list