mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-07 21:20:18 +00:00
![Alexey Samsonov](/assets/img/avatar_default.png)
These sections contain pointers to function that should be invoked during startup/shutdown by __libc_csu_init and __libc_csu_fini. Instrumenting these globals will append redzone to them, which will be filled with zeroes. This will cause null pointer dereference at runtime. Merge ASan regression tests for globals that should be ignored by instrumentation pass. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247734 91177308-0d34-0410-b5e6-96231b3b80d8
36 lines
1.2 KiB
LLVM
36 lines
1.2 KiB
LLVM
; This test checks that we are not instrumenting unnecessary globals
|
|
; (llvm.metadata, init_array sections, and other llvm internal globals).
|
|
; RUN: opt < %s -asan -asan-module -S | FileCheck %s
|
|
|
|
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
|
target triple = "x86_64-unknown-linux-gnu"
|
|
|
|
; Function Attrs: nounwind uwtable
|
|
define internal void @_ZL3foov() #0 {
|
|
entry:
|
|
ret void
|
|
}
|
|
|
|
@__call_foo = global void ()* @_ZL3foov, section ".preinit_array", align 8
|
|
@__call_foo_2 = global void ()* @_ZL3foov, section ".init_array", align 8
|
|
@__call_foo_3 = global void ()* @_ZL3foov, section ".fini_array", align 8
|
|
|
|
; CHECK-NOT: asan_gen{{.*}}__call_foo
|
|
|
|
; Function Attrs: nounwind uwtable
|
|
define i32 @main() #0 {
|
|
entry:
|
|
%retval = alloca i32, align 4
|
|
store i32 0, i32* %retval, align 4
|
|
ret i32 0
|
|
}
|
|
|
|
@.str_noinst = private unnamed_addr constant [4 x i8] c"aaa\00", section "llvm.metadata"
|
|
@.str_noinst_prof = private unnamed_addr constant [4 x i8] c"aaa\00", section "__llvm_prf_data"
|
|
@.str_inst = private unnamed_addr constant [4 x i8] c"aaa\00"
|
|
|
|
; CHECK-NOT: {{asan_gen.*str_noinst}}
|
|
; CHECK-NOT: {{asan_gen.*str_noinst_prof}}
|
|
; CHECK: {{asan_gen.*str_inst}}
|
|
; CHECK: @asan.module_ctor
|