2009-06-15 16 views
0

Ich kümmere mich um den Erfolg von GNU sehr und wollte ein Feedback auf was über einen möglichen Fehler in objdump für ARM ....Objdump für alte ARM7TDMI (ARMv4T) zeigt Anweisungen für neuere Architekturen?

Ich untersuche die Ausgabe tun von „objdump -D --target = binary -m arm7tdmi "und siehe Anweisungen, die auf den alten ARM7TDMI-Kernen nicht existieren.

(Ich bin in einer Datei von Zufallsbits suchen und sie als Raw-Binary keine ELF-Datei. Behandlung)

Zum Beispiel MRCC, blx und Ldc2 erschien nur in ARMv5 oder später, aber ich sehe sie in der Ausgabe mit Befehlszeilenoptionen oben.

(ich sehe gleiche Probleme mit "-m ARMV4T".)

Ich bin mit Version 2.19.1-multiarch von Ubuntu 9.04.

Ist das ein echter Fehler oder muss ich verschiedene Schalter verwenden?

Mit freundlichen Grüßen,

chris

Antwort

2

Nun, es ist nicht ein Fehler genau, denn wenn man eine alte binäre sehen waren, würden Sie nicht solche Befehle in dem Befehlsstrom erwarten zu sehen, so würden sie nicht erscheinen .

Daher würde es immer noch korrekten Code korrekt angezeigt.

Wenn Sie den objdump Disassembler Speicherbereiche zu zerlegen gezwungen, die keinen Code enthalten waren, aber die Daten anderer Typen (zum Beispiel das Flag -D verwendet wird), dann könnten Sie die folgenden anomalen Ergebnisse erwarten:

  • Daten, die keine Anweisungen sind, werden als Anweisungen angezeigt, die für diese Architektur gültig sind
  • Daten, die keine Anweisungen sind, werden als Anweisungen angezeigt, die für diese Architektur nicht gültig sind.
  • Daten, die keine Anweisungen sind, werden als illegale Befehle angezeigt (oh nein!)

Ich finde es schwer, über irgendetwas davon auf aufregen, da Sie -D angegeben haben, und das ist, was es tut.

Wenn Sie ein Beispiel für einen korrekten und gültigen Befehlsstrom angeben könnten, der aufgrund einer Neudefinition einer Befehlscodierung, die einen anderen Effekt hat, anders dekodiert wird, dann wäre das ein echter Fehler.

Hat Ihr Beispiel ein Problem (einschließlich Unannehmlichkeiten) für Ihre Arbeit verursacht?

2

Ich werde auf diese Dinge für einige andere Architekturen auch gefangen (nicht-ARM). Objdump weiß nicht, ob Sie Code- oder Datenteile zerlegen und versuchen es am besten zu zerlegen - einschließlich Konstanten und anderer Datenteile.

+0

Wenn die Eingabedatei ELF ist, habe ich noch nie gesehen, dass dies passiert. Wenn Sie versuchen, eine Binärdatei zu disassemblieren, ist dies durchaus möglich und wahrscheinlich. –

Verwandte Themen