[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Tinycc-devel] __attribute__((constructor)) not getting called
From: |
Liam Wilson |
Subject: |
Re: [Tinycc-devel] __attribute__((constructor)) not getting called |
Date: |
Mon, 3 Oct 2022 22:44:31 +0000 |
On Sat, 1 Oct 2022 at 18:27, Liam Wilson <cosinusoidally@gmail.com> wrote:
>
> On Sat, 1 Oct 2022 at 17:00, Steffen Nurpmeso <steffen@sdaoden.eu> wrote:
> >
> > Liam Wilson wrote in
> > <CAO5MFrouT56VLH68eoxJfUPi-60ByDA1bhFPnGrWziEdqQ1Nng@mail.gmail.com>:
> > ...
> > |I've been attempting to build nodejs Node-API addons using the tiny c
> > |compiler. When doing this I noticed that the addons were failing to
> > |self register on load in nodejs as the constructors were failing to
> > |run. gcc worked fine, but tcc failed. Node-API addons use
> > |__attribute__((constructor)) in order to register themselves on load.
> >
> > Spoiler attack: i consider this a feature.
> > I never used static constructors in C++, and i hated Stroustrup's
> > "injection" idea. (There was a short time when i used it, but it
> > is sick.) Anyhow on first-time-init-switches ... when i create
> > a framework that uses dynamic modules, why can't i define
> > a special symbol that is called when it is defined upon load? Like
> > __nodejs_init() or something? We surely do not want to create too
> > many specifics, it is just a loose thing, maybe. Hm.
>
> Yep, I'm not a fan of static contructors either. I think explcit
> initialisation is a better idea. Unfortunately the API uses
> __attribute__((constructor)) so currently there is no work around. I
> will raise on the nodejs issue tracker though as it would be nice if
> it could optionally just call an explicit init function.
Turns out there is actually an option to have nodejs call an explicit
init function
https://github.com/nodejs/node/issues/44853#issuecomment-1264615934
I just missed it as I was using a slightly older version of the API.
Thanks
Liam
Re: [Tinycc-devel] __attribute__((constructor)) not getting called, Michael Matz, 2022/10/05