aboutsummaryrefslogtreecommitdiff
path: root/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp')
-rw-r--r--lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp b/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp
index 5d240fe847..6ad8669d04 100644
--- a/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp
+++ b/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp
@@ -18,6 +18,13 @@
#include "llvm/Support/ErrorHandling.h"
#include <list>
+// @LOCALMOD-START
+// TODO(petarj): HACK! Find better way to set ELF::EF_MIPS_PIC flag.
+// See also file lib/MC/MCObjectFileInfo.cpp.
+#include "llvm/Support/CodeGen.h"
+extern llvm::Reloc::Model RelocModelOption;
+// @LOCALMOD-END
+
using namespace llvm;
namespace {
@@ -71,6 +78,10 @@ unsigned MipsELFObjectWriter::getEFlags() const {
Flag |= ELF::EF_MIPS_ARCH_64R2;
else
Flag |= ELF::EF_MIPS_ARCH_32R2;
+ /* @LOCLAMOD-START */
+ if (RelocModelOption == Reloc::PIC_ || RelocModelOption == Reloc::Default)
+ Flag |= ELF::EF_MIPS_PIC;
+ /* @LOCLAMOD-END */
return Flag;
}