tinycc-devel
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]