2010-11-19 13 views
8

ARMv5tel je courais configurer avec l'option suivante:compilation croisée Valgrind pour

./configure --target=armv5tel CC=arm-linux-gnueabi-gcc --host=i686-linux 

puis a couru faire

j'ai rencontré l'erreur suivante:

m_cpuid.S: Assembler messages: 
m_cpuid.S:40: Error: bad instruction `pushl %ebp' 
m_cpuid.S:41: Error: bad instruction `movl %esp,%ebp' 
m_cpuid.S:42: Error: bad instruction `pushl %ecx' 
m_cpuid.S:43: Error: bad instruction `pushfl' 
m_cpuid.S:44: Error: bad instruction `pushfl' 
m_cpuid.S:45: Error: bad instruction `popl %eax' 
m_cpuid.S:46: Error: bad instruction `movl %eax,%ecx' 
m_cpuid.S:47: Error: bad instruction `xorl $0x200000,%eax' 
m_cpuid.S:48: Error: bad instruction `pushl %eax' 
m_cpuid.S:49: Error: bad instruction `popfl' 
m_cpuid.S:50: Error: bad instruction `pushfl' 
m_cpuid.S:51: Error: bad instruction `popl %eax' 
m_cpuid.S:52: Error: bad instruction `popfl' 
m_cpuid.S:53: Error: bad instruction `xorl %ecx,%eax' 
m_cpuid.S:54: Error: bad instruction `andl $0x200000,%eax' 
m_cpuid.S:55: Error: bad instruction `shrl $21,%eax' 
m_cpuid.S:56: Error: bad instruction `popl %ecx' 
m_cpuid.S:57: Error: bad instruction `movl %ebp,%esp' 
m_cpuid.S:58: Error: bad instruction `popl %ebp' 
m_cpuid.S:59: Error: bad instruction `ret' 
m_cpuid.S:76: Error: bad instruction `pushl %ebp' 
m_cpuid.S:77: Error: bad instruction `movl %esp,%ebp' 
m_cpuid.S:78: Error: bad instruction `pushl %eax' 
m_cpuid.S:79: Error: bad instruction `pushl %ebx' 
m_cpuid.S:80: Error: bad instruction `pushl %ecx' 
m_cpuid.S:81: Error: bad instruction `pushl %edx' 
m_cpuid.S:82: Error: bad instruction `pushl %esi' 
m_cpuid.S:83: Error: bad instruction `movl 8(%ebp),%eax' 
m_cpuid.S:84: Error: bad instruction `cpuid' 
m_cpuid.S:85: Error: bad instruction `movl 12(%ebp),%esi' 
m_cpuid.S:86: Error: bad instruction `testl %esi,%esi' 
m_cpuid.S:87: Error: bad instruction `jz 1f' 
m_cpuid.S:88: Error: bad instruction `movl %eax,(%esi)' 
m_cpuid.S:90: Error: bad instruction `movl 16(%ebp),%esi' 
m_cpuid.S:91: Error: bad instruction `testl %esi,%esi' 
m_cpuid.S:92: Error: bad instruction `jz 2f' 
m_cpuid.S:93: Error: bad instruction `movl %ebx,(%esi)' 
m_cpuid.S:95: Error: bad instruction `movl 20(%ebp),%esi' 
m_cpuid.S:96: Error: bad instruction `testl %esi,%esi' 
m_cpuid.S:97: Error: bad instruction `jz 3f' 
m_cpuid.S:98: Error: bad instruction `movl %ecx,(%esi)' 
m_cpuid.S:100: Error: bad instruction `movl 24(%ebp),%esi' 
m_cpuid.S:101: Error: bad instruction `testl %esi,%esi' 
m_cpuid.S:102: Error: bad instruction `jz 4f' 
m_cpuid.S:103: Error: bad instruction `movl %edx,(%esi)' 
m_cpuid.S:105: Error: bad instruction `popl %esi' 
m_cpuid.S:106: Error: bad instruction `popl %edx' 
m_cpuid.S:107: Error: bad instruction `popl %ecx' 
m_cpuid.S:108: Error: bad instruction `popl %ebx' 
m_cpuid.S:109: Error: bad instruction `popl %eax' 
m_cpuid.S:110: Error: bad instruction `movl %ebp,%esp' 
m_cpuid.S:111: Error: bad instruction `popl %ebp' 
m_cpuid.S:112: Error: bad instruction `ret' 
m_cpuid.S:154: Error: junk at end of line, first unrecognized character is `,' 
make[3]: *** [libcoregrind_x86_linux_a-m_cpuid.o] Error 1 
make[3]: Leaving directory `/home/swathi/Desktop/valgrind-3.6.0/coregrind' 
make[2]: *** [all] Error 2 
make[2]: Leaving directory `/home/swathi/Desktop/valgrind-3.6.0/coregrind' 
make[1]: *** [all-recursive] Error 1 
make[1]: Leaving directory `/home/swathi/Desktop/valgrind-3.6.0' 
make: *** [all] Error 2 

Est-ce que je manque quelque chose?

swathi

+0

Etes-vous capable de compiler x valgrind? –

Répondre

18

Vos arguments configure ne sont pas bon pour la compilation croisée. Pour effectuer une compilation croisée avec un autoconf récent, spécifiez simplement host et laissez-le figurer le reste. Il serait donc plus comme ceci:

./configure --host = bras-linux-gnueabi

Je devais aussi modifier le script de configuration en remplaçant "ARMv7 *" par "bras *". Vous verrez où.

Cependant, il y a un autre problème. Le support ARM dans valgrind couvre toutes les instructions ARMv5 et un sous-ensemble sélectionné d'instructions v6 et v7. MAIS, et c'est un gros mais, pour réellement fonctionner, vous devez utiliser un processeur capable d'exécuter du code ARMv7. Cela signifie Cortex-A ou mieux.

Si vous avez l'intention d'exécuter valgrind sur un processeur de classe ARMv5 (comme XScale), cela ne fonctionnera pas et le programme cible commettra une erreur avec un opcode illégal.

Triste mais vrai. Pas de valgrind pour moi.

HTH.

+3

Il y a un autre élément à cela - dans le Makefile * .am de niveau supérieur, il y a des ajouts spécifiques de '-mcpu = cortex8', je les ai remplacés par '-march = armv5te -mtune = arm926ej-s -mno-thumb-interwork - mno-thumb -g '(Pour mon CPU Marvell MV7600, YMMV) - et cela m'a amené au point où coregrind/m_dispatch/dispatch-arm-linux.S est maintenant le roadblock car il a des instructions spécifiques au cortex (movw, movt) qui ne fonctionne pas avec mon processeur. Juste pour voir je les ai commentés et le binaire fonctionne sans la faute d'exception mais, évidemment, il ne fonctionne pas correctement. Un peu plus près cependant. – synthesizerpatel

+0

Merci de partager ces faits. Lorsque j'ai compilé et lancé 3.17.0 valgrind pour un iMX25 (ARM926EJ-S avec des instructions ARMv5TEJ) la seule ligne de sortie que j'ai vu était: "instruction illégale". Y a-t-il un équivalent valgrind avec lequel je pourrais travailler? –

3
  1. purifient
  2. ./configure CC = "votre chemin de gcc" --target = bras-none-linux-gnueabi --host = ARMv7-none-linux-gnueabi
  3. faire
  4. sudo faire l'installation
Questions connexes