[Issue 13287] New: Plugin can't access its moduleinfo in constructors
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Tue Aug 12 03:05:56 PDT 2014
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 at puremagic.com
Reporter: johannespfau at 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.
--
More information about the Digitalmars-d-bugs
mailing list