forked from OSchip/llvm-project
[libFuzzer] use __attribute__((target("popcnt"))) only on x86_64
llvm-svn: 279601
This commit is contained in:
parent
79f85b3b8f
commit
bceadcf1cd
|
@ -1,6 +1,6 @@
|
|||
set(LIBFUZZER_FLAGS_BASE "${CMAKE_CXX_FLAGS}")
|
||||
# Disable the coverage and sanitizer instrumentation for the fuzzer itself.
|
||||
set(CMAKE_CXX_FLAGS "${LIBFUZZER_FLAGS_BASE} -mpopcnt -fno-sanitize=all -fno-sanitize-coverage=edge,trace-cmp,indirect-calls,8bit-counters -Werror")
|
||||
set(CMAKE_CXX_FLAGS "${LIBFUZZER_FLAGS_BASE} -fno-sanitize=all -fno-sanitize-coverage=edge,trace-cmp,indirect-calls,8bit-counters -Werror")
|
||||
if( LLVM_USE_SANITIZE_COVERAGE )
|
||||
if(NOT "${LLVM_USE_SANITIZER}" STREQUAL "Address")
|
||||
message(FATAL_ERROR
|
||||
|
|
|
@ -26,10 +26,6 @@
|
|||
#include <unordered_set>
|
||||
#include <vector>
|
||||
|
||||
#include "FuzzerExtFunctions.h"
|
||||
#include "FuzzerInterface.h"
|
||||
#include "FuzzerValueBitMap.h"
|
||||
|
||||
// Platform detection.
|
||||
#ifdef __linux__
|
||||
#define LIBFUZZER_LINUX 1
|
||||
|
@ -41,6 +37,16 @@
|
|||
#error "Support for your platform has not been implemented"
|
||||
#endif
|
||||
|
||||
#ifdef __x86_64
|
||||
#define ATTRIBUTE_TARGET_POPCNT __attribute__((target("popcnt")))
|
||||
#else
|
||||
#define ATTRIBUTE_TARGET_POPCNT
|
||||
#endif
|
||||
|
||||
#include "FuzzerExtFunctions.h"
|
||||
#include "FuzzerInterface.h"
|
||||
#include "FuzzerValueBitMap.h"
|
||||
|
||||
namespace fuzzer {
|
||||
|
||||
typedef int (*UserCallback)(const uint8_t *Data, size_t Size);
|
||||
|
|
|
@ -574,7 +574,7 @@ static void AddValueForStrcmp(void *caller_pc, const char *s1, const char *s2,
|
|||
VP.AddValue((PC & 4095) | (LastSameByte << 12));
|
||||
}
|
||||
|
||||
__attribute__((target("popcnt")))
|
||||
ATTRIBUTE_TARGET_POPCNT
|
||||
static void AddValueForCmp(void *PCptr, uint64_t Arg1, uint64_t Arg2) {
|
||||
if (Arg1 == Arg2)
|
||||
return;
|
||||
|
|
|
@ -34,7 +34,7 @@ struct ValueBitMap {
|
|||
|
||||
// Merges 'Other' into 'this', clears 'Other',
|
||||
// returns the number of set bits in 'this'.
|
||||
__attribute__((target("popcnt")))
|
||||
ATTRIBUTE_TARGET_POPCNT
|
||||
size_t MergeFrom(ValueBitMap &Other) {
|
||||
uintptr_t Res = 0;
|
||||
for (size_t i = 0; i < kMapSizeInWords; i++) {
|
||||
|
|
Loading…
Reference in New Issue