[dmd-internals] phobos fails with the new compiler

Sean Kelly sean at invisibleduck.org
Mon Jan 25 07:25:46 PST 2010


Is it ever called?  I ran into a problem with the last release where some static initialization dependencies were lost.

On Jan 25, 2010, at 6:52 AM, Andrei Alexandrescu wrote:

> With the new beta, unittests in std.stdio fail. Apparently this is because the unittests run before static module initialization takes place.
> 
> std.stdio relies on std.stdiobase to perform static initialization. The latter module defines
> 
> static this()
> {
>    std_stdio_static_this();
> }
> 
> and in turn that calls:
> 
> extern(C) void std_stdio_static_this()
> {
>    //printf("std_stdio_static_this()\n");
> 
>    //Bind stdin, stdout, stderr
>    __gshared File.Impl stdinImpl;
>    stdinImpl.handle = core.stdc.stdio.stdin;
>    .stdin.p = &stdinImpl;
>    // stdout
>    __gshared File.Impl stdoutImpl;
>    stdoutImpl.handle = core.stdc.stdio.stdout;
>    .stdout.p = &stdoutImpl;
>    // stderr
>    __gshared File.Impl stderrImpl;
>    stderrImpl.handle = core.stdc.stdio.stderr;
>    .stderr.p = &stderrImpl;
> }
> 
> This function is not called (I uncommented the printf). The unittests are then invoked, and one of them checks whether std.stdio.stdin was initialized properly.
> 
> Walter, did you change something in module initialization?
> 
> 
> Andrei
> _______________________________________________
> dmd-internals mailing list
> dmd-internals at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/dmd-internals



More information about the dmd-internals mailing list