Bug 13172 – optimize and rawread cause symbol undefined errors

Status
RESOLVED
Resolution
WORKSFORME
Severity
normal
Priority
P1
Component
dmd
Product
D
Version
D2
Platform
x86_64
OS
Windows
Creation time
2014-07-20T22:05:55Z
Last change time
2017-10-25T03:26:10Z
Assigned to
No Owner
Creator
maarten

Attachments

IDFilenameSummaryContent-TypeSize
1372example1.dexample 1: OKtext/plain86
1373example2.dexample 2: fails with -inlinetext/plain87

Comments

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.
Comment #12 by tomer — 2015-02-10T12:56:46Z
Ketmar: we get this on linux too. Specifically, see https://issues.dlang.org/show_bug.cgi?id=14043
Comment #13 by ketmar — 2015-02-10T12:58:54Z
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.