Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Fucking MingW

Name: Cudder !MhMRSATORI!fR8duoqGZdD/iE5 2012-11-04 9:11

#include <stdio.h>

int main() {
 printf("Hello world!\n");
 return 0;
}


Default MingW compilation+link size: 47KB
Best MingW compilation+link size: 8KB

Default MSVC compilation+link size: 40KB
Best MSVC compilation+link size: 1KB

After postprocessing:
MingW (using MS's linker and libs): 1594 bytes
MSVC: 624 bytes

What the fuck? Am I missing something here?

MingW optimised command line (compile only):
gcc -nostdlib -Os -c -s -o hello.obj hello.c -Wl,--gc-sections,--section-alignment,4096,--file-alignment,512

MingW link command line:
link hello.obj msvcrtlib mainstub.obj /align:4096 /filealign:512 /entry:main /merge:.rdata=.text /merge:.eh_fram=.text /merge:.text.st=.text /section:.text,EWR /stub:mzstub64.exe

mainstub.obj is a dummy __main because libming32.a which is supposed to contain it also contains __CTOR_LIST_ and some other C++ shit. I'm compiling a C program, with gcc, and they force you to link with a bunch of C++ shit? Are you kidding me?

(Why won't it merge the bloody .eh_fram and .text.st sections?!?! Maybe this is a bug of MS's linker since it merges fine with its own compiler output, but the compiler shouldn't be generating .eh_fram and .text.st anyway!)

Executables for your inspecting:
MingW: http://pastebin.com/vZn5WtMz
MSVC: http://pastebin.com/AV63Hr5x

Therefore, I challenge anyone to come up with a smaller Hello World using MingW, and post the commands you used to do it.

Name: Cudder !MhMRSATORI!fR8duoqGZdD/iE5 2012-11-05 1:34

>>5
Not performance, but efficiency. I guess the better question to ask is <i>why are you using gcc</i>. That's not by choice, there's too much opensource code out there that's dependent on its features. (I'm thankful that at least gcc produces COFF that MSVC's linker can consume, and not its own format.)

>>6
I don't care about "scalability" or whatever you call it, if it can't do a basic "Hello World" at least as efficient as MSVC, then it's worse. The majority of the projects I work on are <32KB anyway.

>>19-23
TCC has no optimisation at all. So long as it's not too much, I don't care if a compile takes longer if it can produce more efficient output.

>>29
So that's how you merge sections... can you set the section attribute to EWR too?

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List