Mercurial > hg > CbC > CbC_gcc
view libphobos/testsuite/libphobos.shared/load_13414.d @ 158:494b0b89df80 default tip
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 18:13:55 +0900 |
parents | 1830386684a0 |
children |
line wrap: on
line source
import core.runtime; import core.atomic; import core.stdc.string; import core.sys.posix.dlfcn; shared uint tlsDtor, dtor; void staticDtorHook() { atomicOp!"+="(tlsDtor, 1); } void sharedStaticDtorHook() { atomicOp!"+="(dtor, 1); } void runTest(string name) { auto h = Runtime.loadLibrary(name); assert(h !is null); *cast(void function()*).dlsym(h, "_D9lib_1341414staticDtorHookOPFZv") = &staticDtorHook; *cast(void function()*).dlsym(h, "_D9lib_1341420sharedStaticDtorHookOPFZv") = &sharedStaticDtorHook; Runtime.unloadLibrary(h); assert(tlsDtor == 1); assert(dtor == 1); } void main(string[] args) { auto name = args[0] ~ '\0'; const pathlen = strrchr(name.ptr, '/') - name.ptr + 1; name = name[0 .. pathlen] ~ "lib_13414.so"; runTest(name); }