Home | History | Annotate | Download | only in ld-arm
      1 	.syntax unified
      2 	.arch armv6t2
      3 
      4 	.macro	define,name,type
      5 	.type	\name,%gnu_indirect_function
      6 	\type
      7 \name:
      8 	mov	pc,lr
      9 	.size	\name,.-\name
     10 	.endm
     11 
     12 	.macro	define2,name
     13 	define	aa\name,.arm
     14 	define	at\name,.arm
     15 	define	ab\name,.arm
     16 	define	ta\name,.thumb_func
     17 	define	tt\name,.thumb_func
     18 	define	tb\name,.thumb_func
     19 	.endm
     20 
     21 	.macro	test_relocs,name,width
     22 	bl	\name(PLT)
     23 	b\width \name
     24 	beq\width \name
     25 	ldr	r4,1f
     26 	ldr	r4,2f
     27 1:
     28 	.word	\name(GOT)
     29 2:
     30 	.word	\name(GOT_PREL)
     31 	.endm
     32 
     33 	.macro	test_relocs2,name,type,width
     34 	test_relocs a\type\name,\width
     35 	test_relocs t\type\name,\width
     36 	test_relocs ab\name,\width
     37 	test_relocs tb\name,\width
     38 	.endm
     39 
     40 	.macro	diff,name
     41 	.word	\name
     42 	.word	\name-.
     43 	.endm
     44 
     45 	.macro	alldirs,doit,name
     46 	\doit	aa\name
     47 	\doit	at\name
     48 	\doit	ab\name
     49 	\doit	ta\name
     50 	\doit	tt\name
     51 	\doit	tb\name
     52 	.endm
     53 
     54 	define2	f1
     55 	# f2 provided by ifunc-4.so
     56 	define2	f3
     57 	# f4 provided by ifunc-4.so
     58 
     59 	alldirs	.globl,f3
     60 	alldirs .hidden,f3
     61 
     62 	.globl	_start
     63 	.type	_start,%function
     64 	.arm
     65 _start:
     66 	test_relocs foo
     67 	test_relocs2 f1,a,
     68 	test_relocs2 f2,a,
     69 	test_relocs2 f3,a,
     70 	test_relocs2 f4,a,
     71 	.size	_start,.-_start
     72 
     73 	.globl	_thumb
     74 	.type	_thumb,%function
     75 	.thumb_func
     76 _thumb:
     77 	test_relocs foo
     78 	test_relocs2 f1,t,.w
     79 	test_relocs2 f2,t,.w
     80 	test_relocs2 f3,t,.w
     81 	test_relocs2 f4,t,.w
     82 	.size	_thumb,.-_thumb
     83 
     84 	.data
     85 foo:
     86 	.word	0x11223344
     87 	alldirs	diff,f1
     88 	alldirs	diff,f2
     89 	alldirs	diff,f3
     90 	alldirs	diff,f4
     91