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