Как динамически загрузить перемещаемый ELF-файл? - PullRequest
5 голосов
/ 24 февраля 2010

Я пытаюсь написать исполняемый загрузчик elf для платформы ARM. У меня есть несколько запросов здесь

1) Как создать перемещаемый или независимый от позиции исполняемый файл ELF (каковы параметры компилятора и компоновщика) 2) КакЗагрузите этот выше сгенерированный исполняемый файл ELF.

Как astart, я сделал некоторую работу, и она работает нормально.Я использую фиксированный адрес для RO_Base и не делю сегменты при сборке (не используя опцию --split), так что я получаю непрерывный код, данные, разделы bss.после этого я загружаю эльфа по тому же адресу, что и RO_Base, и выполняю код как новый поток.это работает нормально.Я не делал никаких перемещений и т.д. ...

Теперь я хочу сделать его динамичным и загружать по любому адресу, генерируя перемещаемый ELF и изменяя Loader для соответствующих изменений.Пожалуйста, помогите мне заставить его работать.

Спасибо,

Ответы [ 2 ]

0 голосов
/ 27 августа 2014

Это большая тема. Я приду к справке «Линкеры и загрузчики» Джона Р. Левина. Вот рукопись книги, Глава 7 Переезд , я надеюсь, что это полезно

0 голосов
/ 22 июня 2010

Просто используйте флаг -r для компоновщика, чтобы сделать файл перемещаемым.

Используйте что-то вроде this для перемещения файла в памяти.

...