カーネルを書いたとき、私は、私が持っているリンカの問題をデバッグしようとしています。リンカースクリプト:デバッグのための戦略?
問題は、私は、私が使用することはできませんよ変数SCAN_CODE_MAPPING
を持っているということである - 空か何かのように見えます。プログラムをリンクする方法を変更することでこれを修正できますが、理由はわかりません。
objdump
を使って生成されたバイナリファイルを見ると、その変数のデータは確かにそこにあります。そのため、参照が壊れているだけです。リンカスクリプトと二つのファイル間で異なるのシンボルテーブルの一部の両方を持つ
Here's a gist。私を混乱させる何
は、シンボルテーブルの両方がすべて同じ符号を持っている、彼らはすべて同じ長さだし、彼らは右のデータが含まれているように見えるということです。私が見ることができる唯一の違いは、彼らは同じ順序ではないということです。
は、これまでのところ私はそれは私が期待したデータを持っており、ゼロにされていないことを確認するためにSCAN_CODE_MAPPING
メモリ位置を検査
- 試してみた
- すべてのシンボルが同じ であることを確認します
- すべてのシンボルの内容は、それがデータのアドレスを持っていることを確認する
.data.rel.ro.local
を見て、同じ長さ - であることを確認し
warning: uninitialized space declared in non-BSS section `.text': zeroing
:
一つの可能な手掛かりは、この警告です。
私は次は何を試してみてください?
投票助けをデバッグすると閉じます。 –