This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug bootstrap/50237] [4.7 regression] comparison failure caused by HAVE_INITFINI_ARRAY check
- From: "ebotcazou at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 30 Aug 2011 15:00:54 +0000
- Subject: [Bug bootstrap/50237] [4.7 regression] comparison failure caused by HAVE_INITFINI_ARRAY check
- Auto-submitted: auto-generated
- References: <bug-50237-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50237
--- Comment #6 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2011-08-30 15:00:54 UTC ---
> How does stage 2 binutils fail the test?
It doesn't. Let me explain:
- during stage1, the check is made with the host compiler, i.e. the base
compiler, so the old binutils are used and the check fails, that's why we have
/* #undef HAVE_INITFINI_ARRAY */
in stage1-gcc/auto-host.h. This means that the stage1 compiler doesn't have
the support. Since this compiler is used to compile stage2 libcpp/lex.o, the
file gets the .ctors section.
- during stage2, the check is made with the host cmpiler, i.e. the stage 1
compiler, so the new binutils (--with-as=, --with-ld) are used and the check
succeeds, that's why we have
#define HAVE_INITFINI_ARRAY 1
in stage2-gcc/auto-host.h. This means that the stage2 compiler has the
support.
Since this compiler is used to compile stage3 libcpp/lex.o, the file gets the
.init_array section.
The fix is to turn the check into a target check, i.e. test the target
binutils.
See configure.ac:1884 and below.