Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

link-failure optlink crash EIP=00000000 #33

Open
dlang-bugzilla-migration opened this issue Jun 10, 2020 · 0 comments
Open

link-failure optlink crash EIP=00000000 #33

dlang-bugzilla-migration opened this issue Jun 10, 2020 · 0 comments

Comments

@dlang-bugzilla-migration

Issue.7960.attachement.1.repro.zip
Transferred from: https://issues.dlang.org/show_bug.cgi?id=7960

User @Ingrater reported (2012-Apr-21 02:31:52):

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.

User @Ingrater responded (2012-Apr-21 02:34:34):

I'm going to try adding a reduced source to reproduce the issue.

User @rainers responded (2013-Nov-23 02:35:25):

Maybe related: #11

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant