Hello guys,

first of all I'd like to thank everyone who takes part in tcc development:
it's amazing tool and actually the fastest and smallest compiler I know
about! I'm glad that I've found it some years ago and especially glad that
it is being developed even now.

The question I have is that I write an open-source project, a big library
which provides some Unicode functionality as well as portable filesystem
functions and various I/O stuff. I write in C89 with the POSIX standard in
mind, but Woe32 is supported as well. The only difficulty I met is that I
need to find some analogue for GCC's `__attribute__((constructor))' and
`__attribute__((destructor))'. This is the absolutely necessary evil, since
I want to get path to current directory right before `main()' is called.

These attributes work under gcc and clang; they also seem to work with pcc,
though I prefer to use `_Pragma("init")' and `_Pragma("fini")' instead. I
even found the way to achieve the same goal in MSVC. However, tcc seems to
ignore `__attribute__', so this approach doesn't help.

A quick search approves my own investigations. It is a pity that tcc lacks
this feature; I know it is a non-standard but this is the only reliable way
to make an automatic library startup/cleanup without forcing user to call
some `weird_lib_init()' and `weird_lib_fini' functions. Is this feature
hard to implement? I don't know an assembler, I only heard that this
functionality is usually achieved via some kind of `.ctors/.dtors' or
`.init_array/.fini_array', where pointers to functions (or their code?) are
stored (well, for ELF). But probably there may be a simpler way.

I'd also like to help if this problem can be solved without assembler code.
If there is anything I can do I'd like to be useful, so please don't
hesitate to ask me! Could you please think about implementing this feature?

Thank you for your help!
_______________________________________________
Tinycc-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/tinycc-devel

Reply via email to