mirror of
https://github.com/intel/llvm.git
synced 2026-01-18 16:35:17 +08:00
Revert r298174, r298173, r298169, r298159.
Revert "Fix sanitizer tests with LLVM_TOOL_LLD_BUILD=OFF." Revert "[asan] Remove gc-sections test with bfd." Revert "[asan] Disable globals-gc test with ld.bfd." Revert "[asan] Fix dead stripping of globals on Linux (compiler-rt)" OOM in gold linker. llvm-svn: 298287
This commit is contained in:
@@ -253,12 +253,12 @@ else()
|
||||
endif()
|
||||
|
||||
set(COMPILER_RT_LLD_PATH ${LLVM_MAIN_SRC_DIR}/tools/lld)
|
||||
if(EXISTS ${COMPILER_RT_LLD_PATH}/ AND LLVM_TOOL_LLD_BUILD)
|
||||
set(COMPILER_RT_HAS_LLD TRUE)
|
||||
if(EXISTS ${COMPILER_RT_LLD_PATH}/)
|
||||
set(COMPILER_RT_HAS_LLD_SOURCES TRUE)
|
||||
else()
|
||||
set(COMPILER_RT_HAS_LLD FALSE)
|
||||
set(COMPILER_RT_HAS_LLD_SOURCES FALSE)
|
||||
endif()
|
||||
pythonize_bool(COMPILER_RT_HAS_LLD)
|
||||
pythonize_bool(COMPILER_RT_HAS_LLD_SOURCES)
|
||||
|
||||
add_subdirectory(lib)
|
||||
|
||||
|
||||
@@ -332,26 +332,6 @@ void __asan_unregister_image_globals(uptr *flag) {
|
||||
*flag = 0;
|
||||
}
|
||||
|
||||
void __asan_register_elf_globals(uptr *flag, void *start, void *stop) {
|
||||
if (*flag) return;
|
||||
if (!start) return;
|
||||
CHECK_EQ(0, ((uptr)stop - (uptr)start) % sizeof(__asan_global));
|
||||
__asan_global *globals_start = (__asan_global*)start;
|
||||
__asan_global *globals_stop = (__asan_global*)stop;
|
||||
__asan_register_globals(globals_start, globals_stop - globals_start);
|
||||
*flag = 1;
|
||||
}
|
||||
|
||||
void __asan_unregister_elf_globals(uptr *flag, void *start, void *stop) {
|
||||
if (!*flag) return;
|
||||
if (!start) return;
|
||||
CHECK_EQ(0, ((uptr)stop - (uptr)start) % sizeof(__asan_global));
|
||||
__asan_global *globals_start = (__asan_global*)start;
|
||||
__asan_global *globals_stop = (__asan_global*)stop;
|
||||
__asan_unregister_globals(globals_start, globals_stop - globals_start);
|
||||
*flag = 0;
|
||||
}
|
||||
|
||||
// Register an array of globals.
|
||||
void __asan_register_globals(__asan_global *globals, uptr n) {
|
||||
if (!flags()->report_globals) return;
|
||||
|
||||
@@ -64,7 +64,6 @@ INTERFACE_FUNCTION(__asan_poison_stack_memory)
|
||||
INTERFACE_FUNCTION(__asan_print_accumulated_stats)
|
||||
INTERFACE_FUNCTION(__asan_region_is_poisoned)
|
||||
INTERFACE_FUNCTION(__asan_register_globals)
|
||||
INTERFACE_FUNCTION(__asan_register_elf_globals)
|
||||
INTERFACE_FUNCTION(__asan_register_image_globals)
|
||||
INTERFACE_FUNCTION(__asan_report_error)
|
||||
INTERFACE_FUNCTION(__asan_report_exp_load1)
|
||||
@@ -150,7 +149,6 @@ INTERFACE_FUNCTION(__asan_unpoison_intra_object_redzone)
|
||||
INTERFACE_FUNCTION(__asan_unpoison_memory_region)
|
||||
INTERFACE_FUNCTION(__asan_unpoison_stack_memory)
|
||||
INTERFACE_FUNCTION(__asan_unregister_globals)
|
||||
INTERFACE_FUNCTION(__asan_unregister_elf_globals)
|
||||
INTERFACE_FUNCTION(__asan_unregister_image_globals)
|
||||
INTERFACE_FUNCTION(__asan_version_mismatch_check_v8)
|
||||
INTERFACE_FUNCTION(__sanitizer_finish_switch_fiber)
|
||||
|
||||
@@ -67,11 +67,6 @@ extern "C" {
|
||||
SANITIZER_INTERFACE_ATTRIBUTE
|
||||
void __asan_unregister_image_globals(uptr *flag);
|
||||
|
||||
SANITIZER_INTERFACE_ATTRIBUTE
|
||||
void __asan_register_elf_globals(uptr *flag, void *start, void *stop);
|
||||
SANITIZER_INTERFACE_ATTRIBUTE
|
||||
void __asan_unregister_elf_globals(uptr *flag, void *start, void *stop);
|
||||
|
||||
// These two functions should be called by the instrumented code.
|
||||
// 'globals' is an array of structures describing 'n' globals.
|
||||
SANITIZER_INTERFACE_ATTRIBUTE
|
||||
|
||||
@@ -16,7 +16,7 @@ endmacro()
|
||||
set(ASAN_TEST_DEPS ${SANITIZER_COMMON_LIT_TEST_DEPS})
|
||||
if(NOT COMPILER_RT_STANDALONE_BUILD)
|
||||
list(APPEND ASAN_TEST_DEPS asan)
|
||||
if(NOT APPLE AND COMPILER_RT_HAS_LLD)
|
||||
if(WIN32 AND COMPILER_RT_HAS_LLD_SOURCES)
|
||||
list(APPEND ASAN_TEST_DEPS
|
||||
lld
|
||||
)
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
// Test that gc-sections-friendly instrumentation of globals does not introduce
|
||||
// false negatives with the BFD linker.
|
||||
// RUN: %clangxx_asan -fuse-ld=bfd -Wl,-gc-sections -ffunction-sections -fdata-sections -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s
|
||||
|
||||
#include <string.h>
|
||||
int main(int argc, char **argv) {
|
||||
static char XXX[10];
|
||||
static char YYY[10];
|
||||
static char ZZZ[10];
|
||||
memset(XXX, 0, 10);
|
||||
memset(YYY, 0, 10);
|
||||
memset(ZZZ, 0, 10);
|
||||
int res = YYY[argc * 10]; // BOOOM
|
||||
// CHECK: {{READ of size 1 at}}
|
||||
// CHECK: {{located 0 bytes to the right of global variable}}
|
||||
res += XXX[argc] + ZZZ[argc];
|
||||
return res;
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
// Test that gc-sections-friendly instrumentation of globals does not introduce
|
||||
// false negatives with the LLD linker.
|
||||
// RUN: %clangxx_asan -fuse-ld=lld -Wl,-gc-sections -ffunction-sections -fdata-sections -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s
|
||||
// REQUIRES: lld
|
||||
|
||||
#include <string.h>
|
||||
int main(int argc, char **argv) {
|
||||
static char XXX[10];
|
||||
static char YYY[10];
|
||||
static char ZZZ[10];
|
||||
memset(XXX, 0, 10);
|
||||
memset(YYY, 0, 10);
|
||||
memset(ZZZ, 0, 10);
|
||||
int res = YYY[argc * 10]; // BOOOM
|
||||
// CHECK: {{READ of size 1 at}}
|
||||
// CHECK: {{located 0 bytes to the right of global variable}}
|
||||
res += XXX[argc] + ZZZ[argc];
|
||||
return res;
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
// RUN: %clangxx_asan %s -o %t -Wl,--gc-sections -fuse-ld=lld -ffunction-sections -fdata-sections -mllvm -asan-globals=0
|
||||
// RUN: %clangxx_asan %s -o %t -Wl,--gc-sections -fuse-ld=lld -ffunction-sections -fdata-sections -mllvm -asan-globals=1
|
||||
|
||||
// https://code.google.com/p/address-sanitizer/issues/detail?id=260
|
||||
// REQUIRES: lld
|
||||
|
||||
int undefined();
|
||||
|
||||
// On i386 clang adds --export-dynamic when linking with ASan, which adds all
|
||||
// non-hidden globals to GC roots.
|
||||
__attribute__((visibility("hidden"))) int (*unused)() = undefined;
|
||||
|
||||
int main() {
|
||||
return 0;
|
||||
}
|
||||
13
compiler-rt/test/asan/TestCases/Linux/globals-gc-sections.cc
Normal file
13
compiler-rt/test/asan/TestCases/Linux/globals-gc-sections.cc
Normal file
@@ -0,0 +1,13 @@
|
||||
// RUN: %clangxx_asan %s -o %t -Wl,--gc-sections -ffunction-sections -mllvm -asan-globals=0
|
||||
// RUN: %clangxx_asan %s -o %t -Wl,--gc-sections -ffunction-sections -mllvm -asan-globals=1
|
||||
|
||||
// https://code.google.com/p/address-sanitizer/issues/detail?id=260
|
||||
// XFAIL: *
|
||||
|
||||
int undefined();
|
||||
|
||||
int (*unused)() = undefined;
|
||||
|
||||
int main() {
|
||||
return 0;
|
||||
}
|
||||
@@ -34,7 +34,7 @@ if(NOT COMPILER_RT_STANDALONE_BUILD)
|
||||
LTO
|
||||
)
|
||||
endif()
|
||||
if(WIN32 AND COMPILER_RT_HAS_LLD)
|
||||
if(WIN32 AND COMPILER_RT_HAS_LLD_SOURCES)
|
||||
list(APPEND CFI_TEST_DEPS
|
||||
lld
|
||||
)
|
||||
|
||||
@@ -26,7 +26,7 @@ set_default("compiler_rt_debug", @COMPILER_RT_DEBUG_PYBOOL@)
|
||||
set_default("compiler_rt_libdir", "@COMPILER_RT_LIBRARY_OUTPUT_DIR@")
|
||||
set_default("emulator", "@COMPILER_RT_EMULATOR@")
|
||||
set_default("sanitizer_can_use_cxxabi", @SANITIZER_CAN_USE_CXXABI_PYBOOL@)
|
||||
set_default("has_lld", @COMPILER_RT_HAS_LLD_PYBOOL@)
|
||||
set_default("has_lld", @COMPILER_RT_HAS_LLD_SOURCES_PYBOOL@)
|
||||
set_default("can_symbolize", @CAN_SYMBOLIZE@)
|
||||
config.available_features.add('target-is-%s' % config.target_arch)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user