mirror of
https://github.com/encounter/object-testfiles.git
synced 2026-07-10 12:18:40 -07:00
macho: relocations
This commit is contained in:
Binary file not shown.
@@ -0,0 +1,35 @@
|
|||||||
|
.subsections_via_symbols
|
||||||
|
.text
|
||||||
|
// ARM64_RELOC_BRANCH26
|
||||||
|
bl _g0
|
||||||
|
// ARM64_RELOC_ADDEND, ARM64_RELOC_BRANCH26
|
||||||
|
bl _g0 + 20
|
||||||
|
// ARM64_RELOC_PAGE21
|
||||||
|
adrp x0, _g0@PAGE
|
||||||
|
// ARM64_RELOC_PAGEOFF12
|
||||||
|
ldr w0, [x0, _g0@PAGEOFF]
|
||||||
|
// ARM64_RELOC_ADDEND, ARM64_RELOC_PAGE21
|
||||||
|
adrp x0, _g0@PAGE + 20
|
||||||
|
// ARM64_RELOC_ADDEND, ARM64_RELOC_PAGEOFF12
|
||||||
|
ldr w0, [x0, _g0@PAGEOFF + 20]
|
||||||
|
// ARM64_RELOC_GOT_LOAD_PAGE21
|
||||||
|
adrp x0, _g0@GOTPAGE
|
||||||
|
// ARM64_RELOC_GOT_LOAD_PAGEOFF12
|
||||||
|
ldr w0, [x0, _g0@GOTPAGEOFF]
|
||||||
|
// ARM64_RELOC_TLVP_LOAD_PAGE21
|
||||||
|
adrp x0, _g0@TLVPPAGE
|
||||||
|
// ARM64_RELOC_TLVP_LOAD_PAGEOFF12
|
||||||
|
ldr w0, [x0, _g0@TLVPPAGEOFF]
|
||||||
|
|
||||||
|
.data
|
||||||
|
_data:
|
||||||
|
// ARM64_RELOC_UNSIGNED
|
||||||
|
.quad _g0 + 20
|
||||||
|
// ARM64_RELOC_SUBTRACTOR, ARM64_RELOC_UNSIGNED, length=3
|
||||||
|
.quad _g0 - _g1 + 20
|
||||||
|
// ARM64_RELOC_SUBTRACTOR, ARM64_RELOC_UNSIGNED, length=2
|
||||||
|
.long _g0 - _g1 + 20
|
||||||
|
// ARM64_RELOC_POINTER_TO_GOT, pcrel=0, length=3
|
||||||
|
.quad _g0@GOT
|
||||||
|
// ARM64_RELOC_POINTER_TO_GOT, pcrel=1, length=2
|
||||||
|
.long _g0@GOT - .
|
||||||
Binary file not shown.
@@ -0,0 +1,43 @@
|
|||||||
|
.subsections_via_symbols
|
||||||
|
.text
|
||||||
|
.arm
|
||||||
|
_g1:
|
||||||
|
// ARM_RELOC_BR24, extern=1
|
||||||
|
bl _g0 + 20
|
||||||
|
// ARM_RELOC_BR24, extern=0
|
||||||
|
bl _g2
|
||||||
|
// ARM_RELOC_BR24, scattered
|
||||||
|
bl _g2 + 20
|
||||||
|
// ARM_RELOC_HALF, length=0
|
||||||
|
movw r0, :lower16:(_g0 + 20)
|
||||||
|
// ARM_RELOC_HALF, length=1
|
||||||
|
movt r0, :upper16:(_g0 + 20)
|
||||||
|
|
||||||
|
.p2align 2
|
||||||
|
.globl _g2
|
||||||
|
.thumb
|
||||||
|
_g2:
|
||||||
|
_g3:
|
||||||
|
// ARM_THUMB_RELOC_BR22, extern=1
|
||||||
|
bl _g0 + 20
|
||||||
|
// ARM_THUMB_RELOC_BR22, extern=0
|
||||||
|
bl _g2
|
||||||
|
// ARM_THUMB_RELOC_BR22, scattered
|
||||||
|
bl _g2 + 20
|
||||||
|
// ARM_RELOC_HALF, length=2
|
||||||
|
movw r0, :lower16:(_g0 + 20)
|
||||||
|
// ARM_RELOC_HALF, length=3
|
||||||
|
movt r0, :upper16:(_g0 + 20)
|
||||||
|
|
||||||
|
.data
|
||||||
|
// ARM_RELOC_VANILLA, extern=1
|
||||||
|
.long _g0 + 20
|
||||||
|
// ARM_RELOC_VANILLA, extern=0
|
||||||
|
.long _g2
|
||||||
|
// ARM_RELOC_VANILLA, scattered
|
||||||
|
.long _g2 + 20
|
||||||
|
// ARM_RELOC_SECTDIFF, ARM_RELOC_PAIR
|
||||||
|
.long _g2 - _g1 + 20
|
||||||
|
// ARM_RELOC_SECTDIFF, ARM_RELOC_PAIR
|
||||||
|
// TODO: should be ARM_RELOC_LOCAL_SECTDIFF, ARM_RELOC_PAIR?
|
||||||
|
.long _g3 - _g1 + 20
|
||||||
Binary file not shown.
@@ -0,0 +1,27 @@
|
|||||||
|
.subsections_via_symbols
|
||||||
|
.text
|
||||||
|
_g1:
|
||||||
|
// GENERIC_RELOC_VANILLA, pcrel=1, extern=1
|
||||||
|
call _g0 + 20
|
||||||
|
// GENERIC_RELOC_VANILLA, pcrel=1, extern=0
|
||||||
|
call _g2
|
||||||
|
// GENERIC_RELOC_VANILLA, pcrel=1, scattered
|
||||||
|
call _g2 + 20
|
||||||
|
|
||||||
|
.p2align 2
|
||||||
|
.globl _g2
|
||||||
|
_g2:
|
||||||
|
_g3:
|
||||||
|
ret
|
||||||
|
|
||||||
|
.data
|
||||||
|
// GENERIC_RELOC_VANILLA, pcrel=0, extern=1
|
||||||
|
.long _g0 + 20
|
||||||
|
// GENERIC_RELOC_VANILLA, pcrel=0, extern=0
|
||||||
|
.long _g2
|
||||||
|
// GENERIC_RELOC_VANILLA, pcrel=0, scattered
|
||||||
|
.long _g2 + 20
|
||||||
|
// GENERIC_RELOC_SECTDIFF, GENERIC_RELOC_PAIR
|
||||||
|
.long _g2 - _g1 + 20
|
||||||
|
// GENERIC_RELOC_LOCAL_SECTDIFF, GENERIC_RELOC_PAIR
|
||||||
|
.long _g3 - _g1 + 20
|
||||||
Binary file not shown.
@@ -0,0 +1,34 @@
|
|||||||
|
.text
|
||||||
|
_g1:
|
||||||
|
// X86_64_RELOC_BRANCH
|
||||||
|
call _g2 + 20
|
||||||
|
_g2:
|
||||||
|
// X86_64_RELOC_SIGNED
|
||||||
|
movl _g1 + 20(%rip), %eax
|
||||||
|
// X86_64_RELOC_SIGNED_1, extern=1
|
||||||
|
movb $0x12, _g1(%rip)
|
||||||
|
// X86_64_RELOC_SIGNED_2, extern=1
|
||||||
|
movw $0x1234, _g1(%rip)
|
||||||
|
// X86_64_RELOC_SIGNED_4, extern=1
|
||||||
|
movl $0x12345678, _g1(%rip)
|
||||||
|
// X86_64_RELOC_SIGNED_1, extern=0
|
||||||
|
movb $0x12, L1(%rip)
|
||||||
|
// X86_64_RELOC_SIGNED_2, extern=0
|
||||||
|
movw $0x1234, L1(%rip)
|
||||||
|
// X86_64_RELOC_SIGNED_4, extern=0
|
||||||
|
movl $0x12345678, L1(%rip)
|
||||||
|
// X86_64_RELOC_GOT_LOAD
|
||||||
|
movq _g1@GOTPCREL(%rip), %rax
|
||||||
|
// X86_64_RELOC_GOT
|
||||||
|
pushq _g1@GOTPCREL(%rip)
|
||||||
|
// X86_64_RELOC_TLV
|
||||||
|
movq _g1@TLVP(%rip), %rax
|
||||||
|
|
||||||
|
.data
|
||||||
|
L1:
|
||||||
|
// X86_64_RELOC_UNSIGNED, extern=1
|
||||||
|
.quad _g1 + 20
|
||||||
|
// X86_64_RELOC_UNSIGNED, extern=0
|
||||||
|
.quad L1 + 20
|
||||||
|
// X86_64_RELOC_UNSIGNED, X86_64_RELOC_SUBTRACTOR
|
||||||
|
.quad _g1 - _g2 + 20
|
||||||
Executable
+5
@@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
llvm-mc-16 -n -triple i386-apple-darwin reloc-i386.s -filetype=obj -o reloc-i386.o
|
||||||
|
llvm-mc-16 -n -triple x86_64-apple-darwin reloc-x86_64.s -filetype=obj -o reloc-x86_64.o
|
||||||
|
llvm-mc-16 -n -triple thumbv7-apple-darwin reloc-arm.s -filetype=obj -o reloc-arm.o
|
||||||
|
llvm-mc-16 -n -triple arm64-apple-darwin reloc-aarch64.s -filetype=obj -o reloc-aarch64.o
|
||||||
Reference in New Issue
Block a user