.syntax unified .arch armv6t2 .macro define,name,type .type \name,%gnu_indirect_function \type \name: mov pc,lr .size \name,.-\name .endm .macro test_relocs,name,width bl\width \name b\width \name beq\width \name ldr r4,1f ldr r4,2f ldr r4,3f ldr r4,4f ldr r5,5f movw r4,#:lower16:\name movt r4,#:upper16:\name 1: .word \name 2: .word \name-. 3: .word \name(GOTOFF) 4: .word \name(GOT) 5: .word \name(GOT_PREL) .endm define f1,.arm define f2,.thumb_func define f3,.arm define f4,.thumb_func .globl f5 .globl f6 .globl f7 .globl f8 define f5,.arm define f6,.thumb_func define f7,.arm define f8,.thumb_func .globl _start .type _start,%function .arm _start: test_relocs foo test_relocs f1, test_relocs f2, test_relocs f5, test_relocs f6, .size _start,.-_start .globl _thumb .type _thumb,%function .thumb_func _thumb: test_relocs foo test_relocs f3,.w test_relocs f4,.w test_relocs f7,.w test_relocs f8,.w .size _thumb,.-_thumb .data foo: .word 0x11223344