mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-28 04:33:05 +00:00
MC/Mach-O: PCrel relocations weren't using the right base address, they are
relative to the fragment address, not its offset. This was masked by the text section normally being at address 0. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98420 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5e6a7a248b
commit
da3e9f760c
@ -1024,7 +1024,7 @@ bool MCAssembler::EvaluateFixup(const MCAsmLayout &Layout, MCAsmFixup &Fixup,
|
||||
}
|
||||
|
||||
if (IsPCRel)
|
||||
Value -= DF->getOffset() + Fixup.Offset;
|
||||
Value -= DF->getAddress() + Fixup.Offset;
|
||||
|
||||
return IsResolved;
|
||||
}
|
||||
|
14
test/MC/MachO/reloc-pcrel-offset.s
Normal file
14
test/MC/MachO/reloc-pcrel-offset.s
Normal file
@ -0,0 +1,14 @@
|
||||
// RUN: llvm-mc -n -triple i386-apple-darwin9 %s -filetype=obj -o - | macho-dump --dump-section-data | FileCheck %s
|
||||
|
||||
// CHECK: # Relocation 0
|
||||
// CHECK: (('word-0', 0x1),
|
||||
// CHECK: ('word-1', 0x5000002)),
|
||||
// CHECK-NEXT: ])
|
||||
// CHECK: ('_section_data', '\xe8\xfb\xff\xff\xff')
|
||||
|
||||
.data
|
||||
.long 0
|
||||
|
||||
.text
|
||||
_a:
|
||||
call _a
|
Loading…
Reference in New Issue
Block a user