objdump: не может использовать поставляемую машину MIPS

Я получаю следующую ошибку для разборки объекта с помощью команды ниже. Объектный файл создан для платформы MIPS.

$objdump -D -m MIPS myobjfile.o

Ошибка:

objdump: Can't use supplied machine MIPS

Фрагмент, который я прилагаю для ссылки из objdump.c

  const bfd_arch_info_type *inf = bfd_scan_arch (machine);

  if (inf == NULL)
      fatal (_("can't use supplied machine %s"), machine);

Можете ли вы помочь мне получить правильный код сборки?

2 ответа

Поздно, но это решило мою проблему, которая такая же, как у вас, но для ARM64(aarch64).

Если вы строите из исходного кода, вы можете включить все целевые архитектуры, передав --enable-targets=all к ./configure:

git clone git://sourceware.org/git/binutils-gdb.git 
cd binutils-gdb
./configure --enable-targets=all
make

Это позволяет objdump работать со всеми архитектурами, включая MIPS.

Это из сообщения @soulseekah здесь: Использование objdump для архитектуры ARM: Дизассемблирование в ARM

Тебе стоит попробовать mips-linux-gnu-objdump, Я использую его как часть пакета binutils-mips-linux-gnu на моем Ubuntu 16.04 TLS.

Вы можете скачать его, используя apt-get:

$sudo apt-get install binutils-mips-linux-gnu

Затем попробуйте запустить:

$mips-linux-gnu-objdump -b binary -m mips -D myobjfile.o

-b binary обозначает двоичный формат файла, и это необязательно.

Вы должны посетить https://linux.die.net/man/1/x86_64-linux-gnu-objdump для получения дополнительной информации.

Попробуйте использовать капитал м. $objdump -D -M MIPS myobjfile.o

[-M опции |--disassembler-опции = опции]

Другие вопросы по тегам