ELF Format 筆記(四)—— 節(Section),elfsection

來源:互聯網
上載者:User

ELF Format 筆記(四)—— 節(Section),elfsection

ELF 檔案可以包含很多 section,所有的 section 都在 section header table 中有對應的一項,每個 section header 都是一個 Elf32_Shdr 結構,用於描述相應 section 的資訊。

ELF Header 中的 e_shoff 給出了 section header table 在 ELF 檔案中的位元組位移量,e_shentsize 指明在 section header table 中的每一項的位元組大小,e_shnum 指明共有多少項。

Elf32_Shdr 結構:

 1 typedef struct { 2     Elf32_Word sh_name; 3     Elf32_Word sh_type; 4     Elf32_Word sh_flags; 5     Elf32_Addr sh_addr; 6     Elf32_Off  sh_offset; 7     Elf32_Word sh_size; 8     Elf32_Word sh_link; 9     Elf32_Word sh_info;10     Elf32_Word sh_addralign;11     Elf32_Word sh_entsize;12 } Elf32_Shdr;

sh_name:section 的名字。這裡其實是一個索引,指出 section 的名字儲存在 .shstrtab 的什麼位置。.shstrtab是一個儲存所有 section 名字的字串表。

sh_type:section 的類型,上一篇筆記已經學習過。

sh_flags:通過 1-bit flag 定義一些屬性。

 

  • SHF_WRITE:此 section 中包含的資料,在進程運行時可寫。
  • SHF_ALLOC:此 section 在進程運行時要佔用記憶體。

        一些控制用的 section 在進程運行時是不佔用記憶體的,比如動態連結器可能只把 section 中的一些資訊讀出來,用完就拉倒了,沒必要再儲存到進程鏡像中。

  • SHF_EXECINSTR:此 section 儲存的是可執行檔機器碼。
  • SHF_MASKPROC:保留的,不用管。

sh_addr:如果此 section 需要映射到進程空間,此成員指定映射的起始地址。如不需映射,此值為 0。

sh_offset: 此 section 相對於檔案開頭的位元組位移量。如果 section 類型為 SHT_NOBITS,表明該 section 在檔案中不佔空間,這時 sh_offset 沒什麼用。

sh_size:此 section 的位元組大小。如果 section 類型為 SHT_NOBITS,就不用管 sh_size 了。

不同類型的 section 中 sh_link 和 sh_info 的意義不同:

 

基本上就是針對不同的 section 類型,分別給出字串表、符號表等所在的 section 在 section header table 中的索引。

sh_addralign:指明此 section 的 sh_addr 向幾位元組對齊,sh_addralign 應該是 2 的正整數倍。如果為 0 或 1,表明此 section 沒有位元組對齊約束。

sh_entsize:有些節的內容是一張表,其中每個表項的大小固定,比如符號表。對於這種表,本成員指定其每個表項的大小。如果此值為 0,表明本 section 不好含 XX 表。

section header table 中的索引為 0(SHN_UNDEF) 的這一項特殊,內容為:

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.