diff --git a/llvm/test/tools/llvm-readobj/XCOFF/string-table.yaml b/llvm/test/tools/llvm-readobj/XCOFF/string-table.yaml --- a/llvm/test/tools/llvm-readobj/XCOFF/string-table.yaml +++ b/llvm/test/tools/llvm-readobj/XCOFF/string-table.yaml @@ -32,9 +32,10 @@ ## There is no string table. # RUN: yaml2obj --docnum=3 %s -o %t3 -# RUN: llvm-readobj --string-table %t3 | FileCheck %s --check-prefix=NO-STRTBL +# RUN: llvm-readobj --string-table %t3 2>&1 | FileCheck %s --check-prefix=NO-STRTBL # NO-STRTBL: StringTable { +# NO-STRTBL-NEXT: error: offset is out of string contents # NO-STRTBL-NEXT: } --- !XCOFF diff --git a/llvm/tools/llvm-readobj/ObjDumper.cpp b/llvm/tools/llvm-readobj/ObjDumper.cpp --- a/llvm/tools/llvm-readobj/ObjDumper.cpp +++ b/llvm/tools/llvm-readobj/ObjDumper.cpp @@ -54,8 +54,10 @@ void ObjDumper::printAsStringList(StringRef StringContent, size_t StringDataOffset) { - if (StringContent.size() < StringDataOffset) + if (StringContent.size() < StringDataOffset) { + reportUniqueWarning("error: offset is out of string contents"); return; + } const uint8_t *StrContent = StringContent.bytes_begin(); // Some formats contain additional metadata at the start which should not be // interpreted as strings. Skip these bytes, but account for them in the