使用 objtool 處理 vmlinux.o 對像是 Linux 內核構建過程中最消耗內存的步驟。之前的補丁已經在編譯 Linux 內核時減少了 objtool 內存使用,現在為 Linux 6.5 設置的大型補丁系列將大幅減少最大堆使用。
在啟用 CONFIG_DEBUG_INFO 的情況下構建完整的調試 Linux 內核版本 (allyesconfig) 時,DWARF 創建了近 2 億個重定位。目前,這個大型 Linux 內核調試版本可能會導致 objtool 峰值堆使用達到 53GB。但得益於 Linux 6.5 中的這些優化,峰值堆使用量將降至 25GB 左右。
對於不太激烈的場景,這些 objtool 優化也有好處。啟用間接分支跟踪 (IBT) 的發行版內核構建將使 objtool 的峰值堆使用量從 4.2GB 下降到 2.8GB 左右。
除了大幅降低峰值堆之外使用這些 objtool 優化也會導致更快的運行時間,進而縮短內核構建時間。
這是 Josh Poimboeuf 對 objtool 進行的一組很好的改進。這些更改以及一些調試改進和展開器增強功能已於今天早上作為 objtool 更改 的一部分發送出去適用於 Linux 6.5 內核。