Подтвердить что ты не робот

Эквивалент objcopy для Mac/iPhone?

Я хотел бы переименовать символы внутри объектных файлов (.o) с чем-то, что было бы эквивалентом Mac для инструмента binutils objcopy --redefine-syms.

Я не нашел arm-apple-darwin10-objcopy. Я попробовал порт MacPorts, а также попытался немного поиграть с otool и segedit.

Любые идеи, пожалуйста?

4b9b3361

Ответ 1

Звучит как работа для Agner Fog objconv

объявление objconv

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

Objconv можно использовать для следующих целей: Преобразование объектных файлов и библиотечные/архивные файлы между Mach-O, ELF, COFF и OMF для всех x86 и x86-64. Изменить символ имена в объектных файлах, символы слабый, добавьте псевдонимы в символы.
Создание, изменение и преобразование статических файлы библиотеки (*.a, *.lib) через платформы (Mac, Linux, BSD, Windows)
Dump object files и исполняемые файлы Разберите файлы объектов и исполняемые файлы. Отлично дизассемблер. Его можно скачать от www.agner.org/optimize/. исходный код доступен в GPL. Дайте мне знать, если вы хотите проверить это. Получайте удовольствие!

руководство objconv

objconv.zip - источник

Ответ 2

Я знаю, что воскрешаю этот пост из мертвых, но...

Мне также внезапно нужно это сделать, и обнаружение того, что objcopy не работает на OSX, было немного шоком. Но я думаю, что для достижения такого же эффекта можно использовать ld:

ld -r input.o -o output.o -alias oldsymbol newsymbol -unexported_symbol oldsymbol

Это действительно просто создает псевдоним для символа под новым именем и скрывает старый.

У меня еще не было возможности много тестировать, но просмотр выходного файла с nm показывает, что он делает правильные вещи.

Ответ 3

objconv в настоящее время не работает для ARM, поэтому этот параметр недоступен для iPhone. Не стоит использовать objconv от эльфа до mach-o для mac osx x86/x64. Дайте мне знать, если вы нашли решение для ARM