Correctly compute the size of common symbols in COFF.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219324 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola
2014-10-08 17:37:19 +00:00
parent c5dc4aa8ad
commit 8e5fbd755f
2 changed files with 10 additions and 5 deletions

View File

@ -222,12 +222,17 @@ std::error_code COFFObjectFile::getSymbolSize(DataRefImpl Ref,
if (std::error_code EC = getSection(Symb.getSectionNumber(), Section))
return EC;
if (Symb.getSectionNumber() == COFF::IMAGE_SYM_UNDEFINED)
Result = UnknownAddressOrSize;
else if (Section)
if (Symb.getSectionNumber() == COFF::IMAGE_SYM_UNDEFINED) {
if (Symb.getValue() == 0)
Result = UnknownAddressOrSize;
else
Result = Symb.getValue();
} else if (Section) {
Result = Section->SizeOfRawData - Symb.getValue();
else
} else {
Result = 0;
}
return object_error::success;
}