[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