public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "adivilceanu at yahoo dot com" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug target/54791] AIX-only: Constructors are not called in main program.
Date: Wed, 07 Nov 2012 15:25:00 -0000	[thread overview]
Message-ID: <bug-54791-4-jbzL1N07Uf@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-54791-4@http.gcc.gnu.org/bugzilla/>


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54791

--- Comment #18 from Adi <adivilceanu at yahoo dot com> 2012-11-07 15:25:27 UTC ---
Follow up on comment 17:


1) I did try to set the priority on the shared lib (via -binitfini) and it does
not work.  I mean the priority is set but the exe is still the one that is
getting initialized first.

2) I did manage to make my project work with shared libs by doing the following
hack:
I rewrite the generated file(the one collect2 generates) from /tmp so that the
_GLOBAL__FI_<name of my exe> is calling the _GLOBAL__FI_<name_of_my_shaderlib>:
void _GLOBAL__FI_<name of my exe>() {
        _GLOBAL__FI_<name_of_my_shaderlib>;
    static entry_pt *ctors[] = {
        x11,
    reg_frame,
    };
    entry_pt **p;
    if (count++ != 0) return;
    p = ctors + 2;
    while (p > ctors) (*--p)();
} 
Then I recompiled this file and relink it with ld and it works.

So basically I got the lib to get initialized before the exe is initialized.
It is true though that my whole lib will be initialized and only after that my
exe will be. So if I set init_priority on 2 objects(one in exe and on in the
shared lib) it will not work. I mean always all the objects from the lib will
get initialized first regardless of the init_priority on the exe. Right ?

Can you tell me a more elegant solution to this ?(if there is). If not at least
how can I do this more automatically? Now I do some steps manually(like going
to /tmp and modify that file and recompile it and relink).

I wander how this has worked with xlC. There we used the -p flag when linking
the shared libraries with makeCCSharedLibs, and I think (not 100% sure )the
library got first initialized.


  parent reply	other threads:[~2012-11-07 15:25 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-03  9:20 [Bug c++/54791] New: " adivilceanu at yahoo dot com
2012-10-03  9:40 ` [Bug target/54791] " paolo.carlini at oracle dot com
2012-10-03 13:47 ` dje at gcc dot gnu.org
2012-11-02 14:49 ` adivilceanu at yahoo dot com
2012-11-02 14:52 ` adivilceanu at yahoo dot com
2012-11-03  6:21 ` adivilceanu at yahoo dot com
2012-11-03  6:24 ` adivilceanu at yahoo dot com
2012-11-03 13:49 ` dje at gcc dot gnu.org
2012-11-03 19:15 ` adivilceanu at yahoo dot com
2012-11-03 22:48 ` dje at gcc dot gnu.org
2012-11-05 14:34 ` adivilceanu at yahoo dot com
2012-11-05 18:55 ` dje at gcc dot gnu.org
2012-11-05 21:14 ` adivilceanu at yahoo dot com
2012-11-06 14:46 ` dje at gcc dot gnu.org
2012-11-06 16:23 ` adivilceanu at yahoo dot com
2012-11-06 21:50 ` adivilceanu at yahoo dot com
2012-11-07  1:27 ` dje at gcc dot gnu.org
2012-11-07 14:46 ` adivilceanu at yahoo dot com
2012-11-07 15:25 ` adivilceanu at yahoo dot com [this message]
2012-11-07 22:15 ` dje at gcc dot gnu.org
2012-11-13  8:21 ` adivilceanu at yahoo dot com
2012-11-13  8:30 ` adivilceanu at yahoo dot com
2012-11-13 14:03 ` dje at gcc dot gnu.org
2012-11-13 14:09 ` adivilceanu at yahoo dot com
2012-11-14 14:20 ` dje at gcc dot gnu.org
2012-11-27 15:54 ` adivilceanu at yahoo dot com
2012-11-27 18:55 ` adivilceanu at yahoo dot com
2012-11-27 19:01 ` adivilceanu at yahoo dot com
2012-11-27 20:42 ` dje at gcc dot gnu.org
2012-11-28 14:01 ` adivilceanu at yahoo dot com
2012-11-28 19:35 ` dje at gcc dot gnu.org
2012-11-29  9:35 ` adivilceanu at yahoo dot com
2012-11-29  9:44 ` adivilceanu at yahoo dot com
2012-12-01 21:42 ` dje at gcc dot gnu.org
2015-03-18 12:42 ` dje at gcc dot gnu.org
2015-03-18 12:49 ` dje at gcc dot gnu.org

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-54791-4-jbzL1N07Uf@http.gcc.gnu.org/bugzilla/ \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).