On Wed, Jun 9, 2021 at 4:00 AM Richard Biener <richard.guent...@gmail.com> wrote: > > On Wed, Jun 9, 2021 at 1:13 AM H.J. Lu via Gcc-patches > <gcc-patches@gcc.gnu.org> wrote: > > > > DT_INIT_ARRAY/DT_FINI_ARRAY support was added to glibc by > > > > commit fcf70d4114db9ff7923f5dfeb3fea6e2d623e5c2 > > Author: Ulrich Drepper <drep...@redhat.com> > > Date: Sat Jul 24 19:45:13 1999 +0000 > > > > Update. > > > > 1999-07-24 Ulrich Drepper <drep...@cygnus.com> > > > > * elf/dl-fini.c: Handle DT_FINI_ARRAY. > > * elf/link.h (struct link_map): Remove l_init_running. Add > > l_runcount > > and l_initcount. > > * elf/dl-init.c: Handle DT_INIT_ARRAY. > > ... > > > > PR target/100896 > > * config.gcc (gcc_cv_initfini_array): Set to yes for Linux and > > GNU targets. > > --- > > gcc/config.gcc | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/gcc/config.gcc b/gcc/config.gcc > > index 6833a6c13d9..4dc4fe0b65c 100644 > > --- a/gcc/config.gcc > > +++ b/gcc/config.gcc > > @@ -848,6 +848,8 @@ case ${target} in > > tmake_file="${tmake_file} t-glibc" > > target_has_targetcm=yes > > target_has_targetdm=yes > > + # Linux targets always support .init_array. > > Other *linux targets specifically mention > > # Force .init_array support. The configure script cannot always > # automatically detect that GAS supports it, yet we require it. > gcc_cv_initfini_array=yes > > and thus involve binutils. Can you please change the comment > to mention the glibc and binutils versions required? It might
Done. They are glibc 2.1 and binutils 2.12. > be good to mention those in install.texi as minimal versions given Fixed. > they are not trumped by already stricter requirements. > > Otherwise I think this is OK. > > > + gcc_cv_initfini_array=yes > > ;; > > *-*-netbsd*) > > tm_p_file="${tm_p_file} netbsd-protos.h" > > -- > > 2.31.1 > > Here is the v2 patch. OK for master and release branches? Thanks. -- H.J.
From 1ab48e7abf836689581ce007d920649aecebd623 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" <hjl.to...@gmail.com> Date: Tue, 8 Jun 2021 16:09:24 -0700 Subject: [PATCH v2] Always enable DT_INIT_ARRAY/DT_FINI_ARRAY on Linux DT_INIT_ARRAY/DT_FINI_ARRAY support was added to glibc 2.1 by commit fcf70d4114db9ff7923f5dfeb3fea6e2d623e5c2 Author: Ulrich Drepper <drep...@redhat.com> Date: Sat Jul 24 19:45:13 1999 +0000 Update. 1999-07-24 Ulrich Drepper <drep...@cygnus.com> * elf/dl-fini.c: Handle DT_FINI_ARRAY. * elf/link.h (struct link_map): Remove l_init_running. Add l_runcount and l_initcount. * elf/dl-init.c: Handle DT_INIT_ARRAY. ... and added to binutils 2.12 by commit e9682144c14fc809af72bd6c0b8c69731d38679c Author: H.J. Lu <hjl.to...@gmail.com> Date: Mon Mar 4 20:40:48 2002 +0000 2002-03-04 H.J. Lu <h...@gnu.org> * config/obj-elf.c (special_section): Add .init_array, .fini_array and .preinit_array. * config/tc-ia64.h (ELF_TC_SPECIAL_SECTIONS): Remove .init_array and .fini_array. gcc/ PR target/100896 * config.gcc (gcc_cv_initfini_array): Set to yes for Linux and GNU targets. * doc/install.texi: Require glibc 2.1 and binutils 2.12 for Linux and GNU targets. --- gcc/config.gcc | 2 ++ gcc/doc/install.texi | 3 +++ 2 files changed, 5 insertions(+) diff --git a/gcc/config.gcc b/gcc/config.gcc index 6833a6c13d9..4dc4fe0b65c 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -848,6 +848,8 @@ case ${target} in tmake_file="${tmake_file} t-glibc" target_has_targetcm=yes target_has_targetdm=yes + # Linux targets always support .init_array. + gcc_cv_initfini_array=yes ;; *-*-netbsd*) tm_p_file="${tm_p_file} netbsd-protos.h" diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index 591ccaacbc1..94b167a3ed3 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -4126,6 +4126,9 @@ supported, so @option{--enable-threads=dce} does not work. @end html @anchor{x-x-linux-gnu} @heading *-*-linux-gnu +The @code{.init_array} and @code{.fini_array} sections are enabled +unconditionally which requires at least glibc 2.1 and binutils 2.12. + Versions of libstdc++-v3 starting with 3.2.1 require bug fixes present in glibc 2.2.5 and later. More information is available in the libstdc++-v3 documentation. -- 2.31.1