Index: lib/Target/ARM/ARMTargetObjectFile.cpp |
diff --git a/lib/Target/ARM/ARMTargetObjectFile.cpp b/lib/Target/ARM/ARMTargetObjectFile.cpp |
index 48238bfcf696b25d85fbfac71d415732fe290f56..5beb7e2cd09d4f7bd3f7aa14fc83cd85092048a6 100644 |
--- a/lib/Target/ARM/ARMTargetObjectFile.cpp |
+++ b/lib/Target/ARM/ARMTargetObjectFile.cpp |
@@ -10,6 +10,8 @@ |
#include "ARMTargetObjectFile.h" |
#include "ARMSubtarget.h" |
#include "llvm/ADT/StringExtras.h" |
+#include "llvm/ADT/Triple.h" // @LOCALMOD |
+#include "llvm/CodeGen/MachineModuleInfo.h" // @LOCALMOD |
#include "llvm/IR/Mangler.h" |
#include "llvm/MC/MCAsmInfo.h" |
#include "llvm/MC/MCContext.h" |
@@ -31,7 +33,9 @@ void ARMElfTargetObjectFile::Initialize(MCContext &Ctx, |
TargetLoweringObjectFileELF::Initialize(Ctx, TM); |
InitializeELF(isAAPCS_ABI); |
- if (isAAPCS_ABI) { |
+ // @LOCALMOD-BEGIN |
+ if (isAAPCS_ABI && !TM.getSubtarget<ARMSubtarget>().isTargetNaCl()) { |
+ // @LOCALMOD-END |
LSDASection = nullptr; |
} |
@@ -51,6 +55,13 @@ const MCExpr *ARMElfTargetObjectFile::getTTypeGlobalReference( |
GV, Encoding, Mang, TM, MMI, Streamer); |
assert(Encoding == DW_EH_PE_absptr && "Can handle absptr encoding only"); |
+ // @LOCALMOD-BEGIN |
+ // FIXME: There has got to be a better way to get this info. |
+ Triple T(MMI->getModule()->getTargetTriple()); |
+ if (T.isOSNaCl()) |
+ return TargetLoweringObjectFileELF::getTTypeGlobalReference( |
+ GV, Encoding, Mang, TM, MMI, Streamer); |
+ // @LOCALMOD-END |
return MCSymbolRefExpr::Create(TM.getSymbol(GV, Mang), |
MCSymbolRefExpr::VK_ARM_TARGET2, getContext()); |