2011-07-04 3 views
1

J'utilise GCC crosscompiler pour compiler vers une plateforme ARM. J'ai un problème où, en utilisant opitmization -O3 me donne une "mauvaise valeur immédiate pour offset (4104)" sur un fichier temp ccm4baaa.s. Impossible de trouver ce fichier non plus.Assembleur ARM: mauvaise valeur immédiate pour le décalage

Comment est-ce que je débogue ceci, ou trouve la source de l'erreur? Je sais qu'il se trouve quelque part dans hyper.c, mais il est impossible de le trouver car il n'y a pas d'erreur dans hyper.c. Seul le message d'erreur cryptique ci-dessus.

Cordialement

M. Gigu

+0

Quelle version du compilateur? –

+0

Si le fichier d'assemblage temporaire .s est celui créé par le compilateur en cours de création du fichier objet, cela ressemble à un bogue dans le compilateur. J'obtiendrais les informations exactes sur la version/variante de votre compilateur GCC et je rechercherais les "bogues connus" pour cette version (ou je rechercherais des bugs corrigés dans les versions ultérieures, en supposant que vous n'ayez pas les dernières versions). – Dan

Répondre

1

Il y a eu des bugs connus similaires dans les versions précédentes de GCC. Il se peut juste qu'il s'agisse de mettre à jour votre version de la chaîne d'outils GCC. Lequel utilisez-vous actuellement?

+0

Im en utilisant arm-elf-gcc 3.4.3 – MrGigu

+0

Si je me souviens bien, GCC est à 4.6.0. Je mettrais à jour votre toolchain. – tangrs

+1

Oui, vous utilisez en effet un très ancien toolchain. Essayez celui-ci de CodeSourcery: http: //www.codesourcery.com/sgpp/lite/arm/portal/subscription? @ Template = lite – NullPointer

0

Afin de déboguer le problème et de trouver la source incriminée, dans ces cas, il est utile d'ajouter l'option gcc-save-temps à la compilation. L'effet est que le compilateur conserve les fichiers d'assemblage intermédiaires (et la sortie du pré-processeur) à examiner.

Questions connexes