[llvm-commits] [llvm] r146054 - in /llvm/trunk: lib/MC/MachObjectWriter.cpp lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp test/MC/MachO/ARM/darwin-ARM-reloc.s test/MC/MachO/reloc-pcrel-offset.s test/MC/MachO/reloc-pcrel.s
Jim Grosbach
grosbach at apple.com
Wed Dec 7 11:46:59 PST 2011
Author: grosbach
Date: Wed Dec 7 13:46:59 2011
New Revision: 146054
URL: http://llvm.org/viewvc/llvm-project?rev=146054&view=rev
Log:
Darwin assembler improved relocs when w/o subsections_via_symbols.
When the file isn't being built with subsections-via-symbols, symbol
differences involving non-local symbols can be resolved more aggressively.
Needed for gas compatibility.
Modified:
llvm/trunk/lib/MC/MachObjectWriter.cpp
llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp
llvm/trunk/test/MC/MachO/ARM/darwin-ARM-reloc.s
llvm/trunk/test/MC/MachO/reloc-pcrel-offset.s
llvm/trunk/test/MC/MachO/reloc-pcrel.s
Modified: llvm/trunk/lib/MC/MachObjectWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MachObjectWriter.cpp?rev=146054&r1=146053&r2=146054&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MachObjectWriter.cpp (original)
+++ llvm/trunk/lib/MC/MachObjectWriter.cpp Wed Dec 7 13:46:59 2011
@@ -584,9 +584,14 @@
// requires the compiler to use .set to absolutize the differences between
// symbols which the compiler knows to be assembly time constants, so we
// don't need to worry about considering symbol differences fully resolved.
+ //
+ // If the file isn't using sub-sections-via-symbols, we can make the
+ // same assumptions about any symbol that we normally make about
+ // assembler locals.
if (!Asm.getBackend().hasReliableSymbolDifference()) {
- if (!SA.isTemporary() || !SA.isInSection() || &SecA != &SecB)
+ if ((!SA.isTemporary() && Asm.getSubsectionsViaSymbols()) ||
+ !SA.isInSection() || &SecA != &SecB)
return false;
return true;
}
Modified: llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp?rev=146054&r1=146053&r2=146054&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp (original)
+++ llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp Wed Dec 7 13:46:59 2011
@@ -62,6 +62,9 @@
default:
return false;
+ case ARM::fixup_t2_condbranch:
+ assert(0);
+ return false;
case FK_Data_1:
Log2Size = llvm::Log2_32(1);
return true;
Modified: llvm/trunk/test/MC/MachO/ARM/darwin-ARM-reloc.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/MachO/ARM/darwin-ARM-reloc.s?rev=146054&r1=146053&r2=146054&view=diff
==============================================================================
--- llvm/trunk/test/MC/MachO/ARM/darwin-ARM-reloc.s (original)
+++ llvm/trunk/test/MC/MachO/ARM/darwin-ARM-reloc.s Wed Dec 7 13:46:59 2011
@@ -19,12 +19,14 @@
Lsc0_0:
.long 0
+ .subsections_via_symbols
+
@ CHECK: ('cputype', 12)
@ CHECK: ('cpusubtype', 9)
@ CHECK: ('filetype', 1)
@ CHECK: ('num_load_commands', 3)
@ CHECK: ('load_commands_size', 364)
-@ CHECK: ('flag', 0)
+@ CHECK: ('flag', 8192)
@ CHECK: ('load_commands', [
@ CHECK: # Load Command 0
@ CHECK: (('command', 1)
Modified: llvm/trunk/test/MC/MachO/reloc-pcrel-offset.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/MachO/reloc-pcrel-offset.s?rev=146054&r1=146053&r2=146054&view=diff
==============================================================================
--- llvm/trunk/test/MC/MachO/reloc-pcrel-offset.s (original)
+++ llvm/trunk/test/MC/MachO/reloc-pcrel-offset.s Wed Dec 7 13:46:59 2011
@@ -12,3 +12,5 @@
.text
_a:
call _a
+
+ .subsections_via_symbols
Modified: llvm/trunk/test/MC/MachO/reloc-pcrel.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/MachO/reloc-pcrel.s?rev=146054&r1=146053&r2=146054&view=diff
==============================================================================
--- llvm/trunk/test/MC/MachO/reloc-pcrel.s (original)
+++ llvm/trunk/test/MC/MachO/reloc-pcrel.s Wed Dec 7 13:46:59 2011
@@ -60,3 +60,5 @@
call _c + 1
// call _a - L0
call _b - L0
+
+ .subsections_via_symbols
More information about the llvm-commits
mailing list