mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-30 23:42:52 +01:00
1998a223f6
The globals being generated here were given the 'private' linkage type. However, this caused them to end up in different sections with the wrong prefix. E.g., they would be in the __TEXT,__const section with an 'L' prefix instead of an 'l' (lowercase ell) prefix. The problem is that the linker will eat a literal label with 'L'. If a weak symbol is then placed into the __TEXT,__const section near that literal, then it cannot distinguish between the literal and the weak symbol. Part of the problems here was introduced because the address sanitizer converted some C strings into constant initializers with trailing nuls. (Thus putting them in the __const section with the wrong prefix.) The others were variables that the address sanitizer created but simply had the wrong linkage type. llvm-svn: 187827
21 lines
763 B
LLVM
21 lines
763 B
LLVM
; This test checks that we are not instrumenting globals
|
|
; that we created ourselves.
|
|
; RUN: opt < %s -asan -S | FileCheck %s
|
|
|
|
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
|
|
target triple = "x86_64-unknown-linux-gnu"
|
|
|
|
define void @_Z3barv() uwtable sanitize_address {
|
|
entry:
|
|
%a = alloca i32, align 4
|
|
call void @_Z3fooPi(i32* %a)
|
|
ret void
|
|
}
|
|
|
|
declare void @_Z3fooPi(i32*)
|
|
; We create one global string constant for the stack frame above.
|
|
; It should have unnamed_addr and align 1.
|
|
; Make sure we don't create any other global constants.
|
|
; CHECK: = internal unnamed_addr constant{{.*}}align 1
|
|
; CHECK-NOT: = internal unnamed_addr constant
|