如果用arm-linux-gcc編譯出來的適用於ARM架構的程序:
除了最常見的為 .text, .data, .bss 這 3 個段之外,還有其它的一些常見段,如下所示:
.strtab : String Table 字符串表,用於存儲 ELF 文件中用到的各種字符串。
.symtab : Symbol Table 符號表,從這裡可以所以文件中的各個符號。
.shstrtab : 是各個段的名稱表,實際上是由各個段的名字組成的一個字符串數組。
.hash : 符號哈希表。
.debug_line : 調試時的行號表,即源代碼行號與編譯後指令的對應表。
.dynamic : 動態鏈接信息。
.debug : 調試信息。
.comment : 存放編譯器版本信息,比如 "GCC:(GNU)4.2.0"。
.plt 和 .got : 動態鏈接的跳轉表和全局入口表。
.init 和 .fini : 程序初始化和終結代碼段。
.rodata1 : Read Only Data,只讀數據段,存放字符串常量,全局 const 變量,該段和 .rodata 一樣。
--------------------------------------------------------------------------------
由上可見,這些段的名字前都有一個 '.' 點符號前綴,其義表示這些段的名字為系統所保留。應用程序可以使用非系統保留的名字作為自己的自定義段名,但是自定義的段名就不能使用 '.' 符號作為前綴,否則容易和系統保留的段名沖突。