2010-06-25 79 views
0

我目前在一個點,我需要在多個模塊(基本ELF目標文件)到我的主執行文件鏈接由於我們的目標(背景的限制:內核,針對ARM體系結構)。在其他目標(特別是x86)上,這些目標文件將在運行時加載,並且它們中的特定函數將被調用。在關機時,另一個功能將被調用。這兩個函數都作爲符號暴露給內核,並且這一切都正常。創建類似於從多個對象.ctors列表文件

當目標文件是靜態鏈接的,但內核無法「檢測」它們的存在,因此我需要一種告訴內核關於init/fini函數的存在而不用硬編碼它們的方式進入內核 - 它需要是可擴展的。我認爲這是一個解決辦法可能是把所有的init /菲尼函數指針到自己的部分 - 在幾乎相同的方式,你會期望從.ctors和.dtors - 並通過他們在相關時間打電話。

注意,他們不能真正進入.ctors,因爲它們需要特殊支持,由他們是所謂的時間運行(特別是線程和內存管理,如果你有興趣)。

什麼的去約把一堆任意函數指針到一個特定部分的最佳方式?甚至更好 - 是否可以將任意數據注入到一個部分,所以我也可以存儲像模塊名稱(一個結構而不是函數指針,基本上)的東西。使用針對arm-elf的GCC。

回答

0

GCC屬性可以用來指定一個部分:

__attribute__((section("foobar"))) 
+0

使用這個屬性我仍然只在部分有一個結構結束,而不是15個左右我會一直從編輯的預期。可能必須objdump二進制文件,看看一切正在發生的地方...... – 2010-06-27 21:41:58