forked from OSchip/llvm-project
Object/COFF: Do not rely on VirtualSize being 0 in object files.
llvm-svn: 241387
This commit is contained in:
parent
cffbe7cb55
commit
d5297ee724
|
@ -918,19 +918,15 @@ uint64_t COFFObjectFile::getSectionSize(const coff_section *Sec) const {
|
|||
// whether or not we have an executable image.
|
||||
//
|
||||
// For object files, SizeOfRawData contains the size of section's data;
|
||||
// VirtualSize is always zero.
|
||||
// VirtualSize should be zero but isn't due to buggy COFF writers.
|
||||
//
|
||||
// For executables, SizeOfRawData *must* be a multiple of FileAlignment; the
|
||||
// actual section size is in VirtualSize. It is possible for VirtualSize to
|
||||
// be greater than SizeOfRawData; the contents past that point should be
|
||||
// considered to be zero.
|
||||
uint32_t SectionSize;
|
||||
if (Sec->VirtualSize)
|
||||
SectionSize = std::min(Sec->VirtualSize, Sec->SizeOfRawData);
|
||||
else
|
||||
SectionSize = Sec->SizeOfRawData;
|
||||
|
||||
return SectionSize;
|
||||
if (getDOSHeader())
|
||||
return std::min(Sec->VirtualSize, Sec->SizeOfRawData);
|
||||
return Sec->SizeOfRawData;
|
||||
}
|
||||
|
||||
std::error_code
|
||||
|
|
Loading…
Reference in New Issue