Home | History | Annotate | Download | only in asan_tests
      1 ; Test of global redzone layout
      2 
      3 ; REQUIRES: allow_dump
      4 
      5 ; RUN: %p2i -i %s --args -threads=0 -fsanitize-address \
      6 ; RUN:     | FileCheck %s
      7 ; RUN: %p2i -i %s --args -verbose=global_init,inst -threads=0 \
      8 ; RUN:     -fsanitize-address | FileCheck --check-prefix=DUMP %s
      9 
     10 ; The array of redzones
     11 
     12 ; DUMP-LABEL: ========= Instrumented Globals =========
     13 ; DUMP: @__$rz_array = internal constant <{ i32, i32, i32, i32, i32, i32 }>
     14 ; DUMP:         <{ i32 ptrtoint ([32 x i8]* @__$rz0 to i32), i32 ptrtoint ([32 x i8]* @__$rz1 to i32),
     15 ; DUMP:         i32 ptrtoint ([32 x i8]* @__$rz2 to i32), i32 ptrtoint ([32 x i8]* @__$rz3 to i32),
     16 ; DUMP:         i32 ptrtoint ([32 x i8]* @__$rz4 to i32), i32 ptrtoint ([32 x i8]* @__$rz5 to i32) }>
     17 
     18 ; (SPACE is 32 ascii)
     19 ; DUMP-NEXT: @__$rz_sizes = internal constant <{ [4 x i8], [4 x i8], [4 x i8], [4 x i8], [4 x i8],
     20 ; DUMP-SAME: [4 x i8] }> <{ [4 x i8] c" \00\00\00", [4 x i8] c" \00\00\00", [4 x i8] c" \00\00\00",
     21 ; DUMP-SAME: [4 x i8] c" \00\00\00", [4 x i8] c" \00\00\00", [4 x i8] c" \00\00\00" }>
     22 
     23 ; CHECK-LABEL: .type   __$rz_array,%object
     24 ; CHECK-NEXT: .section   .rodata
     25 ; CHECK-NEXT: __$rz_array:
     26 ; CHECK-NEXT: .long   __$rz0
     27 ; CHECK-NEXT: .long   __$rz1
     28 ; CHECK-NEXT: .long   __$rz2
     29 ; CHECK-NEXT: .long   __$rz3
     30 ; CHECK-NEXT: .long   __$rz4
     31 ; CHECK-NEXT: .long   __$rz5
     32 ; CHECK-LABEL: .type   __$rz_sizes,%object
     33 ; CHECK-NEXT: .section   .rodata
     34 ; CHECK-NEXT: __$rz_sizes:
     35 ; CHECK-NEXT: .byte   32
     36 ; CHECK-NEXT: .byte   0
     37 ; CHECK-NEXT: .byte   0
     38 ; CHECK-NEXT: .byte   0
     39 ; CHECK-NEXT: .byte   32
     40 ; CHECK-NEXT: .byte   0
     41 ; CHECK-NEXT: .byte   0
     42 ; CHECK-NEXT: .byte   0
     43 ; CHECK-NEXT: .byte   32
     44 ; CHECK-NEXT: .byte   0
     45 ; CHECK-NEXT: .byte   0
     46 ; CHECK-NEXT: .byte   0
     47 ; CHECK-NEXT: .byte   32
     48 ; CHECK-NEXT: .byte   0
     49 ; CHECK-NEXT: .byte   0
     50 ; CHECK-NEXT: .byte   0
     51 ; CHECK-NEXT: .byte   32
     52 ; CHECK-NEXT: .byte   0
     53 ; CHECK-NEXT: .byte   0
     54 ; CHECK-NEXT: .byte   0
     55 ; CHECK-NEXT: .byte   32
     56 ; CHECK-NEXT: .byte   0
     57 ; CHECK-NEXT: .byte   0
     58 ; CHECK-NEXT: .byte   0
     59 
     60 ; A zero-initialized global
     61 @zeroInitGlobal = internal global [32 x i8] zeroinitializer
     62 
     63 ; DUMP-NEXT: @__$rz0 = internal global [32 x i8] zeroinitializer
     64 ; DUMP-NEXT: @zeroInitGlobal = internal global [32 x i8] zeroinitializer
     65 ; DUMP-NEXT: @__$rz1 = internal global [32 x i8] zeroinitializer
     66 
     67 ; CHECK-LABEL: .type   __$rz0,%object
     68 ; CHECK-NEXT: .section   .bss
     69 ; CHECK-NEXT: .p2align   5
     70 ; CHECK-NEXT: __$rz0:
     71 ; CHECK-LABEL: .type   zeroInitGlobal,%object
     72 ; CHECK-NEXT: .section   .bss
     73 ; CHECK-NEXT: .p2align   5
     74 ; CHECK-NEXT: zeroInitGlobal:
     75 ; CHECK-LABEL: .type   __$rz1,%object
     76 ; CHECK-NEXT: .section   .bss
     77 ; CHECK-NEXT: __$rz1:
     78 
     79 ; A constant-initialized global
     80 @constInitGlobal = internal constant [32 x i8] c"ABCDEFGHIJKLMNOPQRSTUVWXYZ012345"
     81 
     82 ; CHECK-LABEL: .type   __$rz2,%object
     83 ; CHECK-NEXT: .section   .rodata
     84 ; CHECK-NEXT: .p2align   5
     85 ; CHECK-NEXT: __$rz2:
     86 ; CHECK-LABEL: .type   constInitGlobal,%object
     87 ; CHECK-NEXT: .section   .rodata
     88 ; CHECK-NEXT: .p2align   5
     89 ; CHECK-NEXT: constInitGlobal:
     90 ; CHECK-LABEL: .type   __$rz3,%object
     91 ; CHECK-NEXT: .section   .rodata
     92 ; CHECK-NEXT: __$rz3:
     93 
     94 ; DUMP-NEXT: @__$rz2 = internal constant [32 x i8] c"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR"
     95 ; DUMP-NEXT: @constInitGlobal = internal constant [32 x i8] c"ABCDEFGHIJKLMNOPQRSTUVWXYZ012345"
     96 ; DUMP-NEXT: @__$rz3 = internal constant [32 x i8] c"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR"
     97 
     98 ; A regular global
     99 @regInitGlobal = internal global [32 x i8] c"ABCDEFGHIJKLMNOPQRSTUVWXYZ012345"
    100 
    101 ; DUMP-NEXT: @__$rz4 = internal global [32 x i8] c"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR"
    102 ; DUMP-NEXT: @regInitGlobal = internal global [32 x i8] c"ABCDEFGHIJKLMNOPQRSTUVWXYZ012345"
    103 ; DUMP-NEXT: @__$rz5 = internal global [32 x i8] c"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR"
    104 
    105 ; CHECK-LABEL: .type   __$rz4,%object
    106 ; CHECK-NEXT: .section   .data
    107 ; CHECK-NEXT: .p2align   5
    108 ; CHECK-NEXT: __$rz4:
    109 ; CHECK-LABEL: .type   regInitGlobal,%object
    110 ; CHECK-NEXT: .section   .data
    111 ; CHECK-NEXT: .p2align   5
    112 ; CHECK-NEXT: regInitGlobal:
    113 ; CHECK-LABEL: .type   __$rz5,%object
    114 ; CHECK-NEXT: .section   .data
    115 ; CHECK-NEXT: __$rz5:
    116 
    117 define internal void @func() {
    118   ret void
    119 }
    120 
    121 ; DUMP-LABEL: define internal void @func() {
    122 ; CHECK-LABEL: func: