Corrected __libfuzzer_is_present symbol inclusion for MSVC x86 32-bit
authorVitaly Buka <vitalybuka@google.com>
Sat, 18 Jul 2020 01:29:47 +0000 (18:29 -0700)
committerVitaly Buka <vitalybuka@google.com>
Sat, 18 Jul 2020 01:29:47 +0000 (18:29 -0700)
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

index a847c76..00a33a4 100644 (file)
 // 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