summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp7
-rw-r--r--llvm/test/MC/PowerPC/pr24686.s7
2 files changed, 14 insertions, 0 deletions
diff --git a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp
index ebcea9af279..75ba12b5a83 100644
--- a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp
+++ b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp
@@ -113,6 +113,13 @@ unsigned PPCELFObjectWriter::GetRelocType(const MCValue &Target,
break;
}
break;
+ case PPC::fixup_ppc_half16ds: {
+ raw_ostream &OS = *(new raw_fd_ostream(2, false));
+ Target.print(OS);
+ OS << "\n";
+ report_fatal_error("Invalid PC-relative half16ds relocation");
+ break;
+ }
case FK_Data_4:
case FK_PCRel_4:
Type = ELF::R_PPC_REL32;
diff --git a/llvm/test/MC/PowerPC/pr24686.s b/llvm/test/MC/PowerPC/pr24686.s
new file mode 100644
index 00000000000..28cba230b8c
--- /dev/null
+++ b/llvm/test/MC/PowerPC/pr24686.s
@@ -0,0 +1,7 @@
+# RUN: not llvm-mc -triple=powerpc64le-unknown-linux-gnu -filetype=obj %s \
+# RUN: 2>&1 | FileCheck %s
+
+_stext:
+ld %r5, p_end - _stext(%r5)
+
+# CHECK: LLVM ERROR: Invalid PC-relative half16ds relocation
OpenPOWER on IntegriCloud