forked from OSchip/llvm-project
[asan] Nuke ASAN_FLEXIBLE_MAPPING_AND_OFFSET.
llvm-svn: 199370
This commit is contained in:
parent
4df2363a23
commit
e259b658e4
|
|
@ -38,16 +38,13 @@ set(ASAN_COMMON_DEFINITIONS
|
|||
|
||||
if(ANDROID)
|
||||
list(APPEND ASAN_COMMON_DEFINITIONS
|
||||
ASAN_FLEXIBLE_MAPPING_AND_OFFSET=0
|
||||
ASAN_NEEDS_SEGV=0
|
||||
ASAN_LOW_MEMORY=1)
|
||||
elseif(MSVC)
|
||||
list(APPEND ASAN_COMMON_DEFINITIONS
|
||||
ASAN_FLEXIBLE_MAPPING_AND_OFFSET=0
|
||||
ASAN_NEEDS_SEGV=0)
|
||||
else()
|
||||
list(APPEND ASAN_COMMON_DEFINITIONS
|
||||
ASAN_FLEXIBLE_MAPPING_AND_OFFSET=1
|
||||
ASAN_NEEDS_SEGV=1)
|
||||
endif()
|
||||
|
||||
|
|
|
|||
|
|
@ -44,12 +44,6 @@
|
|||
# define ASAN_HAS_EXCEPTIONS 1
|
||||
#endif
|
||||
|
||||
// If set, asan uses the values of SHADOW_SCALE and SHADOW_OFFSET
|
||||
// provided by the instrumented objects. Otherwise constants are used.
|
||||
#ifndef ASAN_FLEXIBLE_MAPPING_AND_OFFSET
|
||||
# define ASAN_FLEXIBLE_MAPPING_AND_OFFSET 0
|
||||
#endif
|
||||
|
||||
// If set, values like allocator chunk size, as well as defaults for some flags
|
||||
// will be changed towards less memory overhead.
|
||||
#ifndef ASAN_LOW_MEMORY
|
||||
|
|
|
|||
|
|
@ -63,31 +63,24 @@ static const u64 kDefaultShadowOffset64 = 1ULL << 44;
|
|||
static const u64 kDefaultShort64bitShadowOffset = 0x7FFF8000; // < 2G.
|
||||
static const u64 kMIPS32_ShadowOffset32 = 0x0aaa8000;
|
||||
|
||||
#if ASAN_FLEXIBLE_MAPPING_AND_OFFSET == 1
|
||||
extern "C" SANITIZER_INTERFACE_ATTRIBUTE uptr __asan_mapping_scale;
|
||||
extern "C" SANITIZER_INTERFACE_ATTRIBUTE uptr __asan_mapping_offset;
|
||||
# define SHADOW_SCALE (__asan_mapping_scale)
|
||||
# define SHADOW_OFFSET (__asan_mapping_offset)
|
||||
#define SHADOW_SCALE kDefaultShadowScale
|
||||
#if SANITIZER_ANDROID
|
||||
# define SHADOW_OFFSET (0)
|
||||
#else
|
||||
# define SHADOW_SCALE kDefaultShadowScale
|
||||
# if SANITIZER_ANDROID
|
||||
# define SHADOW_OFFSET (0)
|
||||
# else
|
||||
# if SANITIZER_WORDSIZE == 32
|
||||
# if defined(__mips__)
|
||||
# define SHADOW_OFFSET kMIPS32_ShadowOffset32
|
||||
# else
|
||||
# define SHADOW_OFFSET kDefaultShadowOffset32
|
||||
# endif
|
||||
# if SANITIZER_WORDSIZE == 32
|
||||
# if defined(__mips__)
|
||||
# define SHADOW_OFFSET kMIPS32_ShadowOffset32
|
||||
# else
|
||||
# if SANITIZER_MAC
|
||||
# define SHADOW_OFFSET kDefaultShadowOffset64
|
||||
# else
|
||||
# define SHADOW_OFFSET kDefaultShort64bitShadowOffset
|
||||
# endif
|
||||
# define SHADOW_OFFSET kDefaultShadowOffset32
|
||||
# endif
|
||||
# else
|
||||
# if SANITIZER_MAC
|
||||
# define SHADOW_OFFSET kDefaultShadowOffset64
|
||||
# else
|
||||
# define SHADOW_OFFSET kDefaultShort64bitShadowOffset
|
||||
# endif
|
||||
# endif
|
||||
#endif // ASAN_FLEXIBLE_MAPPING_AND_OFFSET
|
||||
#endif
|
||||
|
||||
#define SHADOW_GRANULARITY (1ULL << SHADOW_SCALE)
|
||||
#define MEM_TO_SHADOW(mem) (((mem) >> SHADOW_SCALE) + (SHADOW_OFFSET))
|
||||
|
|
|
|||
|
|
@ -1,20 +0,0 @@
|
|||
// RUN: %clangxx_asan -O0 %s -fsanitize-address-zero-base-shadow -pie -o %t && %t 2>&1 | FileCheck %s
|
||||
|
||||
// Zero-base shadow only works on x86_64 and i386.
|
||||
// REQUIRES: x86_64-supported-target
|
||||
|
||||
// A regression test for time(NULL), which caused ASan to crash in the
|
||||
// zero-based shadow mode on Linux.
|
||||
// FIXME: this test does not work on Darwin, because the code pages of the
|
||||
// executable interleave with the zero-based shadow.
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
|
||||
int main() {
|
||||
time_t t = time(NULL);
|
||||
fprintf(stderr, "Time: %s\n", ctime(&t)); // NOLINT
|
||||
// CHECK: {{Time: .* .* .*}}
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
// RUN: %clangxx_asan -O0 -fsanitize-address-zero-base-shadow -fPIE -pie %s -o %t
|
||||
// RUN: not %t 2>&1 | FileCheck %s
|
||||
// RUN: %clangxx_asan -O1 -fsanitize-address-zero-base-shadow -fPIE -pie %s -o %t
|
||||
// RUN: not %t 2>&1 | FileCheck %s
|
||||
// RUN: %clangxx_asan -O2 -fsanitize-address-zero-base-shadow -fPIE -pie %s -o %t
|
||||
// RUN: not %t 2>&1 | FileCheck %s
|
||||
|
||||
// Zero-base shadow only works on x86_64 and i386.
|
||||
// REQUIRES: i386-supported-target, asan-32-bits
|
||||
|
||||
#include <string.h>
|
||||
int main(int argc, char **argv) {
|
||||
char x[10];
|
||||
memset(x, 0, 10);
|
||||
int res = x[argc * 10]; // BOOOM
|
||||
// CHECK: {{READ of size 1 at 0x.* thread T0}}
|
||||
// CHECK: {{ #0 0x.* in main .*zero-base-shadow32.cc:}}[[@LINE-2]]
|
||||
// CHECK: {{Address 0x.* is .* frame}}
|
||||
// CHECK: main
|
||||
|
||||
// Check that shadow for stack memory occupies lower part of address space.
|
||||
// CHECK: =>0x1
|
||||
return res;
|
||||
}
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
// RUN: %clangxx_asan -O0 -fsanitize-address-zero-base-shadow -fPIE -pie %s -o %t
|
||||
// RUN: not %t 2>&1 | FileCheck %s
|
||||
// RUN: %clangxx_asan -O1 -fsanitize-address-zero-base-shadow -fPIE -pie %s -o %t
|
||||
// RUN: not %t 2>&1 | FileCheck %s
|
||||
// RUN: %clangxx_asan -O2 -fsanitize-address-zero-base-shadow -fPIE -pie %s -o %t
|
||||
// RUN: not %t 2>&1 | FileCheck %s
|
||||
|
||||
// Zero-base shadow only works on x86_64 and i386.
|
||||
// REQUIRES: x86_64-supported-target, asan-64-bits
|
||||
|
||||
#include <string.h>
|
||||
int main(int argc, char **argv) {
|
||||
char x[10];
|
||||
memset(x, 0, 10);
|
||||
int res = x[argc * 10]; // BOOOM
|
||||
// CHECK: {{READ of size 1 at 0x.* thread T0}}
|
||||
// CHECK: {{ #0 0x.* in main .*zero-base-shadow64.cc:}}[[@LINE-2]]
|
||||
// CHECK: {{Address 0x.* is .* frame}}
|
||||
// CHECK: main
|
||||
|
||||
// Check that shadow for stack memory occupies lower part of address space.
|
||||
// CHECK: =>0x0f
|
||||
return res;
|
||||
}
|
||||
|
|
@ -50,11 +50,9 @@ list(APPEND ASAN_UNITTEST_COMMON_CFLAGS
|
|||
-DASAN_UAR=0)
|
||||
if(ANDROID)
|
||||
list(APPEND ASAN_UNITTEST_COMMON_CFLAGS
|
||||
-DASAN_FLEXIBLE_MAPPING_AND_OFFSET=0
|
||||
-DASAN_NEEDS_SEGV=0)
|
||||
else()
|
||||
list(APPEND ASAN_UNITTEST_COMMON_CFLAGS
|
||||
-DASAN_FLEXIBLE_MAPPING_AND_OFFSET=1
|
||||
-DASAN_NEEDS_SEGV=1)
|
||||
endif()
|
||||
|
||||
|
|
|
|||
|
|
@ -25,34 +25,6 @@
|
|||
#include <vector>
|
||||
#include <limits>
|
||||
|
||||
#if ASAN_FLEXIBLE_MAPPING_AND_OFFSET == 1
|
||||
// Manually set correct ASan mapping scale and offset, as they won't be
|
||||
// exported from instrumented sources (there are none).
|
||||
# define FLEXIBLE_SHADOW_SCALE kDefaultShadowScale
|
||||
# if SANITIZER_ANDROID
|
||||
# define FLEXIBLE_SHADOW_OFFSET (0)
|
||||
# else
|
||||
# if SANITIZER_WORDSIZE == 32
|
||||
# if defined(__mips__)
|
||||
# define FLEXIBLE_SHADOW_OFFSET kMIPS32_ShadowOffset32
|
||||
# else
|
||||
# define FLEXIBLE_SHADOW_OFFSET kDefaultShadowOffset32
|
||||
# endif
|
||||
# else
|
||||
# if defined(__powerpc64__)
|
||||
# define FLEXIBLE_SHADOW_OFFSET kPPC64_ShadowOffset64
|
||||
# elif SANITIZER_MAC
|
||||
# define FLEXIBLE_SHADOW_OFFSET kDefaultShadowOffset64
|
||||
# else
|
||||
# define FLEXIBLE_SHADOW_OFFSET kDefaultShort64bitShadowOffset
|
||||
# endif
|
||||
# endif
|
||||
# endif
|
||||
SANITIZER_INTERFACE_ATTRIBUTE uptr __asan_mapping_scale = FLEXIBLE_SHADOW_SCALE;
|
||||
SANITIZER_INTERFACE_ATTRIBUTE uptr __asan_mapping_offset =
|
||||
FLEXIBLE_SHADOW_OFFSET;
|
||||
#endif // ASAN_FLEXIBLE_MAPPING_AND_OFFSET
|
||||
|
||||
extern "C" {
|
||||
// Set specific ASan options for uninstrumented unittest.
|
||||
const char* __asan_default_options() {
|
||||
|
|
|
|||
|
|
@ -150,16 +150,14 @@ CFLAGS.10.4 := $(CFLAGS) $(OSX_DEPLOYMENT_ARGS)
|
|||
CFLAGS.asan_osx_dynamic := \
|
||||
$(CFLAGS) -mmacosx-version-min=10.6 -fno-builtin \
|
||||
-gline-tables-only \
|
||||
-DMAC_INTERPOSE_FUNCTIONS=1 \
|
||||
-DASAN_FLEXIBLE_MAPPING_AND_OFFSET=1
|
||||
-DMAC_INTERPOSE_FUNCTIONS=1
|
||||
|
||||
CFLAGS.asan_iossim_dynamic := \
|
||||
$(CFLAGS) -mios-simulator-version-min=7.0 \
|
||||
-isysroot $(IOSSIM_SDK_PATH) \
|
||||
-fno-builtin \
|
||||
-gline-tables-only \
|
||||
-DMAC_INTERPOSE_FUNCTIONS=1 \
|
||||
-DASAN_FLEXIBLE_MAPPING_AND_OFFSET=1
|
||||
-DMAC_INTERPOSE_FUNCTIONS=1
|
||||
|
||||
CFLAGS.ubsan_osx := $(CFLAGS) -mmacosx-version-min=10.6 -fno-builtin
|
||||
|
||||
|
|
|
|||
|
|
@ -94,10 +94,8 @@ CFLAGS.profile-i386 := $(CFLAGS) -m32
|
|||
CFLAGS.profile-x86_64 := $(CFLAGS) -m64
|
||||
CFLAGS.san-i386 := $(CFLAGS) -m32 $(SANITIZER_CFLAGS) -fno-rtti
|
||||
CFLAGS.san-x86_64 := $(CFLAGS) -m64 $(SANITIZER_CFLAGS) -fno-rtti
|
||||
CFLAGS.asan-i386 := $(CFLAGS) -m32 $(SANITIZER_CFLAGS) -fno-rtti \
|
||||
-DASAN_FLEXIBLE_MAPPING_AND_OFFSET=1
|
||||
CFLAGS.asan-x86_64 := $(CFLAGS) -m64 $(SANITIZER_CFLAGS) -fno-rtti \
|
||||
-DASAN_FLEXIBLE_MAPPING_AND_OFFSET=1
|
||||
CFLAGS.asan-i386 := $(CFLAGS) -m32 $(SANITIZER_CFLAGS) -fno-rtti
|
||||
CFLAGS.asan-x86_64 := $(CFLAGS) -m64 $(SANITIZER_CFLAGS) -fno-rtti
|
||||
CFLAGS.tsan-x86_64 := $(CFLAGS) -m64 $(SANITIZER_CFLAGS) -fno-rtti
|
||||
CFLAGS.msan-x86_64 := $(CFLAGS) -m64 $(SANITIZER_CFLAGS) -fno-rtti
|
||||
CFLAGS.ubsan-i386 := $(CFLAGS) -m32 $(SANITIZER_CFLAGS) -fno-rtti
|
||||
|
|
|
|||
Loading…
Reference in New Issue