Static ctors in wasm
H. S. Teoh
hsteoh at qfbox.info
Thu Feb 15 21:45:50 UTC 2024
On Fri, Feb 09, 2024 at 01:22:28AM +0000, kinke via Digitalmars-d wrote:
> On Friday, 9 February 2024 at 01:17:26 UTC, kinke wrote:
> > Oh well, looks like wasm-ld (i.e., lld) supports exactly the same
> > magic `__{start,stop}_*` symbols as for ELF:
> > https://github.com/llvm/llvm-project/issues/55839
>
> Oh man, I've even added an LDC test for this, but almost 4 years ago
> and so forgot. :D
>
> https://github.com/ldc-developers/ldc/blob/3c21924705aae83f0c16bfe54e673953671afe58/tests/codegen/wasi.d#L22-L39
Hmm, I'm running into a problem here. Following the above link I
declared the symbols like this:
```d
extern(C) extern __gshared
{
void* __start__minfo;
void* __stop__minfo;
}
```
However, when I check their values at runtime:
```d
export void _wasm_start() // this is called from my JS bridge
{
writefln("__start__minfo=0x%x", &__start__minfo);
writefln("__end__minfo=0x%x", &__stop__minfo);
}
```
(I have a bare-bones version of writefln running for debugging purposes.)
The output says:
````
__start__minfo=0x0
__end__minfo=0x%0
````
What gives?
For reference, I'm using LDC 1.36.0 on x86_64--linux-gnu, with these
compile flags:
-mtriple=wasm32-unknown-unknown-wasm -Iplatform/wasm -O2 -L-allow-undefined -allinst -linkonce-templates --fvisibility=hidden
I had --fno-rtti before and it didn't work; I removed it but it still
made no difference. I guess it's unrelated to RTTI. Also, I tried
removing --fvisibility-hidden but it also made no difference.
What am I doing wrong?
T
--
Give a man a fish, and he eats once. Teach a man to fish, and he will sit forever.
More information about the Digitalmars-d
mailing list