David Brown <da...@westcontrol.com> writes: > > Some toolchains are configured to have a series of "init" sections at > startup (technically, that's a matter of the default linker scripts > and libraries rather than the compiler). You can get code to run at > specific times during startup by placing the instructions directly > within these sections - but it must be "raw" instructions, not > function definitions (and definitely no "return" statement).
Note that this only works with modern gcc with -fno-reorder-toplevel, which disables some optimizations, and is currently broken in several ways with LTO (in progress of being fixed) Normally you don't get any defined order in these sections, both unit-at-a-time and LTO do reorder. The linker may also in some circumstances. So it's somewhat dangerous to rely on. -Andi