I checked the assembler output from gcc and it seems OK, the .comm
directives for s1 to 4 are the same as for GNU/Linux.
Of course! __align__ works in DJGPP, I tested it when LSB tags were
introduced.
So either the assembler or linker is doing something bad.
They don't: DECL_ALIGN works on platforms other than XP.
DJGPP also runs something called stubify after the linker, I don't
know what it does, but it could also be responsible.
It isn't. stubify simply prepends a small 2KB stub to the otherwise
COFF executable, since DOS and Windows don't know how to run COFF
images. The stub is a DOS program that, when invoked, loads the COFF
image into memory, switches the CPU into 32-bit protected mode, and
then passes control to the entry point of the COFF image.