Created attachment 1098
repro case
This crash might have multiple causes. I compile my project with:
dmd -g -unittest -debug -X -Xf"Debug\thBase.json"
-IC:\Users\Benjamin\Documents\d-projects\druntime\import
-IC:\Users\Benjamin\Documents\d-projects\phobos -version=NOGCSAFE
-version=thBase_test -deps="Debug\thBase.dep" -of"Debug\thBase.exe_cv" -map
"Debug\thBase.map" -L/NOMAP -defaultlib=phobosnogc -debuglib=phobosnogc
gcstub.obj -v @Debug\thBase.build.rsp
Dmd launches optlink with:
link.exe
gcstub+"Debug\thBase","Debug\thBase.exe_cv","Debug\thBase.map",user32+kernel32/m/co/noi/NOMAP;
Which causes optlink to crash with EIP=00000000
The first thing which might be a bug in dmd is, that the phobosnogc library is
missing in the link command which I specified both with defaultlib and
debuglib.
If I manually specifiy the phobosnogc.lib in the build command dmd generates
the following link command:
link.exe
gcstub+"Debug\thBase","Debug\thBase.exe_cv","Debug\thBase.map","phobosnogc.lib"+user32+kernel32/m/co/noi/NOMAP;
Which still causes optlink to crash with EIP=00000000.
If I however let dmd only compile and then manually link with:
link.exe
"phobosnogc"+gcstub+"Debug\thBase","Debug\thBase.exe_cv","Debug\thBase.map",user32+kernel32/m/co/noi/NOMAP;
Optlink links everything fine and the executable works just as it should.
So there seem to be 3 different issues here:
1) dmd does not pass the library specified with debuglib defaultlib to optlink
2) Optlink crashes with EIP=00000000
3) The order in which you pass the library files to optlink changes optlink
behaviour.
This issue exists with dmd 2.058 and optlink 8.00.12. See attached repro case.
Comment #1 by code — 2012-04-21T02:34:34Z
I'm going to try adding a reduced source to reproduce the issue.