diff options
| author | Stefan Maksimovic <stefan.maksimovic@mips.com> | 2018-01-11 10:07:47 +0000 |
|---|---|---|
| committer | Stefan Maksimovic <stefan.maksimovic@mips.com> | 2018-01-11 10:07:47 +0000 |
| commit | 5481c2176e12204ac9911cf9daca10d760b759be (patch) | |
| tree | c5b8f062368025776de9a6e572cd919decf41f1c | |
| parent | ba5fd775adf5b60dab9ae87643d367a18abd93fd (diff) | |
| download | bcm5719-llvm-5481c2176e12204ac9911cf9daca10d760b759be.tar.gz bcm5719-llvm-5481c2176e12204ac9911cf9daca10d760b759be.zip | |
[Mips] Handle one byte unsupported relocations
Fail gracefully instead of crashing upon encountering
this type of relocation.
Differential revision: https://reviews.llvm.org/D41857
llvm-svn: 322266
| -rw-r--r-- | llvm/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp | 2 | ||||
| -rw-r--r-- | llvm/test/MC/Mips/unsupported-relocation.s | 13 |
2 files changed, 15 insertions, 0 deletions
diff --git a/llvm/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp b/llvm/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp index 6d2f098a6b3..3c67743947c 100644 --- a/llvm/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp +++ b/llvm/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp @@ -225,6 +225,8 @@ unsigned MipsELFObjectWriter::getRelocType(MCContext &Ctx, switch (Kind) { case Mips::fixup_Mips_NONE: return ELF::R_MIPS_NONE; + case FK_Data_1: + report_fatal_error("MIPS does not support one byte relocations"); case Mips::fixup_Mips_16: case FK_Data_2: return IsPCRel ? ELF::R_MIPS_PC16 : ELF::R_MIPS_16; diff --git a/llvm/test/MC/Mips/unsupported-relocation.s b/llvm/test/MC/Mips/unsupported-relocation.s new file mode 100644 index 00000000000..151a559671f --- /dev/null +++ b/llvm/test/MC/Mips/unsupported-relocation.s @@ -0,0 +1,13 @@ +# RUN: not llvm-mc -triple mips-unknown-linux -filetype=obj %s 2>%t +# RUN: FileCheck %s < %t + +# Check that we emit an error for unsupported relocations instead of crashing. + + .globl x + + .data +foo: + .byte x + .byte x+1 + +# CHECK: LLVM ERROR: MIPS does not support one byte relocations |

