HAVE_INITFINI_ARRAY support was added by: http://gcc.gnu.org/ml/gcc-patches/2002-11/msg00387.html Unfortunately, it checks if host supports init_array/fini_array sections, not target. It will generate wrong result for cross compiler.
A patch is posted at http://gcc.gnu.org/ml/gcc-patches/2011-06/msg00659.html
Author: hjl Date: Sat Jun 18 14:48:14 2011 New Revision: 175181 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=175181 Log: Properly check if .init_array can be used with .ctors on targets. 2011-06-18 H.J. Lu <hongjiu.lu@intel.com> PR other/49325 * acinclude.m4 (gcc_AC_INITFINI_ARRAY): Properly check if .init_array can be used with .ctors on targets. * configure: Regenerated. Modified: trunk/gcc/ChangeLog trunk/gcc/acinclude.m4 trunk/gcc/configure
Fixed for 4.7.
Author: jingyu Date: Wed Feb 22 22:04:39 2012 New Revision: 184493 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=184493 Log: 2012-02-21 Jing Yu <jingyu@google.com> Google Ref 47894 Backport from mainline r177933, r175181, r177963, r178116, r183299. 2011-08-20 H.J. Lu <hongjiu.lu@intel.com> PR other/46770 * config.gcc (tm_file): Add initfini-array.h if .init_arrary/.fini_array are supported. * crtstuff.c: Don't generate .ctors nor .dtors sections if USE_INITFINI_ARRAY is defined. * output.h (default_elf_init_array_asm_out_constructor): New. (default_elf_fini_array_asm_out_destructor): Likewise. * varasm.c (elf_init_array_section): Likewise. (elf_fini_array_section): Likewise. (get_elf_initfini_array_priority_section): Likewise. (default_elf_init_array_asm_out_constructor): Likewise. (default_elf_fini_array_asm_out_destructor): Likewise. * config/initfini-array.h: New. 2011-06-18 H.J. Lu <hongjiu.lu@intel.com> PR other/49325 * acinclude.m4 (gcc_AC_INITFINI_ARRAY): Properly check if .init_array can be used with .ctors on targets. * configure: Regenerated. 2011-08-22 H.J. Lu <hongjiu.lu@intel.com> * acinclude.m4 (gcc_AC_INITFINI_ARRAY): Error if __ELF__ isn't defined. * configure: Regenerated. 2011-08-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> PR target/50166 * acinclude.m4 (gcc_AC_INITFINI_ARRAY): Check count in main. * configure: Regenerate. 2012-01-19 Jakub Jelinek <jakub@redhat.com> PR bootstrap/50237 * config/initfini-array.h: Guard content of the header with #ifdef HAVE_INITFINI_ARRAY. * configure.ac: Move gcc_AC_INITFINI_ARRAY much later into the file. Add initfini-array.h to tm_file here. * acinclude.m4 (gcc_AC_INITFINI_ARRAY): For non-ia64 do a linker test. * config.gcc: Don't add initfini-array.h to tm_file here. * configure: Regenerated. Added: branches/google/gcc-4_6/gcc/config/initfini-array.h Modified: branches/google/gcc-4_6/gcc/ChangeLog.google-4_6 branches/google/gcc-4_6/gcc/acinclude.m4 branches/google/gcc-4_6/gcc/configure branches/google/gcc-4_6/gcc/configure.ac branches/google/gcc-4_6/gcc/crtstuff.c branches/google/gcc-4_6/gcc/output.h branches/google/gcc-4_6/gcc/varasm.c
Author: jingyu Date: Wed Feb 22 22:26:40 2012 New Revision: 184494 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=184494 Log: 2012-02-21 Jing Yu <jingyu@google.com> Bakcport r175181, r177963, r178116, r183299 from mainline. 2011-06-18 H.J. Lu <hongjiu.lu@intel.com> PR other/49325 * acinclude.m4 (gcc_AC_INITFINI_ARRAY): Properly check if .init_array can be used with .ctors on targets. * configure: Regenerated. 2011-08-22 H.J. Lu <hongjiu.lu@intel.com> * acinclude.m4 (gcc_AC_INITFINI_ARRAY): Error if __ELF__ isn't defined. * configure: Regenerated. 2011-08-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> PR target/50166 * acinclude.m4 (gcc_AC_INITFINI_ARRAY): Check count in main. * configure: Regenerate. 2012-01-19 Jakub Jelinek <jakub@redhat.com> PR bootstrap/50237 * config/initfini-array.h: Guard content of the header with #ifdef HAVE_INITFINI_ARRAY. * configure.ac: Move gcc_AC_INITFINI_ARRAY much later into the file. Add initfini-array.h to tm_file here. * acinclude.m4 (gcc_AC_INITFINI_ARRAY): For non-ia64 do a linker test. * config.gcc: Don't add initfini-array.h to tm_file here. * configure: Regenerated. Modified: branches/google/gcc-4_6_2-mobile/gcc/ChangeLog.google-4_6 branches/google/gcc-4_6_2-mobile/gcc/acinclude.m4 branches/google/gcc-4_6_2-mobile/gcc/config.gcc branches/google/gcc-4_6_2-mobile/gcc/config/initfini-array.h branches/google/gcc-4_6_2-mobile/gcc/configure branches/google/gcc-4_6_2-mobile/gcc/configure.ac