2009-06-15 3 views
0

Je me soucie de la réussite de GNU beaucoup et voulaient des commentaires sur ce qu'il faut faire au sujet d'un bug potentiel dans objdump pour ARM ....objdump pour l'ancien ARM7TDMI (ARMv4T) montrant des instructions pour les architectures plus récentes?

J'examine la sortie de « objdump -D --target = binaire -m arm7tdmi "et voir instructions qui n'existent pas sur les anciens cœurs ARM7TDMI.

(je suis à la recherche d'un fichier de bits aléatoires et de le traiter comme un binaire brut et non un fichier ELF.)

Par exemple, MRCC, BLX et ldc2 apparaissent seulement dans ARMv5 ou plus tard, mais je les vois dans la sortie avec les commutateurs de ligne de commande ci-dessus.

(je vois même des problèmes avec "-m ARMV4T".)

J'utilise la version 2.19.1-multiarch d'Ubuntu 9.04.

Est-ce un véritable bug ou dois-je utiliser des commutateurs différents?

Sincèrement,

chris

Répondre

2

Eh bien, il n'y a pas un bug exactement, car si vous regardiez un vieux binaire, vous ne vous attendez pas à voir de telles instructions dans le flux d'instructions, de sorte qu'ils ne semble pas .

Par conséquent, il afficherait toujours correctement le code correct.

Si vous avez forcé le désassembleur objdump de démonter les régions de mémoire qui ne comprennent pas le code, mais les données d'autres types (par exemple, en utilisant le drapeau -D), alors vous pourriez attendre les résultats anormaux suivants:

  • Les données qui ne sont pas des instructions sont affichées sous la forme d'instructions valides sur cette architecture.
  • Les données qui ne sont pas des instructions sont affichées comme des instructions non valides sur cette architecture.
  • données qui ne sont pas des instructions sont affichées sous forme d'instructions illégales (oh non!)

je trouve qu'il est difficile de s'énerver sur l'un de ces derniers, puisque vous avez déjà défini -D, et c'est ce qu'il fait.

Si vous pouviez indiquer un exemple de flux d'instructions correct et valide décodé différemment en raison d'une redéfinition d'un codage d'instruction ayant un effet différent, alors je pense que ce serait un véritable bug. Votre exemple a-t-il causé un problème (y compris un désagrément) à votre travail?

2

Je suis attrapé sur ces choses pour d'autres architectures aussi (non-ARM). Objdump ne sait pas si vous êtes en train de désassembler des parties de code ou de données et fera de son mieux pour les désassembler - y compris les constantes et autres portions de données.

+0

Si le fichier d'entrée est ELF, je n'ai jamais vu cela se produire. Si vous essayez de désassembler un binaire, alors c'est tout à fait possible et très probable. –

Questions connexes