From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11078 invoked by alias); 30 Aug 2011 15:01:13 -0000 Received: (qmail 11063 invoked by uid 22791); 30 Aug 2011 15:01:12 -0000 X-SWARE-Spam-Status: No, hits=-2.9 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from localhost (HELO gcc.gnu.org) (127.0.0.1) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 30 Aug 2011 15:00:58 +0000 From: "ebotcazou at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug bootstrap/50237] [4.7 regression] comparison failure caused by HAVE_INITFINI_ARRAY check Date: Tue, 30 Aug 2011 15:30:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: bootstrap X-Bugzilla-Keywords: X-Bugzilla-Severity: blocker X-Bugzilla-Who: ebotcazou at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: P1 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: 4.7.0 X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2011-08/txt/msg02416.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50237 --- Comment #6 from Eric Botcazou 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.