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.

Attachment: initfini.patch
Description: Binary data

Reply via email to