From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14235 invoked by alias); 11 Dec 2010 19:57:19 -0000 Received: (qmail 14225 invoked by uid 22791); 11 Dec 2010 19:57:18 -0000 X-SWARE-Spam-Status: No, hits=-2.8 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; Sat, 11 Dec 2010 19:57:14 +0000 From: "mark at codesourcery dot com" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/46770] Replace .ctors/.dtors with .init_array/.fini_array on targets supporting them X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: target X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: mark at codesourcery dot com X-Bugzilla-Status: ASSIGNED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: hjl.tools at gmail dot com X-Bugzilla-Target-Milestone: 4.6.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 Date: Sat, 11 Dec 2010 19:57:00 -0000 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: 2010-12/txt/msg01211.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46770 --- Comment #24 from Mark Mitchell 2010-12-11 19:56:43 UTC --- On 12/11/2010 11:53 AM, hjl.tools at gmail dot com wrote: >> You have to be more specific about what you meant by "interleaving". Constructor priorities are a GNU C extension: __attribute__((constructor())) > I have said "If you have constructor priorities in .o files and .c > files, you may get different behaviors if .o files are compiled with > a different compiler, different versions of GCC or not GCC at all." Well, it sounds to me, then, that we would be introducing a binary compatibility problem to make this change. If we're going to do it, I think that means adding linker smarts that detect that there are both .ctor.* and .init_array.* sections and issuing an error -- not a warning -- together with a hint as to how to recompile so as to get either the new or old behavior. (Some people will have binary libraries they can't recompile, so we need to explain how to compile new code so that it still uses .ctor.*.)