On Tue, Apr 29, 2014 at 8:08 PM, Yaron Dayagi <yarondayagi@xxxxxxxxx> wrote: > > In gcc 4.4.6 we had no problem with the order of initialization. > In gcc 4.7.2 we do have a problem. > A CPP file defined GlobalObj_1 (declared extern in the H file): > CMyClass GlobalObj_1. > Another CPP file declared GlobalObj_2 (also declared extern in the H > file).= The CPP file used copy constructor: > CMyClass GlobalObj_2(GlobalObj_1). > In 4.4.6 GlobalObj_1 was initialized first. Now GlobalObj_2 is > initialized = first. > Is this intentional? > How do I revert to old behavior? > The problem is that we have many files with many global variables (const). The C++ language does not define the order in which global variables in different files are initialized. Any such dependency in your program is a potential bug. That said, yes, GCC 4.7 did change the order. See http://gcc.gnu.org/PR46770 . You may be able to change back by configuring with --disable-initfini-array. That said, this solution is likely to be only temporary. The only permanent fix will be to remove the unsupported dependency in your C++ program. Ian