我正在使用英特爾引腳來測試C++可執行文件並報告感興趣的事件(例如,某些函數調用,線程創建/完成等)的多處理器體系結構模擬器。基本上,我構建了一個指令解碼緩存,當它們的圖像被加載時,所有的指令都被緩存,然後分析指令的執行。因此,映像加載時的指令地址在運行時與指令地址相同(或至少與指令地址同步更新)是很重要的。目標代碼重定位和英特爾引腳交互
英特爾引腳API(例如,IMG_AddInstrumentFunction)使我獲得有關加載的圖像信息(可執行文件和共享庫),如入口點,低/高地址等
然而,我注意到,儀表程序在不屬於任何加載圖像的地址執行指令。通過檢查,我懷疑動態加載程序(使圖像/lib64/ld-linux-x86-64.so.2 64位的Centos 6.3)通過調用例程_dl_relocate_object重新定位在存儲器中的主可執行。
我明白需要重定位代碼和所有東西。我只需要指向一個很好的文檔(或簡單的描述/建議),指出這些重定位可能發生的方式/時間(在加載時和運行時),以便我可以在我的架構模擬器中考慮它們。換句話說,用於實現它的函數(如果有任何可用於抑制重定位的g ++編譯器開關等,我需要的函數庫,條件或可能是隨機的函數庫)。我只針對x86/x86_64體系結構
謝謝,巴西爾。由於我的選票少於15票,我仍然無法提出您的答案。 – 2013-03-18 07:15:09