[Object] Return an error code instead of asserting

This makes it easier to report errors up the stack.

llvm-svn: 271140
This commit is contained in:
David Majnemer 2016-05-28 19:45:51 +00:00
parent a6d93fd73b
commit e21296626c
1 changed files with 4 additions and 4 deletions

View File

@ -950,10 +950,10 @@ uint64_t COFFObjectFile::getSectionSize(const coff_section *Sec) const {
std::error_code
COFFObjectFile::getSectionContents(const coff_section *Sec,
ArrayRef<uint8_t> &Res) const {
// PointerToRawData and SizeOfRawData won't make sense for BSS sections,
// don't do anything interesting for them.
assert((Sec->Characteristics & COFF::IMAGE_SCN_CNT_UNINITIALIZED_DATA) == 0 &&
"BSS sections don't have contents!");
// 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;
// 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.