Index: src/IceTargetLoweringX8664.cpp |
diff --git a/src/IceTargetLoweringX8664.cpp b/src/IceTargetLoweringX8664.cpp |
index f22d1f8919b7743a164f045ca8598fc296dc7f0b..8af60e32c58c2fb651d20cf23afc2d9afc5c82ac 100644 |
--- a/src/IceTargetLoweringX8664.cpp |
+++ b/src/IceTargetLoweringX8664.cpp |
@@ -99,6 +99,14 @@ template <> |
llvm::SmallBitVector |
TargetX86Base<TargetX8664>::ScratchRegs = llvm::SmallBitVector(); |
+template <> |
+FixupKind TargetX86Base<TargetX8664>::PcRelFixup = |
+ TargetX86Base<TargetX8664>::Traits::FK_PcRel; |
+ |
+template <> |
+FixupKind TargetX86Base<TargetX8664>::AbsFixup = |
+ TargetX86Base<TargetX8664>::Traits::FK_Abs; |
+ |
} // end of namespace X86Internal |
//------------------------------------------------------------------------------ |
@@ -337,7 +345,7 @@ void TargetX8664::lowerCall(const InstCall *Instr) { |
void TargetX8664::lowerArguments() { |
VarList &Args = Func->getArgs(); |
- // The first eight vetcor typed arguments (as well as fp arguments) are |
+ // The first eight vector typed arguments (as well as fp arguments) are |
// passed in %xmm0 through %xmm7 regardless of their position in the argument |
// list. |
unsigned NumXmmArgs = 0; |
@@ -879,11 +887,12 @@ void TargetDataX8664::lowerConstants() { |
} |
void TargetDataX8664::lowerJumpTables() { |
+ const bool IsPIC = Ctx->getFlags().getUseNonsfi(); |
switch (Ctx->getFlags().getOutFileType()) { |
case FT_Elf: { |
ELFObjectWriter *Writer = Ctx->getObjectWriter(); |
for (const JumpTableData &JumpTable : Ctx->getJumpTables()) |
- Writer->writeJumpTable(JumpTable, TargetX8664::Traits::RelFixup); |
+ Writer->writeJumpTable(JumpTable, TargetX8664::Traits::FK_Abs, IsPIC); |
} break; |
case FT_Asm: |
// Already emitted from Cfg |
@@ -909,11 +918,12 @@ void TargetDataX8664::lowerJumpTables() { |
void TargetDataX8664::lowerGlobals(const VariableDeclarationList &Vars, |
const IceString &SectionSuffix) { |
+ const bool IsPIC = Ctx->getFlags().getUseNonsfi(); |
switch (Ctx->getFlags().getOutFileType()) { |
case FT_Elf: { |
ELFObjectWriter *Writer = Ctx->getObjectWriter(); |
- Writer->writeDataSection(Vars, TargetX8664::Traits::RelFixup, |
- SectionSuffix); |
+ Writer->writeDataSection(Vars, TargetX8664::Traits::FK_Abs, SectionSuffix, |
+ IsPIC); |
} break; |
case FT_Asm: |
case FT_Iasm: { |