Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

It's hard when compilers force you to use "main".

  int main(int argc, char **argv);
I once wrote a liblinux library for Linux software development with freestading C. One of the things I did was replace the "main" function with a "liblinux_start" function.


Ada compiler does not force to use main


That's just the default. Nobody stops you from specifying `gcc -Wl,--entry,foo`.


Standard C stops you. The C standard library is hardcoded to call the main function. Providing one's own ELF entry point also breaks libc initialization unless the exact same startfiles are used.

Freestanding C gets rid of the libc so that's not a problem.


Maybe you could also do some runtime linking trickery when dynamically linking libc?


The libc could easily add support for such a thing but I doubt they'd care enough to. They'd probably see it as adding complexity for zero gain.

I submitted an issue to the GCC bugzilla about renaming certain symbols generated by compiler.

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113694

I don't know how to implement it and nobody else cared enough to.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: