[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Tinycc-devel] __attribute__((constructor)) not getting called
From: |
Steffen Nurpmeso |
Subject: |
Re: [Tinycc-devel] __attribute__((constructor)) not getting called |
Date: |
Tue, 04 Oct 2022 15:51:09 +0200 |
User-agent: |
s-nail v14.9.24-321-gd738b0a4bd |
Liam Wilson wrote in
<CAO5MFrpVKkLVFg91=Bfjm-UpAoj03HA=Ey-kGmkZiOBdLrjjOQ@mail.gmail.com>:
|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-1\
|264615934
|I just missed it as I was using a slightly older version of the API.
Somehow interesting that such a huge API does not offer macros to
hide the declspec from module implementors.
But great! (That is how i would have done it, and it worked
twenty years ago.)
Ciao,
--steffen
|
|Der Kragenbaer, The moon bear,
|der holt sich munter he cheerfully and one by one
|einen nach dem anderen runter wa.ks himself off
|(By Robert Gernhardt)
Re: [Tinycc-devel] __attribute__((constructor)) not getting called, Michael Matz, 2022/10/05