From d96b0c14fbd9932015c15737ca215f58ac3fe1b5 Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Fri, 18 Mar 2016 14:19:19 +0000 Subject: [PATCH] [Fuzzer] Guard no_sanitize_memory attributes behind __has_feature. Otherwise GCC fails to build it because it doesn't know the attribute. llvm-svn: 263787 --- llvm/lib/Fuzzer/FuzzerLoop.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/llvm/lib/Fuzzer/FuzzerLoop.cpp b/llvm/lib/Fuzzer/FuzzerLoop.cpp index 3bc5f93..7f3ffd0 100644 --- a/llvm/lib/Fuzzer/FuzzerLoop.cpp +++ b/llvm/lib/Fuzzer/FuzzerLoop.cpp @@ -20,6 +20,14 @@ #endif #endif +#define NO_SANITIZE_MEMORY +#if defined(__has_feature) +#if __has_feature(memory_sanitizer) +#undef NO_SANITIZE_MEMORY +#define NO_SANITIZE_MEMORY __attribute__((no_sanitize_memory)) +#endif +#endif + extern "C" { // Re-declare some of the sanitizer functions as "weak" so that // libFuzzer can be linked w/o the sanitizers and sanitizer-coverage @@ -92,7 +100,7 @@ void Fuzzer::DumpCurrentUnit(const char *Prefix) { {CurrentUnitData, CurrentUnitData + CurrentUnitSize}, Prefix); } -__attribute__((no_sanitize_memory)) +NO_SANITIZE_MEMORY void Fuzzer::DeathCallback() { if (!CurrentUnitSize) return; Printf("DEATH:\n"); @@ -134,7 +142,7 @@ void Fuzzer::InterruptCallback() { _Exit(0); // Stop right now, don't perform any at-exit actions. } -__attribute__((no_sanitize_memory)) +NO_SANITIZE_MEMORY void Fuzzer::AlarmCallback() { assert(Options.UnitTimeoutSec > 0); if (!CurrentUnitSize) -- 2.7.4