From: Danny S. <dan...@cl...> - 2004-12-28 20:51:03
|
Michael Gerdau wrote: > Hi list ! > > I'm currently upgrading our production system from mingw-gcc-3.3.3 > to mingw-gcc-3.4.2 (including newest binutils,w32api, runtime etc.) > > So far everything works fine. > > However I there one difference I came across and that involves > setting the subsystem to console for DLLs. > > My Makefiles routinely do set the subsystem to console for everything > that's not explicitly a GUI exe. When using > mingw-gcc-3.3.3, runtime-3.3, w32api-2.5 and binutils-2.15.90-20040222 > this was no problem. > > However with > mingw-gcc-3.4.2, runtime-3.5, w32api-3.1 and binutils-2.15.91-20040904 > I am no longer able to load my applications. > > Some investigations discovered that having '-Wl,--subsystem,console' > in the linker cmd for the DLL is the culprit (i.e. removing that > solves my problems). > > While I have no problem with removing the above switch for DLLs I'd > like to ask those in the know whether this behavior is intentional > and why it used to work with the above older version and not anymore > etc. etc. > > Could someone please enlighten me here ? > It is a bug in ld.exe. In fact, I am responsible for the bug so I'll submit a patch to fix after further testing. What is happening is that the --subsystem option is overriding the startup entry routine switch -e set by gcc specs for -shared and resetting the entry address to mainCRTstartup. Danny > Thank you, best, > Michael |