_ -fPIC と -fPIE 最近こういうこまかい調べたことをメモってなくて、たぶんよくないなあと思っている。というのは数年後忘れてるんで… 現状、 fPIC はたぶん fPIE より必ず強い制限というか、つまり fPIC でビルドすれば PIE として使えるバイナリになるけど、 fPIE でコンパイラしたバイナリはたぶん so として使えない場合がある。 両者の違いは TLS の扱いと自分の中での関数 call 。前者は shared object 用であるところの -fPIC の方が遅いけど generic なコードができるというか、 executable 用であるとわかってれば多少 optimize できる、っていうのが Ulrich の TLS 文章に書いてある。 自分の中での関数 call は -fPIC だと PLT 経由になるけど、 -fPIE だと直接呼び出しになる。まぁ