mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-27 13:30:05 +00:00
MachOWriter: Don't crash on fixups with arithmetic, emit a relocation instead. This matches what as does.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137414 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b43b09eef5
commit
0d46ccfc5c
@ -595,9 +595,13 @@ IsSymbolRefDifferenceFullyResolvedImpl(const MCAssembler &Asm,
|
||||
return false;
|
||||
}
|
||||
|
||||
const MCFragment &FA = *Asm.getSymbolData(SA).getFragment();
|
||||
const MCFragment *FA = Asm.getSymbolData(SA).getFragment();
|
||||
|
||||
A_Base = FA.getAtom();
|
||||
// Bail if the symbol has no fragment.
|
||||
if (!FA)
|
||||
return false;
|
||||
|
||||
A_Base = FA->getAtom();
|
||||
if (!A_Base)
|
||||
return false;
|
||||
|
||||
|
21
test/MC/MachO/x86_64-reloc-arithmetic.s
Normal file
21
test/MC/MachO/x86_64-reloc-arithmetic.s
Normal file
@ -0,0 +1,21 @@
|
||||
// RUN: llvm-mc -triple x86_64-apple-darwin10 %s -filetype=obj -o - | macho-dump | FileCheck %s
|
||||
|
||||
// rdar://9906375
|
||||
.org 0x100
|
||||
_foo:
|
||||
_bar = _foo + 2
|
||||
_baz:
|
||||
leaq _bar(%rip), %rcx
|
||||
|
||||
// CHECK: ('_relocations', [
|
||||
// CHECK-NEXT: # Relocation 0
|
||||
// CHECK-NEXT: (('word-0', 0x103),
|
||||
// CHECK-NEXT: ('word-1', 0x1d000001))
|
||||
|
||||
// CHECK: # Symbol 1
|
||||
// CHECK-NEXT: (('n_strx', 6)
|
||||
// CHECK-NEXT: ('n_type', 0xe)
|
||||
// CHECK-NEXT: ('n_sect', 1)
|
||||
// CHECK-NEXT: ('n_desc', 0)
|
||||
// CHECK-NEXT: ('n_value', 258)
|
||||
// CHECK-NEXT: ('_string', '_bar')
|
Loading…
Reference in New Issue
Block a user