解析の結果得られたよくわからない知見
● VDSOとは
https://linuxjm.osdn.jp/html/LDP_man-pages/man7/vdso.7.html
一部のsyscallを、syscallせずにユーザ空間で処理して返すことで処理高速化。
sysdeps/unix/sysv/linux/aarch64/init-first.c によれば
__vdso_gettimeofday, __vdso_clock_gettime, __vdso_clock_getres らしい
● __PRETTY_FUNCTION__
gcc拡張で、__PRETTY_FUNCTION__が使える
他に、__FILE__, __LINE__, __FUNCTION__, __DATE__, __TIME__, __FUNCDNAME__, __FUNCSIG__
● デフォルトのリンカスクリプト
$ ld --verbose するとよい → 参考: 革命の日々 その2: システムのデフォルトリンカスクリプトを調べる方法
● .ctor .dtor セクション
gcc-4.7から、init_array fini_array に変更された、互換性のためにからっぽセクションが作られる
...いや、新しいgccではもう作ってないな、新しい glibc は互換性のために見るようだ。
● preinit_array
なにに使われてるかよくわからない・・・
__attribute__((section(.preinit_array))) したらセグった、
ライブラリ呼び出しとかするにはアドレス変換とか必要なのかもしれない
● exit()
__libc_atexit には _IO_cleanup しか登録されていないので、
fflushしつつexitしたい場合は _IO_cleanup() だけよべばよさげ。
・・・と思ったけどシンボルないと怒られた、、_IO_cleanup() を呼ぶだけの fcloseall() を使えば良いみた
い。
● quick_exit()
あまりquickじゃないので、_exit()でよいと思う。