diff options
-rw-r--r-- | llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp | 7 | ||||
-rw-r--r-- | llvm/test/MC/PowerPC/pr24686.s | 7 |
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 |