1;; RUN: llc -O0 -mtriple=armv7-linux-gnueabi -filetype=obj %s -o - | \ 2;; RUN: elf-dump | FileCheck -check-prefix=ARM %s 3 4;; RUN: llc -O0 -mtriple=thumbv7-linux-gnueabi -filetype=obj %s -o - | \ 5;; RUN: elf-dump --dump-section-data | FileCheck -check-prefix=TMB %s 6 7;; Ensure that if a jump table is generated that it has Mapping Symbols 8;; marking the data-in-code region. 9 10define void @foo(i32* %ptr) nounwind ssp { 11 %tmp = load i32* %ptr, align 4 12 switch i32 %tmp, label %default [ 13 i32 11, label %bb0 14 i32 10, label %bb1 15 i32 8, label %bb2 16 i32 4, label %bb3 17 i32 2, label %bb4 18 i32 6, label %bb5 19 i32 9, label %bb6 20 i32 15, label %bb7 21 i32 1, label %bb8 22 i32 3, label %bb9 23 i32 5, label %bb10 24 i32 30, label %bb11 25 i32 31, label %bb12 26 i32 13, label %bb13 27 i32 14, label %bb14 28 i32 20, label %bb15 29 i32 19, label %bb16 30 i32 17, label %bb17 31 i32 18, label %bb18 32 i32 21, label %bb19 33 i32 22, label %bb20 34 i32 16, label %bb21 35 i32 24, label %bb22 36 i32 25, label %bb23 37 i32 26, label %bb24 38 i32 27, label %bb25 39 i32 28, label %bb26 40 i32 23, label %bb27 41 i32 12, label %bb28 42 ] 43 44default: 45 br label %exit 46bb0: 47 br label %exit 48bb1: 49 br label %exit 50bb2: 51 br label %exit 52bb3: 53 br label %exit 54bb4: 55 br label %exit 56bb5: 57 br label %exit 58bb6: 59 br label %exit 60bb7: 61 br label %exit 62bb8: 63 br label %exit 64bb9: 65 br label %exit 66bb10: 67 br label %exit 68bb11: 69 br label %exit 70bb12: 71 br label %exit 72bb13: 73 br label %exit 74bb14: 75 br label %exit 76bb15: 77 br label %exit 78bb16: 79 br label %exit 80bb17: 81 br label %exit 82bb18: 83 br label %exit 84bb19: 85 br label %exit 86bb20: 87 br label %exit 88bb21: 89 br label %exit 90bb22: 91 br label %exit 92bb23: 93 br label %exit 94bb24: 95 br label %exit 96bb25: 97 br label %exit 98bb26: 99 br label %exit 100bb27: 101 br label %exit 102bb28: 103 br label %exit 104 105 106exit: 107 108 ret void 109} 110 111;; ARM: # Symbol 2 112;; ARM-NEXT: $a 113;; ARM-NEXT: 'st_value', 0x00000000 114;; ARM-NEXT: 'st_size', 0x00000000 115;; ARM-NEXT: 'st_bind', 0x0 116;; ARM-NEXT: 'st_type', 0x0 117;; ARM-NEXT: 'st_other' 118;; ARM-NEXT: 'st_shndx', [[MIXED_SECT:0x[0-9a-f]+]] 119 120;; ARM: # Symbol 3 121;; ARM-NEXT: $a 122;; ARM-NEXT: 'st_value', 0x000000ac 123;; ARM-NEXT: 'st_size', 0x00000000 124;; ARM-NEXT: 'st_bind', 0x0 125;; ARM-NEXT: 'st_type', 0x0 126;; ARM-NEXT: 'st_other' 127;; ARM-NEXT: 'st_shndx', [[MIXED_SECT]] 128 129;; ARM: # Symbol 4 130;; ARM-NEXT: $d 131;; ARM-NEXT: 'st_value', 0x00000000 132;; ARM-NEXT: 'st_size', 0x00000000 133;; ARM-NEXT: 'st_bind', 0x0 134;; ARM-NEXT: 'st_type', 0x0 135 136;; ARM: # Symbol 5 137;; ARM-NEXT: $d 138;; ARM-NEXT: 'st_value', 0x00000030 139;; ARM-NEXT: 'st_size', 0x00000000 140;; ARM-NEXT: 'st_bind', 0x0 141;; ARM-NEXT: 'st_type', 0x0 142;; ARM-NEXT: 'st_other' 143;; ARM-NEXT: 'st_shndx', [[MIXED_SECT]] 144 145;; ARM-NOT: ${{[atd]}} 146 147;; TMB: # Symbol 3 148;; TMB-NEXT: $d 149;; TMB-NEXT: 'st_value', 0x00000016 150;; TMB-NEXT: 'st_size', 0x00000000 151;; TMB-NEXT: 'st_bind', 0x0 152;; TMB-NEXT: 'st_type', 0x0 153;; TMB-NEXT: 'st_other' 154;; TMB-NEXT: 'st_shndx', [[MIXED_SECT:0x[0-9a-f]+]] 155 156;; TMB: # Symbol 4 157;; TMB-NEXT: $t 158;; TMB-NEXT: 'st_value', 0x00000000 159;; TMB-NEXT: 'st_size', 0x00000000 160;; TMB-NEXT: 'st_bind', 0x0 161;; TMB-NEXT: 'st_type', 0x0 162;; TMB-NEXT: 'st_other' 163;; TMB-NEXT: 'st_shndx', [[MIXED_SECT]] 164 165;; TMB: # Symbol 5 166;; TMB-NEXT: $t 167;; TMB-NEXT: 'st_value', 0x00000036 168;; TMB-NEXT: 'st_size', 0x00000000 169;; TMB-NEXT: 'st_bind', 0x0 170;; TMB-NEXT: 'st_type', 0x0 171;; TMB-NEXT: 'st_other' 172;; TMB-NEXT: 'st_shndx', [[MIXED_SECT]] 173 174 175;; TMB-NOT: ${{[atd]}} 176 177