1*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc %s -triple=thumbv7-linux-gnueabi \ 2*9880d681SAndroid Build Coastguard Worker// RUN: -filetype=obj -o - | llvm-readobj -s -sd -r -t | \ 3*9880d681SAndroid Build Coastguard Worker// RUN: FileCheck %s 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker// We want to test relocatable thumb function call. 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Worker .thumb_func 8*9880d681SAndroid Build Coastguard Workerfoo: 9*9880d681SAndroid Build Coastguard Worker .fnstart 10*9880d681SAndroid Build Coastguard Worker bx lr 11*9880d681SAndroid Build Coastguard Worker .cantunwind 12*9880d681SAndroid Build Coastguard Worker .fnend 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Worker .align 1 15*9880d681SAndroid Build Coastguard Workerbar: 16*9880d681SAndroid Build Coastguard Worker .fnstart 17*9880d681SAndroid Build Coastguard Worker push {r7, lr} 18*9880d681SAndroid Build Coastguard Worker bl foo(PLT) 19*9880d681SAndroid Build Coastguard Worker pop {r7, pc} 20*9880d681SAndroid Build Coastguard Worker .cantunwind 21*9880d681SAndroid Build Coastguard Worker .fnend 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Worker// make sure that bl 0 <foo> (fff7feff) is correctly encoded 24*9880d681SAndroid Build Coastguard Worker// CHECK: Sections [ 25*9880d681SAndroid Build Coastguard Worker// CHECK: SectionData ( 26*9880d681SAndroid Build Coastguard Worker// CHECK: 0000: 704780B5 FFF7FEFF 80BD 27*9880d681SAndroid Build Coastguard Worker// CHECK: ) 28*9880d681SAndroid Build Coastguard Worker// CHECK: ] 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Worker// CHECK: Relocations [ 31*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Section {{.*}} .rel.text { 32*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: 0x4 R_ARM_THM_CALL foo 0x0 33*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: } 34*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Section {{.*}} .rel.ARM.exidx { 35*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: 0x0 R_ARM_PREL31 .text 0x0 36*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: 0x8 R_ARM_PREL31 .text 0x0 37*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: } 38*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: ] 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Worker// make sure foo is thumb function: bit 0 = 1 41*9880d681SAndroid Build Coastguard Worker// CHECK: Symbols [ 42*9880d681SAndroid Build Coastguard Worker// CHECK: Symbol { 43*9880d681SAndroid Build Coastguard Worker// CHECK: Name: foo 44*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Value: 0x1 45