ToDo:
最近こういうこまかい調べたことをメモってなくて、たぶんよくないなあと思っている。というのは数年後忘れてるんで…
現状、 fPIC はたぶん fPIE より必ず強い制限というか、つまり fPIC でビルドすれば PIE として使えるバイナリになるけど、 fPIE でコンパイラしたバイナリはたぶん so として使えない場合がある。
両者の違いは TLS の扱いと自分の中での関数 call 。前者は shared object 用であるところの -fPIC の方が遅いけど generic なコードができるというか、 executable 用であるとわかってれば多少 optimize できる、っていうのが Ulrich の TLS 文章に書いてある。
自分の中での関数 call は -fPIC だと PLT 経由になるけど、 -fPIE だと直接呼び出しになる。まぁたぶんリンカに -Bsymbolic つけると PLT 経由じゃなくなるんで、両者同じになる。
あと裏取ってないけど、この関係は -shared と -pie の関係とほぼ同じ、だと思う。 -pie だと TLS 向け optimization が走るのはいい思う。後者の方も、 -pie は -Bsymbolic を imply する気がするけど、実際そうなるかは確かめてないから確かめる必要がある…
(18:23)
オレオレメモはまだまだいろいろある気がするけど、すでにだいぶ忘れつつある気がしてよくない。
(18:36)
前 | 2013年 11月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。