Not sure if this is fixed yet in the latest version of TCC (I haven't used
TCC since I discovered the bug), but the last version of TCC that I used
had this bug. When it writes an EXE file, it leaves 3 of the PE header
fields blank. While the resulting EXE file does seem to run properly, the
EXE file itself does not meet the official specifications, and therefore is
technically an invalid EXE file. The PE header of the EXE file has these 3
fields left being set at 0
SizeOfCode
SizeOfInitializedData
SizeOfUninitializedData

So here's how those 3 header fields are supposed to be filled out:

SizeOfCode should equal the number of bytes of compiled machine code in the
EXE file. This should be the size of the .text section of the EXE file.
This should never be 0.

SizeOfInitialized data should (if there is a .data section in the EXE file)
should equal the number of
bytes of initialized data. This should only be 0 if there is no .data
section.

SizeOfUninitializedData data should (if there is a .bss section in the EXE
file) should equal the number of bytes of uninitialized data. This should
only be 0 if there is no .bss section.
_______________________________________________
Tinycc-devel mailing list
Tinycc-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/tinycc-devel

Reply via email to