1 .macro define,name 2 .type \name,%gnu_indirect_function 3 \name: 4 mov pc,lr 5 .size \name,.-\name 6 .endm 7 8 .macro test_relocs,name 9 bl \name 10 ldr r4,1f 11 ldr r4,2f 12 ldr r4,3f 13 ldr r4,4f 14 ldr r5,5f 15 1: 16 .word \name 17 2: 18 .word \name-. 19 3: 20 .word \name(GOTOFF) 21 4: 22 .word \name(GOT) 23 5: 24 .word \name(GOT_PREL) 25 .endm 26 27 .global f3 28 .hidden f3 29 30 define f1 31 # f2 provided by ifunc-3.so 32 define f3 33 34 .globl _start 35 _start: 36 test_relocs foo 37 test_relocs f1 38 test_relocs f2 39 test_relocs f3 40 .size _start,.-_start 41 42 .data 43 foo: 44 .word 0x11223344 45