2010-02-24 47 views
5

我想寫ELF可執行文件加載程序ARM platform.I有一些疑問這裏如何動態加載可重定位的ELF可執行文件?

1)如何產生重定位或與位置無關的ELF可執行文件(什麼是編譯器&連接選項)2)如何上面加載此生成ELF可執行文件。

作爲astart,我做了一些工作,它工作正常。我爲RO_Base使用了一個固定地址,並且在構建時不使用任何--split選項來拆分Segments,所以我得到了一個連續的代碼,數據,bss部分。在此之後,我將精靈加載到與RO_Base相同的地址並將代碼作爲新線程執行。這工作正常。我沒有做任何重定位等...

現在我想通過生成可重定位的ELF並修改加載器進行適當的更改來使其動態並能夠加載到任何地址。 請幫助我使它工作。

謝謝,

回答

0

只需使用-r標誌鏈接器使文件可重新定位。

使用像this這樣的東西來重新定位內存中的文件。

0

這是一個很大的話題。我會參考John R. Levine的「Linkers and Loaders」。這裏是本書的手稿,Chapter 7 Relocation,我希望它有幫助

相關問題