From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22695 invoked by alias); 11 Dec 2010 21:01:16 -0000 Received: (qmail 22685 invoked by uid 22791); 11 Dec 2010 21:01:15 -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 21:01:11 +0000 From: "hubicka at ucw dot cz" 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: hubicka at ucw dot cz 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 21:01: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/msg01222.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46770 --- Comment #28 from Jan Hubicka 2010-12-11 21:01:08 UTC --- So I take that, the ctor order is to support priotities, since the .ctor.priority sections get merged into single and ordered in increasing rather than decreasing order, while init_array gets around the problem. > Shared libraries are OK. Only static ones may have this issue. > > > think that means adding linker smarts that detect that there are both > > .ctor.* and .init_array.* sections and issuing an error -- not a warning > > I will work on a linker patch. Can't linker be told to translate .ctor section into init_array upon seeing the fact that both are used? (or just do it by default) > > We need a gcc option to select .ctor or .init_array. We can have that, but I can imiagine this to be hard to handle for users when dealing with environment having multiple compiler - i.e. user can use icc or PathScale (or old GCC) that uses .ctors and it will be refused to link with system library because that one was built with new GCC... Also with LTO we probably want to swap the construction and destruction order. I immitated the ctor/dtor mechanizm. Given that things can be freely reversed, I would go for that. Also it would be nice to decide if LTO is right WRT mixing LTO and non-LTO objects together. Thanks for explanation! Honza