llvm-6502/lib/MC
Rafael Espindola a23cc6a1ea Add r224985 back with fixes.
The fixes are to note that AArch64 has additional restrictions on when local
relocations can be used. In particular, ld64 requires that relocations to
cstring/cfstrings use linker visible symbols.

Original message:

In an assembly expression like

bar:
  .long L0 + 1

the intended semantics is that bar will contain a pointer one byte past L0.

In sections that are merged by content (strings, 4 byte constants, etc), a
single position in the section doesn't give the linker enough information.
For example, it would not be able to tell a relocation must point to the
end of a string, since that would look just like the start of the next.

The solution used in ELF to use relocation with symbols if there is a non-zero
addend.

In MachO before this patch we would just keep all symbols in some sections.

This would miss some cases (only cstrings on x86_64 were implemented) and was
inefficient since most relocations have an addend of 0 and can be represented
without the symbol.

This patch implements the non-zero addend logic for MachO too.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226503 91177308-0d34-0410-b5e6-96231b3b80d8
2015-01-19 21:11:14 +00:00
..
MCDisassembler unique_ptrify the RelInfo parameter to TargetRegistry::createMCSymbolizer 2015-01-18 20:45:48 +00:00
MCParser Replace size method call of containers to empty method where appropriate 2015-01-15 11:41:30 +00:00
CMakeLists.txt Nuke MCAnalysis. 2014-09-02 22:32:20 +00:00
ConstantPools.cpp [cleanup] Re-sort all the #include lines in LLVM using 2015-01-14 11:23:27 +00:00
ELFObjectWriter.cpp Add r224985 back with fixes. 2015-01-19 21:11:14 +00:00
LLVMBuild.txt Nuke MCAnalysis. 2014-09-02 22:32:20 +00:00
MachObjectWriter.cpp Add r224985 back with fixes. 2015-01-19 21:11:14 +00:00
Makefile Nuke MCAnalysis. 2014-09-02 22:32:20 +00:00
MCAsmBackend.cpp Simplify a really complicated check for Arch == X86_64. 2014-03-11 21:22:57 +00:00
MCAsmInfo.cpp Recommit r224935 with a fix for the ObjC++/AArch64 bug that that revision 2015-01-09 18:55:42 +00:00
MCAsmInfoCOFF.cpp Remove HasLEB128. 2014-08-15 14:01:07 +00:00
MCAsmInfoDarwin.cpp Add r224985 back with fixes. 2015-01-19 21:11:14 +00:00
MCAsmInfoELF.cpp Allow target to specify prefix for labels 2014-12-04 00:06:57 +00:00
MCAsmStreamer.cpp [cleanup] Re-sort all the #include lines in LLVM using 2015-01-14 11:23:27 +00:00
MCAssembler.cpp Add r224985 back with fixes. 2015-01-19 21:11:14 +00:00
MCCodeEmitter.cpp
MCCodeGenInfo.cpp
MCContext.cpp Add the llvm.frameallocate and llvm.recoverframeallocation intrinsics 2015-01-13 00:48:10 +00:00
MCDwarf.cpp Remove StringMap::GetOrCreateValue in favor of StringMap::insert 2014-11-19 05:49:42 +00:00
MCELF.cpp [MC] Constify MCELF::GetVisibility and MCELF::getOther 2014-07-11 17:34:44 +00:00
MCELFObjectTargetWriter.cpp [MC] Pass MCSymbolData to needsRelocateWithSymbol 2014-07-20 23:15:06 +00:00
MCELFStreamer.cpp Add back commits r219835 and a fixed version of r219829. 2014-10-17 01:48:58 +00:00
MCExpr.cpp ARM: add support for segment base relocations (SBREL) 2015-01-11 04:39:18 +00:00
MCInst.cpp [C++11] More 'nullptr' conversion or in some cases just using a boolean check instead of comparing to nullptr. 2014-04-13 04:57:38 +00:00
MCInstPrinter.cpp
MCInstrAnalysis.cpp
MCLabel.cpp
MCLinkerOptimizationHint.cpp [cleanup] Re-sort all the #include lines in LLVM using 2015-01-14 11:23:27 +00:00
MCMachObjectTargetWriter.cpp
MCMachOStreamer.cpp Replace size method call of containers to empty method where appropriate 2015-01-15 11:41:30 +00:00
MCNullStreamer.cpp Remove method that is identical to the base class one. 2014-10-14 17:38:38 +00:00
MCObjectFileInfo.cpp Commit back the correct bits of r222760 (was r222538). 2014-11-27 17:13:56 +00:00
MCObjectStreamer.cpp Clean up static analyzer warnings. 2014-12-12 21:48:03 +00:00
MCObjectWriter.cpp
MCRegisterInfo.cpp
MCSection.cpp
MCSectionCOFF.cpp MC: Fix MCSectionCOFF::PrintSwitchToSection 2014-09-20 20:40:50 +00:00
MCSectionELF.cpp delete function name from comment 2014-10-09 21:23:39 +00:00
MCSectionMachO.cpp [C++11] More 'nullptr' conversion or in some cases just using a boolean check instead of comparing to nullptr. 2014-04-13 04:57:38 +00:00
MCStreamer.cpp Revert r221150, as it broke sanitizer tests 2014-11-03 12:19:03 +00:00
MCSubtargetInfo.cpp Change MCSchedModel to be a struct of statically initialized data. 2014-09-02 17:43:54 +00:00
MCSymbol.cpp Revert "Add back r203962, r204028 and r204059." 2014-03-19 00:13:43 +00:00
MCSymbolizer.cpp Move MCSymbolizer's constructor into header. It's trivial - there's no need for 2014-03-27 02:42:52 +00:00
MCTargetOptions.cpp Migrate ABIName to MCTargetOptions so that it can be shared between 2015-01-14 00:50:31 +00:00
MCValue.cpp Fix pr19645. 2014-05-03 19:57:04 +00:00
MCWin64EH.cpp MC Win64: Put unwind info for COMDAT code into the same COMDAT group 2014-09-04 17:42:03 +00:00
MCWinEH.cpp Fix Windows unwind info for functions in sections other than .text 2014-12-22 22:10:08 +00:00
StringTableBuilder.cpp MachObjectWriter: optimize the string table for common suffices 2014-10-06 17:05:19 +00:00
SubtargetFeature.cpp Fix some cases where StringRef was being passed by const reference. Remove const from some other StringRefs since its implicitly const already. 2014-08-30 16:48:02 +00:00
WinCOFFObjectWriter.cpp Add r224985 back with fixes. 2015-01-19 21:11:14 +00:00
WinCOFFStreamer.cpp [cleanup] Re-sort all the #include lines in LLVM using 2015-01-14 11:23:27 +00:00
YAML.cpp Invert the MC -> Object dependency. 2014-07-03 02:01:39 +00:00