[COFF] Gracefully handle empty .drectve sections
Running `llvm-readobj -coff-directives msvcrt.lib` resulted in this error:
Invalid data was encountered while parsing the file
This happened because some of the object files in the archive have empty
`.drectve` sections. These empty sections result in a `parse_failed` error being
returned from `COFFObjectFile::getSectionContents()`, which in turn caused
`llvm-readobj` to stop. With this change, `getSectionContents` now returns
success, and like before the resulting array is empty.
Patch by Dave Lee.
Differential Revision: https://reviews.llvm.org/D32652
llvm-svn: 303014
This commit is contained in:
@@ -1062,7 +1062,7 @@ COFFObjectFile::getSectionContents(const coff_section *Sec,
|
||||
// In COFF, a virtual section won't have any in-file
|
||||
// content, so the file pointer to the content will be zero.
|
||||
if (Sec->PointerToRawData == 0)
|
||||
return object_error::parse_failed;
|
||||
return std::error_code();
|
||||
// The only thing that we need to verify is that the contents is contained
|
||||
// within the file bounds. We don't need to make sure it doesn't cover other
|
||||
// data, as there's nothing that says that is not allowed.
|
||||
|
||||
Reference in New Issue
Block a user