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