llvm-project/llvm/lib/Target/ARM/MCTargetDesc
Oliver Stannard 8331aaee8f [ARM] Add support for embedded position-independent code
This patch adds support for some new relocation models to the ARM
backend:

* Read-only position independence (ROPI): Code and read-only data is accessed
  PC-relative. The offsets between all code and RO data sections are known at
  static link time. This does not affect read-write data.
* Read-write position independence (RWPI): Read-write data is accessed relative
  to the static base register (r9). The offsets between all writeable data
  sections are known at static link time. This does not affect read-only data.

These two modes are independent (they specify how different objects
should be addressed), so they can be used individually or together. They
are otherwise the same as the "static" relocation model, and are not
compatible with SysV-style PIC using a global offset table.

These modes are normally used by bare-metal systems or systems with
small real-time operating systems. They are designed to avoid the need
for a dynamic linker, the only initialisation required is setting r9 to
an appropriate value for RWPI code.

I have only added support to SelectionDAG, not FastISel, because
FastISel is currently disabled for bare-metal targets where these modes
would be used.

Differential Revision: https://reviews.llvm.org/D23195

llvm-svn: 278015
2016-08-08 15:28:31 +00:00
..
ARMAddressingModes.h [ARM] Add ARMv8.2-A FP16 scalar instructions 2016-01-25 10:26:26 +00:00
ARMAsmBackend.cpp MC] Provide an MCTargetOptions to implementors of MCAsmBackendCtorTy, NFC 2016-07-25 17:18:28 +00:00
ARMAsmBackend.h Fix branch relaxation in 16-bit mode. 2016-07-11 14:23:53 +00:00
ARMAsmBackendDarwin.h MachO: enable .data_region directives everywhere 2016-04-21 23:00:17 +00:00
ARMAsmBackendELF.h Make more headers self-contained. 2016-01-27 18:03:37 +00:00
ARMAsmBackendWinCOFF.h Don't put classes in headers into anonymous namespaces. 2016-01-27 19:29:42 +00:00
ARMBaseInfo.h Don't print (PLT) on arm. 2016-06-16 16:09:53 +00:00
ARMELFObjectWriter.cpp [ARM] Add support for embedded position-independent code 2016-08-08 15:28:31 +00:00
ARMELFStreamer.cpp [ARM] Add ARMv8-M Baseline/Mainline LLVM targeting 2016-01-15 10:24:39 +00:00
ARMFixupKinds.h Fix for pr24346: arm asm label calculation error in sub 2016-04-01 09:40:47 +00:00
ARMMCAsmInfo.cpp [ARM] Set a non-conflicting comment character for assembly in MSVC mode 2016-07-27 12:31:58 +00:00
ARMMCAsmInfo.h Revert r247692: Replace Triple with a new TargetTuple in MCTargetDesc/* and related. NFC. 2015-09-15 16:17:27 +00:00
ARMMCCodeEmitter.cpp ARM: validate immediate branch targets in AsmParser. 2016-07-11 22:29:37 +00:00
ARMMCExpr.cpp
ARMMCExpr.h Fix pr24486. 2015-10-05 12:07:05 +00:00
ARMMCTargetDesc.cpp Delete MCCodeGenInfo. 2016-06-30 18:25:11 +00:00
ARMMCTargetDesc.h MC] Provide an MCTargetOptions to implementors of MCAsmBackendCtorTy, NFC 2016-07-25 17:18:28 +00:00
ARMMachORelocationInfo.cpp Reflect the MC/MCDisassembler split on the include/ level. 2016-01-26 16:44:37 +00:00
ARMMachObjectWriter.cpp ARM: fix handling of movw/movt relocations with addend. 2016-02-23 20:20:23 +00:00
ARMTargetStreamer.cpp [ARM] Fix several state persistence bugs 2016-01-12 13:38:15 +00:00
ARMUnwindOpAsm.cpp
ARMUnwindOpAsm.h
ARMWinCOFFObjectWriter.cpp
ARMWinCOFFStreamer.cpp [MC, COFF] Support link /incremental conditionally 2015-12-21 22:09:27 +00:00
CMakeLists.txt
LLVMBuild.txt