Linux 特有的 ELF 特性

定義

“第一個”程式頭是在檔案中具有最小偏移量的頭:e_phoff。

“最後一個”程式頭是在檔案中具有最大偏移量的頭:e_phoff + (e_phnum - 1) * sizeof(Elf_Phdr)。

PT_INTERP

第一個 PT_INTERP 程式頭用於定位 ELF 直譯器的檔名。 其他 PT_INTERP 頭將被忽略 (自 Linux 2.4.11 起)。

PT_GNU_STACK

最後一個 PT_GNU_STACK 程式頭定義使用者空間堆疊的可執行性 (自 Linux 2.6.6 起)。 其他 PT_GNU_STACK 頭將被忽略。

PT_GNU_PROPERTY

ELF 直譯器的最後一個 PT_GNU_PROPERTY 程式頭被使用 (自 Linux 5.8 起)。 如果直譯器沒有,則使用可執行檔案的最後一個 PT_GNU_PROPERTY 程式頭。 其他 PT_GNU_PROPERTY 頭將被忽略。