extern void* __dso_handle;

と宣言してこの __dso_handle の NULL チェックを行うことによって自分が dynamic link されているか static link されているかを知ることができる。ちなみに __dso_handle の中身はただの自分自身を差すポインタ。

crt(begin|end)S.o はたぶん PIC のため、 crt(begin|end)T.o は例外関係か。

crtbeginT.o 内の __EH_FRAME_BEGIN__ と __(de)?register_frame_info_bases 以外はだいたい crt 内のシンボルがわかった気がした、たぶん。

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