-Map=mapfile
GNU リンカのオプションで生成されたマップ ファイルを調べているときに、奇妙なことに気付きました。セクションに属するものとしていくつかのシンボルがリストされていました.text
が、バイナリのシンボルテーブルにはそれらが.rodata
セクションの一部としてリストされていました。コンパイラはおそらくこれらのシンボルが読み取られるだけであると判断したため、これはある種の生意気な最適化であると思われますが、マップファイルがそれを反映していないことに驚いています。私の理解では、リンクはコンパイル プロセスのほぼ最終段階であり、すべての最適化はその前に行われます。あれは正しいですか?これらのシンボルが後で最適化されたのはなぜですか?
ご想像のとおり、ツールチェーンは GCC です。ソースコードはCで書かれています。