cc1についてのページ
おおざっぱな説明
- 基本的にgcc3.2と同じように使えますが、gcc3.2にはバグがあって、たまにプログラムを.dataセクション内に生成してしまいます。GOはそのバグを直したものです。
- このバグがあってもWindowsやLinuxでは問題なく動作するので長く気づかれないできたようですが、OSASKや「はりぼてOS」では大きな問題になります。
- 余談ですが、WindowsやLinuxで問題なく動くのは、これらのOSでは.textセクションと.dataセクションが同じセグメントに割り当てられるためです。これは逆にいうと.dataセクション内の「データも実行できる」状態であるともいえます。だからバッファをオーバーフローさせてバッファ内のウイルスコードを実行させるなんてことができるわけです(x86-64では新しい仕組みを作ってこのウイルスに対抗しましたが、そもそもOSがOSASKや「はりぼてOS」のような仕組みになっていれば、こんな問題は起きないのです)。
こめんと欄
|