xref: /netbsd-src/external/gpl3/gcc.old/dist/libphobos/testsuite/libphobos.shared/load_loaddep.d (revision 627f7eb200a4419d89b531d55fccd2ee3ffdcde0)
1*627f7eb2Smrg import core.runtime;
2*627f7eb2Smrg import core.stdc.string;
3*627f7eb2Smrg import core.sys.posix.dlfcn;
4*627f7eb2Smrg 
5*627f7eb2Smrg extern(C) alias RunDepTests = int function(const char*);
6*627f7eb2Smrg 
main(string[]args)7*627f7eb2Smrg void main(string[] args)
8*627f7eb2Smrg {
9*627f7eb2Smrg     auto name = args[0] ~ '\0';
10*627f7eb2Smrg     const pathlen = strrchr(name.ptr, '/') - name.ptr + 1;
11*627f7eb2Smrg     auto root = name[0 .. pathlen];
12*627f7eb2Smrg     auto libloaddep = root ~ "libloaddep.so";
13*627f7eb2Smrg     auto h = Runtime.loadLibrary(libloaddep);
14*627f7eb2Smrg     auto runDepTests = cast(RunDepTests)dlsym(h, "runDepTests");
15*627f7eb2Smrg     assert(runDepTests((root ~ "lib.so\0").ptr));
16*627f7eb2Smrg     assert(Runtime.unloadLibrary(h));
17*627f7eb2Smrg }
18