mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-23 11:43:32 +00:00
[lld-macho] Support X86_64_RELOC_BRANCH
Relatively straightforward diff, to set the stage for calling functions in dylibs. Differential Revision: https://reviews.llvm.org/D78269
This commit is contained in:
parent
df92377823
commit
e82c5e17b5
@ -31,6 +31,7 @@ X86_64::X86_64() {
|
||||
|
||||
uint64_t X86_64::getImplicitAddend(const uint8_t *loc, uint8_t type) const {
|
||||
switch (type) {
|
||||
case X86_64_RELOC_BRANCH:
|
||||
case X86_64_RELOC_SIGNED:
|
||||
case X86_64_RELOC_GOT_LOAD:
|
||||
return read32le(loc);
|
||||
@ -42,6 +43,7 @@ uint64_t X86_64::getImplicitAddend(const uint8_t *loc, uint8_t type) const {
|
||||
|
||||
void X86_64::relocateOne(uint8_t *loc, uint8_t type, uint64_t val) const {
|
||||
switch (type) {
|
||||
case X86_64_RELOC_BRANCH:
|
||||
case X86_64_RELOC_SIGNED:
|
||||
case X86_64_RELOC_GOT_LOAD:
|
||||
// These types are only used for pc-relative relocations, so offset by 4
|
||||
|
@ -1,19 +1,34 @@
|
||||
# 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
|
||||
# RUN: llvm-objdump --section-headers --syms -d %t | FileCheck %s
|
||||
|
||||
# CHECK: leaq 17(%rip), %rsi
|
||||
# CHECK-LABEL: Sections:
|
||||
# CHECK: __cstring {{[0-9a-z]+}} [[#%x, CSTRING_ADDR:]]
|
||||
|
||||
# CHECK-LABEL: SYMBOL TABLE:
|
||||
# CHECK: [[#%x, F_ADDR:]] {{.*}} _f
|
||||
|
||||
# CHECK-LABEL: <_main>:
|
||||
## Test X86_64_RELOC_BRANCH
|
||||
# CHECK: callq 0x[[#%x, F_ADDR]] <_f>
|
||||
## Test X86_64_RELOC_SIGNED
|
||||
# CHECK: leaq [[#%u, STR_OFF:]](%rip), %rsi
|
||||
# CHECK-NEXT: [[#%x, CSTRING_ADDR - STR_OFF]]
|
||||
|
||||
.section __TEXT,__text
|
||||
.globl _main
|
||||
.globl _main, _f
|
||||
_main:
|
||||
callq _f
|
||||
mov $0, %rax
|
||||
ret
|
||||
|
||||
_f:
|
||||
movl $0x2000004, %eax # write() syscall
|
||||
mov $1, %rdi # stdout
|
||||
leaq str(%rip), %rsi
|
||||
mov $13, %rdx # length of str
|
||||
syscall
|
||||
mov $0, %rax
|
||||
ret
|
||||
|
||||
.section __TEXT,__cstring
|
||||
|
Loading…
x
Reference in New Issue
Block a user