[PATCH] D79311: [lld-macho] Support X86_64_RELOC_SIGNED_{1,2,4}
Fangrui Song via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon May 4 15:38:09 PDT 2020
This revision was automatically updated to reflect the committed changes.
Closed by commit rG6939fe6e0853: [lld-macho] Support X86_64_RELOC_SIGNED_{1,2,4} (authored by MaskRay).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D79311/new/
https://reviews.llvm.org/D79311
Files:
lld/MachO/Arch/X86_64.cpp
lld/test/MachO/x86-64-reloc-signed.s
Index: lld/test/MachO/x86-64-reloc-signed.s
===================================================================
--- /dev/null
+++ lld/test/MachO/x86-64-reloc-signed.s
@@ -0,0 +1,37 @@
+# REQUIRES: x86
+# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t.o
+# RUN: lld -flavor darwinnew -o %t %t.o
+# RUN: llvm-objdump -d %t | FileCheck %s
+
+# CHECK: <_main>:
+# CHECK-NEXT: movl {{.*}} # 2000 <_s>
+# CHECK-NEXT: callq {{.*}}
+# CHECK-NEXT: movl {{.*}} # 2002 <_s+0x2>
+# CHECK-NEXT: callq {{.*}}
+# CHECK-NEXT: movb {{.*}} # 2000 <_s>
+# CHECK-NEXT: callq {{.*}}
+
+.section __TEXT,__text
+.globl _main
+_main:
+ movl $0x434241, _s(%rip) # X86_64_RELOC_SIGNED_4
+ callq _f
+ movl $0x44, _s+2(%rip) # X86_64_RELOC_SIGNED_2
+ callq _f
+ movb $0x45, _s(%rip) # X86_64_RELOC_SIGNED_1
+ callq _f
+ xorq %rax, %rax
+ ret
+
+_f:
+ movl $0x2000004, %eax # write() syscall
+ mov $1, %rdi # stdout
+ leaq _s(%rip), %rsi
+ mov $3, %rdx # length
+ syscall
+ ret
+
+.section __DATA,__data
+.globl _s
+_s:
+ .space 5
Index: lld/MachO/Arch/X86_64.cpp
===================================================================
--- lld/MachO/Arch/X86_64.cpp
+++ lld/MachO/Arch/X86_64.cpp
@@ -33,6 +33,9 @@
switch (type) {
case X86_64_RELOC_BRANCH:
case X86_64_RELOC_SIGNED:
+ case X86_64_RELOC_SIGNED_1:
+ case X86_64_RELOC_SIGNED_2:
+ case X86_64_RELOC_SIGNED_4:
case X86_64_RELOC_GOT_LOAD:
return read32le(loc);
default:
@@ -45,6 +48,9 @@
switch (type) {
case X86_64_RELOC_BRANCH:
case X86_64_RELOC_SIGNED:
+ case X86_64_RELOC_SIGNED_1:
+ case X86_64_RELOC_SIGNED_2:
+ case X86_64_RELOC_SIGNED_4:
case X86_64_RELOC_GOT_LOAD:
// These types are only used for pc-relative relocations, so offset by 4
// since the RIP has advanced by 4 at this point.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D79311.261946.patch
Type: text/x-patch
Size: 1834 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200504/f8f0f9cf/attachment.bin>
More information about the llvm-commits
mailing list