1*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -t | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker// This is a long test that checks that the aliases created by weakref are 4*9880d681SAndroid Build Coastguard Worker// never in the symbol table and that the only case it causes a symbol to 5*9880d681SAndroid Build Coastguard Worker// be output as a weak undefined symbol is if that variable is not defined 6*9880d681SAndroid Build Coastguard Worker// in this file and all the references to it are done via the alias. 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Worker .weakref foo1, bar1 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Worker .weakref foo2, bar2 11*9880d681SAndroid Build Coastguard Worker .long bar2 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker .weakref foo3, bar3 14*9880d681SAndroid Build Coastguard Worker .long foo3 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Worker .weakref foo4, bar4 17*9880d681SAndroid Build Coastguard Worker .long foo4 18*9880d681SAndroid Build Coastguard Worker .long bar4 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker .weakref foo5, bar5 21*9880d681SAndroid Build Coastguard Worker .long bar5 22*9880d681SAndroid Build Coastguard Worker .long foo5 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Workerbar6: 25*9880d681SAndroid Build Coastguard Worker .weakref foo6, bar6 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Workerbar7: 28*9880d681SAndroid Build Coastguard Worker .weakref foo7, bar7 29*9880d681SAndroid Build Coastguard Worker .long bar7 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Workerbar8: 32*9880d681SAndroid Build Coastguard Worker .weakref foo8, bar8 33*9880d681SAndroid Build Coastguard Worker .long foo8 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Workerbar9: 36*9880d681SAndroid Build Coastguard Worker .weakref foo9, bar9 37*9880d681SAndroid Build Coastguard Worker .long foo9 38*9880d681SAndroid Build Coastguard Worker .long bar9 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Workerbar10: 41*9880d681SAndroid Build Coastguard Worker .global bar10 42*9880d681SAndroid Build Coastguard Worker .weakref foo10, bar10 43*9880d681SAndroid Build Coastguard Worker .long bar10 44*9880d681SAndroid Build Coastguard Worker .long foo10 45*9880d681SAndroid Build Coastguard Worker 46*9880d681SAndroid Build Coastguard Workerbar11: 47*9880d681SAndroid Build Coastguard Worker .global bar11 48*9880d681SAndroid Build Coastguard Worker .weakref foo11, bar11 49*9880d681SAndroid Build Coastguard Worker 50*9880d681SAndroid Build Coastguard Workerbar12: 51*9880d681SAndroid Build Coastguard Worker .global bar12 52*9880d681SAndroid Build Coastguard Worker .weakref foo12, bar12 53*9880d681SAndroid Build Coastguard Worker .long bar12 54*9880d681SAndroid Build Coastguard Worker 55*9880d681SAndroid Build Coastguard Workerbar13: 56*9880d681SAndroid Build Coastguard Worker .global bar13 57*9880d681SAndroid Build Coastguard Worker .weakref foo13, bar13 58*9880d681SAndroid Build Coastguard Worker .long foo13 59*9880d681SAndroid Build Coastguard Worker 60*9880d681SAndroid Build Coastguard Workerbar14: 61*9880d681SAndroid Build Coastguard Worker .global bar14 62*9880d681SAndroid Build Coastguard Worker .weakref foo14, bar14 63*9880d681SAndroid Build Coastguard Worker .long foo14 64*9880d681SAndroid Build Coastguard Worker .long bar14 65*9880d681SAndroid Build Coastguard Worker 66*9880d681SAndroid Build Coastguard Workerbar15: 67*9880d681SAndroid Build Coastguard Worker .global bar15 68*9880d681SAndroid Build Coastguard Worker .weakref foo15, bar15 69*9880d681SAndroid Build Coastguard Worker .long bar15 70*9880d681SAndroid Build Coastguard Worker .long foo15 71*9880d681SAndroid Build Coastguard Worker 72*9880d681SAndroid Build Coastguard Worker// CHECK: Symbols [ 73*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Symbol { 74*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Name: (0) 75*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Value: 0x0 76*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Size: 0 77*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Binding: Local (0x0) 78*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Type: None (0x0) 79*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Other: 0 80*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Section: Undefined (0x0) 81*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: } 82*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Symbol { 83*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Name: bar6 84*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Value: 0x18 85*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Size: 0 86*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Binding: Local 87*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Type: None 88*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Other: 0 89*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Section: .text 90*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: } 91*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Symbol { 92*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Name: bar7 93*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Value: 0x18 94*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Size: 0 95*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Binding: Local 96*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Type: None 97*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Other: 0 98*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Section: .text 99*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: } 100*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Symbol { 101*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Name: bar8 102*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Value: 0x1C 103*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Size: 0 104*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Binding: Local 105*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Type: None 106*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Other: 0 107*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Section: .text 108*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: } 109*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Symbol { 110*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Name: bar9 111*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Value: 0x20 112*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Size: 0 113*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Binding: Local 114*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Type: None 115*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Other: 0 116*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Section: .text 117*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: } 118*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Symbol { 119*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Name: (0) 120*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Value: 0x0 121*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Size: 0 122*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Binding: Local 123*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Type: Section 124*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Other: 0 125*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Section: .text 126*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: } 127*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Symbol { 128*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Name: bar10 129*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Value: 0x28 130*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Size: 0 131*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Binding: Global 132*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Type: None 133*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Other: 0 134*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Section: .text 135*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: } 136*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Symbol { 137*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Name: bar11 138*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Value: 0x30 139*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Size: 0 140*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Binding: Global 141*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Type: None 142*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Other: 0 143*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Section: .text 144*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: } 145*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Symbol { 146*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Name: bar12 147*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Value: 0x30 148*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Size: 0 149*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Binding: Global 150*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Type: None 151*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Other: 0 152*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Section: .text 153*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: } 154*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Symbol { 155*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Name: bar13 156*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Value: 0x34 157*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Size: 0 158*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Binding: Global 159*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Type: None 160*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Other: 0 161*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Section: .text 162*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: } 163*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Symbol { 164*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Name: bar14 165*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Value: 0x38 166*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Size: 0 167*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Binding: Global 168*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Type: None 169*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Other: 0 170*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Section: .text 171*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: } 172*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Symbol { 173*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Name: bar15 174*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Value: 0x40 175*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Size: 0 176*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Binding: Global 177*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Type: None 178*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Other: 0 179*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Section: .text 180*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: } 181*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Symbol { 182*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Name: bar2 183*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Value: 0x0 184*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Size: 0 185*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Binding: Global 186*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Type: None 187*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Other: 0 188*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Section: Undefined (0x0) 189*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: } 190*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Symbol { 191*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Name: bar3 192*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Value: 0x0 193*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Size: 0 194*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Binding: Weak 195*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Type: None 196*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Other: 0 197*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Section: Undefined (0x0) 198*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: } 199*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Symbol { 200*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Name: bar4 201*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Value: 0x0 202*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Size: 0 203*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Binding: Global 204*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Type: None 205*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Other: 0 206*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Section: Undefined (0x0) 207*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: } 208*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Symbol { 209*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Name: bar5 210*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Value: 0x0 211*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Size: 0 212*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Binding: Global 213*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Type: None 214*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Other: 0 215*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Section: Undefined (0x0) 216*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: } 217*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: ] 218