我在編寫內核時試圖調試我有的鏈接器問題。鏈接器腳本:調試策略?
的問題是,我有一個變量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
,我在這兩個破碎的和正確的情況下得到的。
接下來我應該嘗試什麼?
投票關閉的調試幫助。 –