[Issue 17707] New: unimported modules in libraries do not have their module constructors run
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Mon Jul 31 09:44:44 PDT 2017
https://issues.dlang.org/show_bug.cgi?id=17707
Issue ID: 17707
Summary: unimported modules in libraries do not have their
module constructors run
Product: D
Version: D2
Hardware: x86_64
OS: All
Status: NEW
Severity: major
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: john.loughran.colvin at gmail.com
First with object files:
% ls
app.d foo.d
% cat app.d
void main() { import core.stdc.stdio; puts("and from here"); }
% cat foo.d
static this() { import core.stdc.stdio; puts("hello"); }
% dmd -c app.d foo.d
% ls
app.d app.o foo.d foo.o
% gcc app.o foo.o -lphobos2
% ./a.out
hello
and from here
Everything looks fine there
% ar rcs foo.a foo.o
% gcc app.o foo.a -lphobos2
% ./a.out
and from here
the module constructor from foo.d has gone missing!
test on macOS and linux, with many different permutations. Splitting the object
file back out of the library makes it work again, so no information is lost.
On macOS it was easy to discover that the result of getsectbynamefromheader_64
for __DATA __minfodata is missing an entry for foo in the library case, but not
in the object case.
--
More information about the Digitalmars-d-bugs
mailing list