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: Sat, 1 Oct 2022 18:27:52 +0000

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.

More generally though, it seems that no attributes will work with tcc
when including common glibc headers.

Thanks
Liam



reply via email to

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