ARM: support tlscall relocations
authorSaleem Abdulrasool <compnerd@compnerd.org>
Thu, 30 Jan 2014 04:02:31 +0000 (04:02 +0000)
committerSaleem Abdulrasool <compnerd@compnerd.org>
Thu, 30 Jan 2014 04:02:31 +0000 (04:02 +0000)
commit9629ad300552f1a34f806eae90afb85bc6c55e9b
tree901a202de9c80f36d61e0730b4e6357b4a442d5a
parentd26c0e731ced4dfcb1dfe9c67b0822fe96d0ad6a
ARM: support tlscall relocations

This adds support for TLS CALL relocations.  TLS CALL relocations are used to
indicate to the linker to generate appropriate entries to resolve TLS references
via an appropriate function invocation (e.g. __tls_get_addr(PLT)).

In order to accomodate the linker relaxation of the TLS access model for the
references (GD/LD -> IE, IE -> LE), the relocation addend must be incomplete.
This requires that the partial inplace value is also incomplete (i.e. 0).  We
simply avoid the offset value calculation at the time of the fixup adjustment in
the ARM assembler backend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200446 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/MC/MCExpr.h
lib/MC/MCExpr.cpp
lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp
test/MC/ARM/symbol-variants.s