From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12336 invoked by alias); 11 Dec 2010 14:15:18 -0000 Received: (qmail 12325 invoked by uid 22791); 11 Dec 2010 14:15:17 -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 14:15:13 +0000 From: "hubicka at gcc dot gnu.org" 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 gcc dot gnu.org 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 14:15: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/msg01187.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46770 --- Comment #7 from Jan Hubicka 2010-12-11 14:15:04 UTC --- Hi, thanks for testcase. What I was concerned about is the static linking case. When you have static library with constructors and main program with constructors, my understanding was that the reverse execution order of .ctor section was designed in a way so library even in this case is initialized first. Now because ctors are handled before init_array, this no longer happen. I.e. when I turn foo1.c into library (and add function used from foo.o) and compile as gcc -o foo4 foo2.o foo.o -l foo -L. I still get init_array main fini_array dtor i.e. the library is initialized later. I am not sure that this is actual requirement, or QOI issue or just something I was told to explain why ctor section is executed backwards while dtors forward (it would make more sense performance wise to reverse this). But in order to approve the patch I need to unerstand this better... Honza