[Bug target/46770] Replace .ctors/.dtors with .init_array/.fini_array on targets supporting them
hjl.tools at gmail dot com
gcc-bugzilla@gcc.gnu.org
Sat Dec 11 22:57:00 GMT 2010
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46770
--- Comment #31 from H.J. Lu <hjl.tools at gmail dot com> 2010-12-11 22:56:35 UTC ---
Just to make it clear. We support
---
`init_priority (PRIORITY)'
In Standard C++, objects defined at namespace scope are guaranteed
to be initialized in an order in strict accordance with that of
their definitions _in a given translation unit_. No guarantee is
made for initializations across translation units. However, GNU
C++ allows users to control the order of initialization of objects
defined at namespace scope with the `init_priority' attribute by
specifying a relative PRIORITY, a constant integral expression
currently bounded between 101 and 65535 inclusive. Lower numbers
indicate a higher priority.
In the following example, `A' would normally be created before
`B', but the `init_priority' attribute has reversed that order:
Some_Class A __attribute__ ((init_priority (2000)));
Some_Class B __attribute__ ((init_priority (543)));
Note that the particular values of PRIORITY do not matter; only
their relative ordering.
---
It works at source code level. I don't believe we ever support
"interleaving constructor priorities" between object files, with
.ctors or .init_array.
More information about the Gcc-bugs
mailing list