Index: src/IceTargetLoweringX8664.cpp |
diff --git a/src/IceTargetLoweringX8664.cpp b/src/IceTargetLoweringX8664.cpp |
index 6844d4adc4359606f99414424b80633d2a9bf478..8e122031d4a9fdf8c75decb7bd5d7e651d587719 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::FixupKindPcRel; |
+ |
+template <> |
+FixupKind TargetX86Base<TargetX8664>::RelFixup = |
+ TargetX86Base<TargetX8664>::Traits::FixupKindAbs; |
+ |
} // end of namespace X86Internal |
//------------------------------------------------------------------------------ |
@@ -308,7 +316,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; |
@@ -830,11 +838,13 @@ 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::FixupKindAbs, |
+ IsPIC); |
} break; |
case FT_Asm: |
// Already emitted from Cfg |
@@ -860,11 +870,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::FixupKindAbs, |
+ SectionSuffix, IsPIC); |
} break; |
case FT_Asm: |
case FT_Iasm: { |