45 lines
		
	
	
		
			981 B
		
	
	
	
		
			ArmAsm
		
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			981 B
		
	
	
	
		
			ArmAsm
		
	
	
	
| // RUN: llvm-mc %s -triple=thumbv7-linux-gnueabi \
 | |
| // RUN: -filetype=obj -o - | llvm-readobj -s -sd -r -t | \
 | |
| // RUN: FileCheck %s
 | |
| 
 | |
| // We want to test relocatable thumb function call.
 | |
| 
 | |
| 	.thumb_func
 | |
| foo:
 | |
| 	.fnstart
 | |
| 	bx	lr
 | |
| 	.cantunwind
 | |
| 	.fnend
 | |
| 
 | |
| 	.align	1
 | |
| bar:
 | |
| 	.fnstart
 | |
| 	push	{r7, lr}
 | |
| 	bl	foo(PLT)
 | |
| 	pop	{r7, pc}
 | |
| 	.cantunwind
 | |
| 	.fnend
 | |
| 
 | |
| // make sure that bl 0 <foo> (fff7feff) is correctly encoded
 | |
| // CHECK: Sections [
 | |
| // CHECK:   SectionData (
 | |
| // CHECK:     0000: 704780B5 FFF7FEFF 80BD
 | |
| // CHECK:   )
 | |
| // CHECK: ]
 | |
| 
 | |
| // CHECK:      Relocations [
 | |
| // CHECK-NEXT:   Section {{.*}} .rel.text {
 | |
| // CHECK-NEXT:     0x4 R_ARM_THM_CALL foo 0x0
 | |
| // CHECK-NEXT:   }
 | |
| // CHECK-NEXT:   Section {{.*}} .rel.ARM.exidx {
 | |
| // CHECK-NEXT:     0x0 R_ARM_PREL31 .text 0x0
 | |
| // CHECK-NEXT:     0x8 R_ARM_PREL31 .text 0x0
 | |
| // CHECK-NEXT:   }
 | |
| // CHECK-NEXT: ]
 | |
| 
 | |
| // make sure foo is thumb function: bit 0 = 1
 | |
| // CHECK:      Symbols [
 | |
| // CHECK:        Symbol {
 | |
| // CHECK:          Name: foo
 | |
| // CHECK-NEXT:     Value: 0x1
 |