diff options
-rw-r--r-- | lib/MC/MachObjectWriter.cpp | 4 | ||||
-rw-r--r-- | test/MC/MachO/ARM/darwin-ARM-reloc.s | 4 | ||||
-rw-r--r-- | test/MC/MachO/reloc-pcrel-offset.s | 1 | ||||
-rw-r--r-- | test/MC/MachO/reloc-pcrel.s | 7 |
4 files changed, 9 insertions, 7 deletions
diff --git a/lib/MC/MachObjectWriter.cpp b/lib/MC/MachObjectWriter.cpp index e016f09c95..ce222b75cf 100644 --- a/lib/MC/MachObjectWriter.cpp +++ b/lib/MC/MachObjectWriter.cpp @@ -590,8 +590,8 @@ IsSymbolRefDifferenceFullyResolvedImpl(const MCAssembler &Asm, // assembler locals. if (!Asm.getBackend().hasReliableSymbolDifference()) { - if ((!SA.isTemporary() && Asm.getSubsectionsViaSymbols()) || - !SA.isInSection() || &SecA != &SecB) + if (!SA.isInSection() || &SecA != &SecB || + (!SA.isTemporary() && &FB != Asm.getSymbolData(SA).getFragment())) return false; return true; } diff --git a/test/MC/MachO/ARM/darwin-ARM-reloc.s b/test/MC/MachO/ARM/darwin-ARM-reloc.s index fe69a94c27..b98c80c46e 100644 --- a/test/MC/MachO/ARM/darwin-ARM-reloc.s +++ b/test/MC/MachO/ARM/darwin-ARM-reloc.s @@ -12,9 +12,9 @@ _f1: .data _d0: -Ld0_0: +Ld0_0: .long Lsc0_0 - Ld0_0 - + .section __TEXT,__cstring,cstring_literals Lsc0_0: .long 0 diff --git a/test/MC/MachO/reloc-pcrel-offset.s b/test/MC/MachO/reloc-pcrel-offset.s index bc611d7f36..e113e9616c 100644 --- a/test/MC/MachO/reloc-pcrel-offset.s +++ b/test/MC/MachO/reloc-pcrel-offset.s @@ -11,6 +11,7 @@ .text _a: +_b: call _a .subsections_via_symbols diff --git a/test/MC/MachO/reloc-pcrel.s b/test/MC/MachO/reloc-pcrel.s index b6d4be6689..1133415036 100644 --- a/test/MC/MachO/reloc-pcrel.s +++ b/test/MC/MachO/reloc-pcrel.s @@ -8,13 +8,13 @@ // CHECK: ('word-1', 0x6)), // CHECK: # Relocation 2 // CHECK: (('word-0', 0x40), -// CHECK: ('word-1', 0xd000002)), +// CHECK: ('word-1', 0xd000003)), // CHECK: # Relocation 3 // CHECK: (('word-0', 0x3b), -// CHECK: ('word-1', 0xd000002)), +// CHECK: ('word-1', 0xd000003)), // CHECK: # Relocation 4 // CHECK: (('word-0', 0x36), -// CHECK: ('word-1', 0xd000002)), +// CHECK: ('word-1', 0xd000003)), // CHECK: # Relocation 5 // CHECK: (('word-0', 0xe0000031), // CHECK: ('word-1', 0x4)), @@ -41,6 +41,7 @@ _a: xorl %eax,%eax _b: +_d: xorl %eax,%eax L0: xorl %eax,%eax |