подобный readelf инструмент для Mac OS X? [закрытый]

Есть ли инструмент для чтения двоичных файлов Mac OS X, которые распечатали бы информацию о таблицах перемещения, и символ смещает подобный этому readelf вывод?

readelf -r app

Relocation section '.rel.dyn' at offset 0x5ec contains 2 entries:
 Offset     Info    Type            Sym.Value  Sym. Name
08049d58  00001706 R_386_GLOB_DAT    00000000   __gmon_start__
08049d60  00000305 R_386_COPY        08049d60   _ZSt4cout

Relocation section '.rel.plt' at offset 0x5fc contains 13 entries:
 Offset     Info    Type            Sym.Value  Sym. Name
08049d24  00000107 R_386_JUMP_SLOT   0804868c   print
08049d28  00000207 R_386_JUMP_SLOT   0804869c   _ZNSt8ios_base4InitC1E
08049d2c  00000507 R_386_JUMP_SLOT   080486ac   _ZStlsISt11char_traits
08049d30  00000607 R_386_JUMP_SLOT   080486bc   _ZNSolsEPFRSoS_E
08049d34  00000707 R_386_JUMP_SLOT   08048664   _init
08049d38  00000807 R_386_JUMP_SLOT   080486dc   sleep
08049d3c  00000907 R_386_JUMP_SLOT   080486ec   _ZNKSsixEj
08049d40  00000b07 R_386_JUMP_SLOT   080486fc   _ZNKSs4sizeEv
08049d44  00000c07 R_386_JUMP_SLOT   0804870c   __libc_start_main
08049d48  00000d07 R_386_JUMP_SLOT   08048ae4   _fini
08049d4c  00001307 R_386_JUMP_SLOT   0804872c   _ZSt4endlIcSt11char_tr
08049d50  00001507 R_386_JUMP_SLOT   0804873c   __gxx_personality_v0
08049d54  00001607 R_386_JUMP_SLOT   0804874c   _ZNSt8ios_base4InitD1E

В этом примере, print функция, загруженная из общей библиотеки (я записал) во времени выполнения. readelf может отобразить информацию о ее местоположении в app двоичный файл.

50
задан AstroCB 30 August 2014 в 14:42
поделиться

4 ответа

Использование Macports:

  1. Установить macports.
  2. Использование macports port install binutils
  3. gobjdump -p /path/to/app

Использование Homebrew:

  1. Install Homebrew
  2. Do brew update && brew install binutils
  3. gobjdump -p /path/to/app

Конечно, существует множество других опций командной строки. Обратите внимание, что порт binutils предупреждает, что его установка может привести к сбою сборки других портов. Тем не менее, иметь его под рукой, чтобы установить порт/посмотреть на что-то/деинсталлировать порт, может быть удобно.

Довольно удивительно, что для этого еще нет какого-то встроенного инструмента.

84
ответ дан 7 November 2019 в 10:41
поделиться

otool -l test.o

18
ответ дан 7 November 2019 в 10:41
поделиться

Вы пробовали ObjConv? http://agner.org/optimize/#objconv

Эта утилита может использоваться для преобразования объектных файлов между форматами COFF / PE, OMF, ELF и Mach-O (используется Mac OS) для всех 32- битовые и 64-битные платформы x86. Может изменять имена символов в объектных файлах. Может создавать, изменять и конвертировать библиотеки функций на разных платформах. Может сбрасывать объектные файлы и исполняемые файлы. Также включает очень хороший дизассемблер, поддерживающий наборы инструкций SSE4, AVX, FMA и XOP.

Ps .: Исходники включены (GPL).

5
ответ дан 7 November 2019 в 10:41
поделиться

Вы можете попробовать dwarfdump.

⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣

6
ответ дан 7 November 2019 в 10:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: