.text .dword 0 .dword 0 # 2010 .global foo foo: # 4-byte literal .long 0x12345678 .word 0x12345678 # IMAGE_REL_ARM64_ADDR32 (BFD_RELOC_32) .long foo .word foo .long bar .word bar .long foo + 1 .word foo + 1 .long bar + 1 .word bar + 1 .long foo - 1 .word foo - 1 .long bar - 1 .word bar - 1 # 8-byte literal .dword 0x123456789abcdef0 .xword 0x123456789abcdef0 # IMAGE_REL_ARM64_ADDR64 (BFD_RELOC_64) .dword foo .xword foo .dword bar .xword bar .dword foo + 1 .xword foo + 1 .dword bar + 1 .xword bar + 1 .dword foo - 1 .xword foo - 1 .dword bar - 1 .xword bar - 1 # IMAGE_REL_ARM64_ADDR32NB (BFD_RELOC_RVA) .rva foo .rva bar .rva foo + 1 .rva bar + 1 .rva foo - 1 .rva bar - 1 # IMAGE_REL_ARM64_BRANCH26 (BFD_RELOC_AARCH64_JUMP26) b foo b foo + 4 b foo - 4 b bar b bar + 4 b bar - 4 # IMAGE_REL_ARM64_BRANCH26 (BFD_RELOC_AARCH64_CALL26) bl foo bl foo + 4 bl foo - 4 bl bar bl bar + 4 bl bar - 4 bl .text - 4 # IMAGE_REL_ARM64_BRANCH19 (BFD_RELOC_AARCH64_BRANCH19) cbz x0, foo cbz x0, foo + 4 cbz x0, foo - 4 cbz x0, bar cbz x0, bar + 4 cbz x0, bar - 4 cbz x0, .text - 4 # IMAGE_REL_ARM64_BRANCH14 (BFD_RELOC_AARCH64_TSTBR14) tbz x0, 0, foo tbz x0, 0, foo + 4 tbz x0, 0, foo - 4 tbz x0, 0, bar tbz x0, 0, bar + 4 tbz x0, 0, bar - 4 tbz x0, 0, .text - 4 # IMAGE_REL_ARM64_PAGEBASE_REL21 (BFD_RELOC_AARCH64_ADR_HI21_PCREL) adrp x0, foo adrp x0, foo + 1 adrp x0, foo - 1 adrp x0, bar adrp x0, bar + 1 adrp x0, bar - 1 adrp x0, .text - 4 # IMAGE_REL_ARM64_REL21 (BFD_RELOC_AARCH64_ADR_LO21_PCREL) adr x0, foo adr x0, foo + 1 adr x0, foo - 1 adr x0, bar adr x0, bar + 1 adr x0, bar - 1 adr x0, .text - 1 # IMAGE_REL_ARM64_PAGEOFFSET_12L (BFD_RELOC_AARCH64_LDST8_LO12) strb w0, [x0,:lo12:foo] strb w0, [x0,:lo12:foo + 4] strb w0, [x0,:lo12:foo - 4] strb w0, [x0,:lo12:bar] strb w0, [x0,:lo12:bar + 4] strb w0, [x0,:lo12:bar - 4] strb w0, [x0,:lo12:.text - 4] # IMAGE_REL_ARM64_PAGEOFFSET_12L (BFD_RELOC_AARCH64_LDST16_LO12) strh w0, [x0,:lo12:foo] strh w0, [x0,:lo12:foo + 4] strh w0, [x0,:lo12:foo - 4] strh w0, [x0,:lo12:bar] strh w0, [x0,:lo12:bar + 4] strh w0, [x0,:lo12:bar - 4] strh w0, [x0,:lo12:.text - 4] # IMAGE_REL_ARM64_PAGEOFFSET_12L (BFD_RELOC_AARCH64_LDST32_LO12) str w0, [x0,:lo12:foo] str w0, [x0,:lo12:foo + 4] str w0, [x0,:lo12:foo - 4] str w0, [x0,:lo12:bar] str w0, [x0,:lo12:bar + 4] str w0, [x0,:lo12:bar - 4] str w0, [x0,:lo12:.text - 4] # IMAGE_REL_ARM64_PAGEOFFSET_12L (BFD_RELOC_AARCH64_LDST64_LO12) str x0, [x0,:lo12:foo] str x0, [x0,:lo12:foo + 8] str x0, [x0,:lo12:foo - 8] str x0, [x0,:lo12:bar] str x0, [x0,:lo12:bar + 8] str x0, [x0,:lo12:bar - 8] str x0, [x0,:lo12:.text - 8] # IMAGE_REL_ARM64_PAGEOFFSET_12L (BFD_RELOC_AARCH64_LDST128_LO12) str q0, [x0,:lo12:foo] str q0, [x0,:lo12:foo + 16] str q0, [x0,:lo12:foo - 16] str q0, [x0,:lo12:bar] str q0, [x0,:lo12:bar + 16] str q0, [x0,:lo12:bar - 16] str q0, [x0,:lo12:.text - 16] # IMAGE_REL_ARM64_PAGEOFFSET_12A (BFD_RELOC_AARCH64_ADD_LO12) add x0, x0, #:lo12:foo add x0, x0, #:lo12:foo + 1 add x0, x0, #:lo12:foo - 1 add x0, x0, #:lo12:bar add x0, x0, #:lo12:bar + 1 add x0, x0, #:lo12:bar - 1 add x0, x0, #:lo12:.text - 1