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
 |