forked from OSchip/llvm-project
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. llvm-svn: 98420
This commit is contained in:
parent
322fec671b
commit
34b8e553ea
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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