ARM基礎(chǔ)知識學(xué)習(xí)十
ARM映像文件——2 ***************************************************** 3arm映像文件的ARM基礎(chǔ)知識入口點 連接器根據(jù)輸入段的屬性來組織這些輸入段,具有相同屬性的輸入段被放到域中一段連續(xù)的空間中,組成一個輸出段。在一個輸出段中,各輸入段的起始地址與輸出段的起始地址和該輸出段中個輸入段的排列順序有關(guān)。通常情況下,一個輸出段中個輸入段的排列順序由下面幾個因素決定的。用戶可以通過連接選項-first和-last來改變這些ARM基礎(chǔ)知識規(guī)則。 **輸入段的屬性。 **輸入段的名稱 **各輸入段在連接命令行的輸入段列表中的排列順序 按照輸入段的屬性,其排列順序如下所示: **只讀的代碼段 **只讀的數(shù)據(jù)段 **可讀寫的代碼段 **其他已經(jīng)初始化的數(shù)據(jù)段 **未出世化的數(shù)據(jù) 對于具有相同屬性的輸入段,按照其名稱來排序。這是輸入段名稱是區(qū)分大小寫的,按照其ASCII碼順序進行排序。對于具有相同屬性和名城的輸入段,按照其在輸入段列表中的順序進行排序。也就是說,幾十個輸入段的屬性和名稱保持不變,如果其在編譯時,各輸入段在輸入段列表中的排列順序不同,生成的映像文件也將不同??梢酝ㄟ^連接選項-first和-last來改變這些規(guī)則。如果連接時使用了配置文件,可以在配置文件中通過偽屬性FIRST和LAST達(dá)到相同的效果。連接選項-first和-last不能改變根據(jù)輸入段進行排序的規(guī)則,它只能改變根據(jù)輸入段名稱和其在輸入列表中的順序的排序規(guī)則。也就是說,如果使用-first指定 一個輸入段,只有該輸入段所在的輸出段位于運行時域的開始位置時,該輸入ARM基礎(chǔ)知識段才能位于整個運行時域的開始位置。各個輸入段排好順序后,在確定各個輸入段的起始地址之前,何以通過填充補丁是個輸入段滿足地址對齊的要求。 *********************************************************** ARM連接器介紹 *********************************************************** ARM連接器armlink將編譯得到的ELFARM基礎(chǔ)知識格式文件以及相關(guān)的C/C++運行時庫連接生成相應(yīng)的結(jié)果文件。armlink可以完成下面的操作: **連接ARM基礎(chǔ)知識編譯后得到的目標(biāo)文件相應(yīng)的c/c++運行時庫,生成可執(zhí)行的影像文件。 **將一些目標(biāo)文件進行連接,生成一個新的目標(biāo)文件,供將來進一步連接時使用,這成為部分連接。 **指定代碼和數(shù)據(jù)在內(nèi)存中的位置。 **生成被連接文件的調(diào)試信息和相互間的引用信息。 Armlink在進行部分連接和完全生成可執(zhí)行文件時作進行的操作是不同的。下面分別介紹: (1)解析輸入的目標(biāo)文件之間的符號引用關(guān)系。 (2)根據(jù)輸入目標(biāo)文件對cARM基礎(chǔ)知識/c++函數(shù)的調(diào)用關(guān)系,從c/c++運行時庫中提取相應(yīng)模塊。 (3)將各個輸入段排序,組成相應(yīng)的輸出段。 (4)刪除重復(fù)的調(diào)試信息。 (5)根據(jù)用戶指定的分組和定位信息,建立映像文件的地址映射關(guān)系。 (6)重定位需要重定位的值。 (7)生成可執(zhí)行的映像文件。 armlink在進行部分連接生成新的目標(biāo)文件時執(zhí)行下面的操作。 (1)刪除重復(fù)的調(diào)試信息 (2)最小化符號表的大小 (3)保留那些未被解析的符號 (4)生成新的目標(biāo)文件 下面根據(jù)各armlink的命令行選項的功能分類列舉了armlink的命令行選項ARM基礎(chǔ)知識,各選項的具體用法將在后面有詳細(xì)地介紹。 **提供關(guān)于armlink的幫助信息 **指定輸出文件的名稱和類型:*-output;*-partial;*-elf **使用選項文件,其中可以包含一些連接選項。 **制定可執(zhí)行映像文件的內(nèi)存映射關(guān)系。*-rwpi;*-ropi;*-rw_base;*-ro_base;*-spit;*-scatter **控制可執(zhí)行映射文件的內(nèi)容。*-first;*-last **生成與映像文件的相關(guān)信息 **控制armlink生成相關(guān)ARM基礎(chǔ)知識的診斷信息。 |