Index: lld/trunk/ELF/InputSection.cpp =================================================================== --- lld/trunk/ELF/InputSection.cpp +++ lld/trunk/ELF/InputSection.cpp @@ -694,6 +694,8 @@ 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); } } Index: lld/trunk/test/ELF/invalid/mips-invalid-options-descriptor.s =================================================================== --- lld/trunk/test/ELF/invalid/mips-invalid-options-descriptor.s +++ lld/trunk/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