* Don't overwrite the MZ header when there are no long section names.
* Correct an error including 4 more bytes than needed in the coff strings.
* Brought to you by Arty.

svn path=/trunk/; revision=59938
This commit is contained in:
Amine Khaldi 2013-09-01 13:23:54 +00:00
parent 762f3e87da
commit af5ce0ae6b

View file

@ -1161,13 +1161,18 @@ CreateOutputFile(FILE *OutFile, void *InData,
} }
} }
if (OutFileHeader->PointerToSymbolTable)
{
fseek(OutFile, OutFileHeader->PointerToSymbolTable, 0); fseek(OutFile, OutFileHeader->PointerToSymbolTable, 0);
/* COFF string section is preceeded by a length */ /* COFF string section is preceeded by a length */
assert(sizeof(StringTableLength) == 4);
fwrite((char*)&StringTableLength, 1, sizeof(StringTableLength), OutFile); fwrite((char*)&StringTableLength, 1, sizeof(StringTableLength), OutFile);
/* We just copy enough of the string table to contain the strings we want /* We just copy enough of the string table to contain the strings we want
The string table length technically counts as part of the string table The string table length technically counts as part of the string table
space itself. */ space itself. */
fwrite(StringTable+4, 1, StringTableLength, OutFile); fwrite(StringTable + 4, 1, StringTableLength - 4, OutFile);
}
if (PaddedRosSym) if (PaddedRosSym)
{ {