digitalmars.D.bugs - [Issue 13287] New: Plugin can't access its moduleinfo in constructors
- via Digitalmars-d-bugs (52/52) Aug 12 2014 https://issues.dlang.org/show_bug.cgi?id=13287
https://issues.dlang.org/show_bug.cgi?id=13287 Issue ID: 13287 Summary: Plugin can't access its moduleinfo in constructors Product: D Version: D2 Hardware: All OS: Linux Status: NEW Severity: normal Priority: P1 Component: druntime Assignee: nobody puremagic.com Reporter: johannespfau gmail.com load.d --------------- import core.runtime, std.stdio; void main(string[] args) { auto name = args[0]; assert(name[$-5 .. $] == "/load"); name = name[0 .. $-4] ~ "lib.so"; writeln("laoding" ~ name); Runtime.loadLibrary(name); } --------------- test.d --------------- module test; import std.stdio; shared static this() { bool found = false; foreach(minfo; ModuleInfo) { if(minfo.name == "test") found = true; } writeln("Found: ", found); } --------------- dmd test.d -shared -oflib.so -fPIC -defaultlib=libphobos2.so -L-rpath=./linux/lib64/ -L-L./linux/lib64/ dmd load.d -defaultlib=libphobos2.so -L-rpath=./linux/lib64/ -L-L./linux/lib64/ LD_LIBRARY_PATH=. ./load laoding./lib.so Found: false Tested with dmd 2.065.0 This is actually a problem because std.encoding actually does use moduleinfo in its constructor. In GDC we'll probably ship libgdrutime.so and libgphobos.so. If the main program now does not link against libphobos and loads a plugin which links against libphobos it'll trigger this bug. --
Aug 12 2014