http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54791
--- Comment #16 from David Edelsohn <dje at gcc dot gnu.org> 2012-11-07 01:27:00 UTC --- G++ should create one specially named _GLOBAL__I_NNNNN_XXXXX function per constructor. collect2 sorts the constructors based on the NNNNN priority number encoded in the name. If G++ is not creating separate constructors, then that is a general G++ question and not AIX-specific. As far as the problem with shared libs, this is a known, general deficiency in AIX. This is what I referenced in comment #13. AIX runs initializers breadth-first, not depth-first. There is another GCC Bugzilla PR open about this problem.