From c12f11184682c55e10922665cea628332eb158eb Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Fri, 17 Jul 2020 18:29:47 -0700 Subject: [PATCH] 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 --- compiler-rt/lib/fuzzer/FuzzerDriver.cpp | 4 ++++ 1 file changed, 4 insertions(+) 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