summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorAmara Emerson <amara.emerson@arm.com>2014-05-27 13:30:21 +0000
committerAmara Emerson <amara.emerson@arm.com>2014-05-27 13:30:21 +0000
commitceeb1c48302aa2400d0e13e44d74f5d0527e9237 (patch)
tree0dfceb00cda3683c2eb33aef740f07dade43da77 /llvm/lib/Target
parent10e06da0310702d1b0d7e82804ddceb8e1102c12 (diff)
downloadbcm5719-llvm-ceeb1c48302aa2400d0e13e44d74f5d0527e9237.tar.gz
bcm5719-llvm-ceeb1c48302aa2400d0e13e44d74f5d0527e9237.zip
[ARM] Emit correct build attributes for the relocation models.
Patch by Asiri Rathnayake. llvm-svn: 209656
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/ARM/ARMAsmPrinter.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp
index 2b97e015bf4..55e9fe5f5c5 100644
--- a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp
+++ b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp
@@ -671,6 +671,20 @@ void ARMAsmPrinter::emitAttributes() {
ATS.emitFPU(ARM::VFPV2);
}
+ if (TM.getRelocationModel() == Reloc::PIC_) {
+ // PIC specific attributes.
+ ATS.emitAttribute(ARMBuildAttrs::ABI_PCS_RW_data,
+ ARMBuildAttrs::AddressRWPCRel);
+ ATS.emitAttribute(ARMBuildAttrs::ABI_PCS_RO_data,
+ ARMBuildAttrs::AddressROPCRel);
+ ATS.emitAttribute(ARMBuildAttrs::ABI_PCS_GOT_use,
+ ARMBuildAttrs::AddressGOT);
+ } else {
+ // Allow direct addressing of imported data for all other relocation models.
+ ATS.emitAttribute(ARMBuildAttrs::ABI_PCS_GOT_use,
+ ARMBuildAttrs::AddressDirect);
+ }
+
// Signal various FP modes.
if (!TM.Options.UnsafeFPMath) {
ATS.emitAttribute(ARMBuildAttrs::ABI_FP_denormal, ARMBuildAttrs::Allowed);
OpenPOWER on IntegriCloud