On Sat, 1 Oct 2022 at 17:00, Steffen Nurpmeso <stef...@sdaoden.eu> wrote: > > Liam Wilson wrote in > <cao5mfrout56vlh68eoxjfupi-60byda1bhfpngrwziedqq1...@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 _______________________________________________ Tinycc-devel mailing list Tinycc-devel@nongnu.org https://lists.nongnu.org/mailman/listinfo/tinycc-devel