Эквивалент objcopy для Mac/iPhone?
Я хотел бы переименовать символы внутри объектных файлов (.o) с чем-то, что было бы эквивалентом Mac для инструмента binutils objcopy --redefine-syms
.
Я не нашел arm-apple-darwin10-objcopy
. Я попробовал порт MacPorts, а также попытался немного поиграть с otool
и segedit
.
Любые идеи, пожалуйста?
Ответы
Ответ 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