起動順序としては、 main 以前に、 _start => __libc_start_main => __libc_csu_init => _init から、 __do_global_ctors_aux が呼ばれる。これは __CTOR_LIST__ と __CTOR_END__ の間を実行してまわる。この間には _GLOBAL__I_main や、 _GLOBAL__I_hoge.c などがあって、これがそれがそれぞれのファイルが持っている static 関数、 __static_initialization_and_destruction_0 を呼ぶ。

__CTOR_LIST__ と __CTOR_END__ の間にはリンク時に全オブジェクトファイルの .ctors セクション内シンボル、つまり _GLOBAL__I_main などがリンカスクリプトによってうまく入るようになっている。

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h