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 test_relocs,name,width 13 bl\width \name 14 b\width \name 15 beq\width \name 16 ldr r4,1f 17 ldr r4,2f 18 1: 19 .word \name(GOT) 20 2: 21 .word \name(GOT_PREL) 22 .endm 23 24 .global f1 25 .global f2 26 27 .global f3 28 .global f4 29 .hidden f3 30 .hidden f4 31 32 define f1,.arm 33 define f2,.thumb_func 34 define f3,.arm 35 define f4,.thumb_func 36 37 .globl _start 38 .type _start,%function 39 .arm 40 _start: 41 test_relocs foo 42 test_relocs f1, 43 test_relocs f2, 44 .size _start,.-_start 45 46 .globl _thumb 47 .type _thumb,%function 48 .thumb_func 49 _thumb: 50 test_relocs foo 51 test_relocs f3,.w 52 test_relocs f4,.w 53 .size _thumb,.-_thumb 54 55 .data 56 foo: 57 .word 0x11223344 58 .word __irel_start 59 .word __irel_end 60