mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-25 13:24:46 +00:00
Relax COFF string table check
COFF object files with 0 as string table size are currently rejected. This prevents us from reading object files written by tools like cvtres that violate the PECOFF spec and write 0 instead of 4 for the size of an empty string table. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@202292 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -409,9 +409,13 @@ error_code COFFObjectFile::initSymbolTablePtr() {
|
||||
getObject(StringTable, Data, StringTableAddr, StringTableSize))
|
||||
return EC;
|
||||
|
||||
// Treat table sizes < 4 as empty because contrary to the PECOFF spec, some
|
||||
// tools like cvtres write a size of 0 for an empty table instead of 4.
|
||||
if (StringTableSize < 4)
|
||||
StringTableSize = 4;
|
||||
|
||||
// Check that the string table is null terminated if has any in it.
|
||||
if (StringTableSize < 4 ||
|
||||
(StringTableSize > 4 && StringTable[StringTableSize - 1] != 0))
|
||||
if (StringTableSize > 4 && StringTable[StringTableSize - 1] != 0)
|
||||
return object_error::parse_failed;
|
||||
return object_error::success;
|
||||
}
|
||||
|
Reference in New Issue
Block a user