llvm-project/llvm/lib/Target/X86/MCTargetDesc
Rafael Espindola 2658554aec 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.

llvm-svn: 226503
2015-01-19 21:11:14 +00:00
..
CMakeLists.txt MC: create X86WinCOFFStreamer for target specific behaviour 2014-04-27 03:48:12 +00:00
LLVMBuild.txt Update library dependencies. 2014-07-24 02:10:42 +00:00
Makefile
X86AsmBackend.cpp Add r224985 back with fixes. 2015-01-19 21:11:14 +00:00
X86BaseInfo.h [X86] Simplify code a little by just summing flags instead of conditionally incrementing. NFC 2015-01-05 08:19:10 +00:00
X86ELFObjectWriter.cpp Support @PLT loads on 32bit x86. 2015-01-15 17:59:02 +00:00
X86ELFRelocationInfo.cpp [C++] Use 'nullptr'. Target edition. 2014-04-25 05:30:21 +00:00
X86FixupKinds.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
X86MCAsmInfo.cpp Remove X86 .quad workaround for buggy GNU assembler on OpenBSD / Bitrig. 2015-01-06 00:53:52 +00:00
X86MCAsmInfo.h Recommit r224935 with a fix for the ObjC++/AArch64 bug that that revision 2015-01-09 18:55:42 +00:00
X86MCCodeEmitter.cpp [X86] Remove the single AdSize indicator and replace it with separate AdSize16/32/64 flags. 2014-12-24 06:05:22 +00:00
X86MCTargetDesc.cpp Revert "ADT: correctly report isMSVCEnvironment for windows itanium" 2014-11-17 22:55:59 +00:00
X86MCTargetDesc.h [X86] Clean up whitespace as well as minor coding style 2014-12-04 05:20:33 +00:00
X86MachORelocationInfo.cpp [C++] Use 'nullptr'. Target edition. 2014-04-25 05:30:21 +00:00
X86MachObjectWriter.cpp Add r224985 back with fixes. 2015-01-19 21:11:14 +00:00
X86WinCOFFObjectWriter.cpp X86: Split the relocation selection up 2014-04-08 02:15:13 +00:00
X86WinCOFFStreamer.cpp MC: split Win64EHUnwindEmitter into a shared streamer 2014-08-07 02:59:41 +00:00