objdump и ARM против большого пальца - PullRequest
8 голосов
/ 25 августа 2011

Я пытаюсь разобрать объект, созданный для ARM, с помощью gcc.К сожалению, objdump пытается угадать, является ли код ARM и Thumb, и ошибается: он думает, что мой код - Thumb, когда он на самом деле ARM.

Я вижу, что у objdump есть возможность заставить его интерпретироватьвсе инструкции, такие как Thumb (-Mforce-thumb), но в нем нет режима принудительного включения режима ARM!

Мне кажется, это очень странное упущение, и это серьезно подрывает мою способность выполнять работу (яНахожусь на встроенном устройстве и мой единственный способ отладки, чтобы посмотреть на разборку).Я пробовал разные подходы, в том числе пытался заставить objdump использовать архитектуру ARM, которая не поддерживает Thumb, но, похоже, ничего не работает.Есть идеи?

(И да, я знаю, что инструкции действительно ARM ...)

Ответы [ 2 ]

4 голосов
/ 06 марта 2013

arm-linux-gnueabi-objdump -marm -b binary -D помогает мне.Он не сохраняет информацию о символах, поэтому это не совсем то, что вы ищете, но он дает вам возможность разбирать, что является началом.

0 голосов
/ 25 августа 2011

Это звучит как ошибка в компиляторе / компоновщике или в objdump. Обычно символы должны быть помечены должным образом, если они являются пальцами или ARM и соответственно разобраны.

Тем не менее, есть несколько вещей, которые вы можете попробовать:

  1. интерпретировать файл как обычный двоичный файл (-b binary -D) - это отключит проверку символов и разберет весь файл как ARM. Недостаток: много мусора на выходе, нет хороших адресов.
  2. используйте IDA Pro . Даже если он угадает неправильно, вы всегда можете отменить его решение. Кроме того, это более приятная среда для разборки:)
...