Ads 468x60px

##EasyReadMore##

09 8月, 2018

symbol 與 elf 關聯

我們寫程式用到的函式名,變數名散在各個source code檔案時 須要一個參照(reference)的資訊做連結 這些名字symbol是準備 給linker來做連結用的,因為東一個obj檔,西一個obj檔, 要把這些傢伙的程式碼拉來湊在一塊,就要靠symbol來做辨識, string table藏了一串很多的字串每個用Null來分開 每個就是symbol與section的名字。 symbol table是一個表藏了將來要定址或重新定址所要的symbol定義 與參照資訊。shared lib的Obj檔還有.dynsym這個section裡面藏了 dynamic symbol table用來動態連結用. 另外你如果要將來的程式能讓debug工具來用,編譯 時需要加個-g這個選項,它會根據symbol table 還有string table放 進debug所需要的資訊給obj檔, 這樣的資訊現在大都用一種叫stab的格式存放,這也會長大執行檔。

大致上,ELF文件會有下列部份

ELF Header
描述了ELF文件版本、target machine型號、程序入口地址等
.text
.data
.bss
...other section
Section header table
描述了每個Seciton的名稱、長度、offset,、讀寫權限、其他屬性
string tables
symbol tables
...

0 意見:

張貼留言

 
Blogger Templates