2009-06-15 2 views
0

Я забочусь об успехе GNU очень и хотел некоторые отзывы о , что делать о потенциальной ошибке в objdump для ARM ....objdump для старого ARM7TDMI (ARMv4T) с инструкциями для новых архитектур?

Я рассматривает выход «objdump -D --target = binary -m arm7tdmi "и видя инструкций, которые не существуют на древних ядрах ARM7TDMI.

(я смотрю на файл случайных битов и рассматривая его в качестве исходного двоичного файла не является файлом ELF.)

Например, MRCC, BLX и ldc2 только появился в ARMv5 или позже, но я их вижу на выходе с переключателями командной строки выше.

(я вижу те же проблемы с "-m armv4t".)

Я использую версию 2.19.1-мультиархитектурная от Ubuntu 9.04.

Это настоящая ошибка или я должен использовать разные переключатели?

С уважением,

Крисом

ответ

2

Ну, это не ошибка точно, так как если вы читаете старый бинарный код, вы не ожидали бы увидеть такие инструкции в потоке команд, так что они не будут появляться ,

Следовательно, он по-прежнему корректно отображает правильный код.

Если вы заставили objdump дизассемблер разбирать области памяти, которые не включают в себя код, но данные других типов (например, с помощью флага -d), то можно было бы ожидать следующие аномальные результаты:

  • данные, которые не являются инструкциями, отображаются в виде инструкций, которые действительны для этой архитектуры.
  • данные, которые не являются инструкциями, отображаются в виде инструкций, которые недействительны для этой архитектуры.
  • данные, которые не отображаются инструкции как незаконные инструкции (о нет!)

Я считаю, что это трудно заводиться о любом из них, так как ты указать -D, и это то, что он делает.

Если вы могли бы указать пример правильного и действительного потока команд, декодированных по-разному из-за переопределения кодировки команд, имеющей другой эффект, то я думаю, что это будет подлинная ошибка.

Ваш пример вызвал некоторую проблему (в том числе неудобство) вашей работе?

2

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

+0

Если входной файл ELF, я никогда не видел, чтобы это произошло. Если вы пытаетесь разобрать двоичный файл, то это вполне возможно и, скорее всего. –