2017-02-19 18 views
0

Я создал исходный двоичный файл, созданный из файла эльфа, используя objcopy -o двоичный код. Можно ли переместить его с помощью данного смещения? Я считаю, что эффект, который я ищу, будет похож на использование -change-адресов, а затем преобразовать его в двоичный.Можно ли переместить двоичный файл?

Заранее спасибо

ответ

0

от man obdjdump:

objcopy может быть использован для создания исходного двоичного файла с помощью выходной цели двоичного (например, -O использовать двоичный). Когда objcopy генерирует необработанный двоичный файл, он будет по существу
создать дамп памяти содержимого входного объектного файла. Все символы и информация о перемещении будут удалены. Дамп памяти начнется с адреса загрузки нижней секции, скопированной в выходной файл.

(акцент мной)

Так что, если вы не экспортировать несколько разделов, которые загружаются в разных местах, а затем сдвигая один раздел вы толкающую в двоичном не имеет никакого эффекта.

+0

Я не знаю, получу ли вы то, что вы имеете в виду. Код предназначен для работы во встроенной среде, в реальном физическом адресном пространстве. Так что важно переместить отдельный раздел. Бинарный файл должен быть готов к запуску в определенном месте, в котором он будет загружен. – joseCM

+0

, но это не тот тип двоичного кода, который производит '-O двоичный'; «Дамп памяти начнется с адреса загрузки нижней секции». Поэтому, если у вас есть только один раздел, независимо от того, где он начинается, его начало всегда будет началом двоичного дампа. –

+0

Да, конечно. Но в сценарии компоновщика фактические адреса VMA указываются в интересующем диапазоне адресов. Если, например, глобальная переменная, расположенная по адресу X, код будет ссылаться на этот адрес. Я хочу изменить двоичный код так, чтобы код, который ссылается на переменную (которая теперь будет на X + OFFSET), изменится, чтобы ссылаться на правильный адрес. – joseCM