summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/ELF/InputSection.cpp2
-rw-r--r--lld/test/ELF/invalid/Inputs/mips-invalid-options-descriptor.elfbin0 -> 480 bytes
-rw-r--r--lld/test/ELF/invalid/mips-invalid-options-descriptor.s5
3 files changed, 7 insertions, 0 deletions
diff --git a/lld/ELF/InputSection.cpp b/lld/ELF/InputSection.cpp
index 3341a799f6e..8137b16035d 100644
--- a/lld/ELF/InputSection.cpp
+++ b/lld/ELF/InputSection.cpp
@@ -694,6 +694,8 @@ MipsOptionsInputSection<ELFT>::MipsOptionsInputSection(elf::ObjectFile<ELFT> *F,
error(getName(this) + ": unsupported non-zero ri_gp_value");
break;
}
+ if (!O->size)
+ fatal(getName(this) + ": zero option descriptor size");
D = D.slice(O->size);
}
}
diff --git a/lld/test/ELF/invalid/Inputs/mips-invalid-options-descriptor.elf b/lld/test/ELF/invalid/Inputs/mips-invalid-options-descriptor.elf
new file mode 100644
index 00000000000..85feeebc619
--- /dev/null
+++ b/lld/test/ELF/invalid/Inputs/mips-invalid-options-descriptor.elf
Binary files differ
diff --git a/lld/test/ELF/invalid/mips-invalid-options-descriptor.s b/lld/test/ELF/invalid/mips-invalid-options-descriptor.s
new file mode 100644
index 00000000000..2fd5bf5a513
--- /dev/null
+++ b/lld/test/ELF/invalid/mips-invalid-options-descriptor.s
@@ -0,0 +1,5 @@
+## mips-invalid-options-descriptor.elf has option descriptor in
+## .MIPS.options with size of zero.
+# RUN: not ld.lld %p/Inputs/mips-invalid-options-descriptor.elf -o %t2 2>&1 | \
+# RUN: FileCheck %s
+# CHECK: zero option descriptor size
OpenPOWER on IntegriCloud