The attachment is a complete patch for [google/gcc-4_6] branch, to replace .ctors/.dtors with .init_array/.fini_array.
Bootstrap and crosstool testers pass. I have verified that "gcc_cv_initfini_array=no", which means the crosstool will do whatever it did before (won't replace .ctors/.dtors with .init_array/.fini_array). I also built Android toolchain and verified "gcc_cv_initfini_array=no". r177933 is already in google/gcc-4_6_2-mobile and google/gcc-4_6-mobile. I need to backport the rest to these two branches. ok? 2012-02-21 Jing Yu <jin...@google.com> Google Ref 47894 Backport from mainline r177933, r175181, r177963, r178116, r183299. 2011-08-20 H.J. Lu <hongjiu...@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...@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...@intel.com> * acinclude.m4 (gcc_AC_INITFINI_ARRAY): Error if __ELF__ isn't defined. * configure: Regenerated. 2011-08-26 Rainer Orth <r...@cebitec.uni-bielefeld.de> PR target/50166 * acinclude.m4 (gcc_AC_INITFINI_ARRAY): Check count in main. * configure: Regenerate. 2012-01-19 Jakub Jelinek <ja...@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. Thanks, Jing On Tue, Feb 21, 2012 at 9:34 AM, H.J. Lu <hjl.to...@gmail.com> wrote: > On Mon, Feb 20, 2012 at 11:31 PM, Jing Yu <jin...@google.com> wrote: >> Hi H.J., >> >> I think the patch itself is not enough. >> I compared "AC_DEFUN([gcc_AC_INITFINI_ARRAY]" part (in acinclude.m4) >> of gcc trunk and google/gcc-4_6_2-mobile, and found how >> enable_initfini_array is >> configured is different. >> >> The patch breaks some of our tests. enable_initfini_array should be >> disabled for cross compile by default. But it is not true in our >> branch. Could you please point us all related patches? >> > > I missed this backport. There are some additional changes needed for > non-Linux systems: > > http://gcc.gnu.org/ml/gcc-cvs/2011-08/msg00978.html > http://gcc.gnu.org/ml/gcc-cvs/2011-08/msg01132.html > http://gcc.gnu.org/ml/gcc-cvs/2012-01/msg00544.html > > > > -- > H.J.
initfini.patch
Description: Binary data