Comment #0 by maartenvd1994 — 2014-07-20T22:05:55Z
when compiling with -O -release -inline -noboundscheck, the following program:
import std.stdio;
uint[] meuh(){
File f;
uint[] vfield=new uint[](3);
return f.rawRead(vfield);
}
void main(){}
gives the following error :
Error 42: Symbol Undefined _D3std9exception133__T12errnoEnforceTbVAyaa50_433a5c
445c646d64325c77696e646f77735c62696e5c2e2e5c1079E2AF018CEE885E4194B2927ACD6F
--- errorlevel 1
This also failes to compile with optimization flags on ldmd2 . It is possible to use '-allinst' to make it compile on dmd.
Not that this does compile without optimization flags, and it does compile on linux
Comment #1 by maartenvd1994 — 2014-07-22T16:57:03Z
it's possible to remove the linker errors by adding std/exception.d to the to-compile file list but then the program immediatly runs out of memory, even though it doesn't when you don't optimize it.
Comment #2 by maartenvd1994 — 2014-07-22T18:48:36Z
commenting out the line with errnoEnforce in std/stdio.d fixes my problems (but probably breaks a few things). It's not worthy of a patch but it's good enough for me.
Comment #3 by jyxent — 2014-07-24T17:39:28Z
I get the same issue on linux with dmd git head.
The -inline flag causes the issue for me. I can add -O -release and -noboundscheck without getting the linker issue.
Comment #4 by gassa — 2014-07-28T14:15:42Z
I got that bug, too.
I have a small family of examples here.
-----example1.d:OK-----
import std.stdio;
void main () {
ubyte [256] buf;
stdin.rawRead (buf);
}
-----
-----example2.d:Fails with -inline-----
import std.stdio;
void main () {
ushort [256] buf; // same with uint
stdin.rawRead (buf);
}
-----
Checked with DMD 2.064.2, DMD 2.065.0 and DMD 2.066-0-b6, the results are roughly the same.
Example 1 is OK.
In example 2, certain optimizations lead to linker errors. To compile successfully, just run "dmd <file>.d". For versions 2.064 and 2.066, just adding "-inline" causes a linker error. For 2.065, the error requires the full "-release -inline -noboundscheck" to be reproduced locally.
-----With "-m32" (OPTLINK):-----
OPTLINK (R) for Win32 Release 8.00.15
Copyright (C) Digital Mars 1989-2013 All rights reserved.
http://www.digitalmars.com/ctg/optlink.html
example2.obj(example2)
Error 42: Symbol Undefined _D3std9exception140__T12errnoEnforceTbVAyaa53_433a5c546f6f6c735c646d645c77696e646f77735c62696e5cE611F934D2BE6B410FCD651C953DEFB1
--- errorlevel 1
-----
-----With "-m64" (MS VS 12.0 linker):-----
example2.obj : error LNK2019: unresolved external symbol _D3std9exception140__T12errnoEnforceTbVAyaa53_433a5c546f6f6c735c646d645c77696e646f77735c62696e5c2e2e5c2e2e5c7372635c70686f626f735c7374645c737464696f2e64Vmi717Z12errnoEnforceFNfbLAyaZb referenced in function _D3std5stdio4File14__T7rawReadTtZ7rawReadMFAtZAt
example2.exe : fatal error LNK1120: 1 unresolved externals
--- errorlevel 1120
-----
Comment #5 by gassa — 2014-07-28T14:16:27Z
Created attachment 1372
example 1: OK
Comment #6 by gassa — 2014-07-28T14:16:51Z
Created attachment 1373
example 2: fails with -inline
Comment #7 by qctechs — 2014-12-27T00:37:53Z
*** Issue 13898 has been marked as a duplicate of this issue. ***
Comment #8 by qctechs — 2015-01-28T20:01:33Z
*** Issue 14043 has been marked as a duplicate of this issue. ***
Comment #9 by tomer — 2015-02-10T11:14:03Z
Any news on this one? I think I'm seeing something similar in my code, but it's too much code to pin-point an excerpt and post here.
Comment #10 by ketmar — 2015-02-10T12:53:53Z
can't confirm on GNU/Linux x86, dmd git head, commit b9c8ded6
Comment #11 by ketmar — 2015-02-10T12:54:29Z
ah… i missed "hardware" section for the bug. sorry for the noise.
yes, but this seems to be x86_64 issue, and i checked it on x86. so i confirmed the thing that is not needed to be confirmed. ;-)
Comment #14 by justin — 2015-02-19T22:20:03Z
*** Issue 14202 has been marked as a duplicate of this issue. ***
Comment #15 by briancschott — 2015-02-20T22:13:44Z
I'm not able to reproduce this with 2.067.0-b2.
Comment #16 by joeyemmons — 2015-02-22T00:30:14Z
(In reply to briancschott from comment #15)
> I'm not able to reproduce this with 2.067.0-b2.
Had the same bug and switching to 2.067.0-b2 also fixed it.
See http://forum.dlang.org/thread/[email protected]
Comment #17 by bugzilla — 2017-10-25T03:26:10Z
(In reply to joeyemmons from comment #16)
> (In reply to briancschott from comment #15)
> > I'm not able to reproduce this with 2.067.0-b2.
>
> Had the same bug and switching to 2.067.0-b2 also fixed it.
> See http://forum.dlang.org/thread/[email protected]
I'll mark it as WORKSFORME then.