2016-11-03 4 views
0

J'essaie de lier des fichiers objets créés à l'origine par deux assembleurs différents. Nous avons un code assembleur hérité qui a été compilé dans des fichiers objets en utilisant un ancien assembleur MRI pour le processeur 68332. Nous développons une nouvelle application avec le GNU Binutils m68k v2.24. Nous aimerions utiliser les fichiers objets originaux construits par l'ancien assembleur sans changement. J'ai configuré notre environnement de construction pour le faire. Pour des raisons historiques, notre environnement de construction est lié à trois formats de sortie: Srecord, ieee, et ELF. Quand je cours cela réussit sans erreur pour les formats Srecord et Ieeee. Cependant, pour le format de sortie ELF, je reçois les erreurs suivantes:Liaison de fichiers d'objets de types différents

m68k-elf-ld: Échec de la fusion des données spécifiques cibles du fichier

En conséquence, le fichier Elf est pas créé. Je commence par essayer de comprendre ce que ce message d'erreur peut signifier, mais je n'ai pas pu. Si quelqu'un connaît suffisamment la documentation de GNU Binutils ld pour me montrer où la définition d'erreur est définie, j'apprécierais cela.

J'ai effectivement chargé notre cible et exécuter la sortie Srecord. Il semble passer de nombreux tests comme avant, il semble donc qu'il fonctionne dans une certaine mesure.

Il semble que nos fichiers d'objets hérités peuvent être au format coff. Je suppose que c'est le problème. Est-il possible de convertir un fichier coff au format ELF?

Merci d'avance pour tout support.

Répondre

1

Il semble que nos fichiers d'objets hérités puissent être au format coff. Je suppose que c'est le problème. Est-il possible de convertir un fichier coff au format ELF?

objcopy peut être utilisé pour convertir entre les formats. Cependant, pour ce faire, il doit avoir été configuré pour comprendre les deux formats. Vous pouvez vérifier quels formats il accepte avec objcopy --info (une liste raccourcie apparaît à la fin de objcopy --help).

Si vous objcopy ne supporte pas les formats requis, alors vous devrez construire vous-même binutils.

+0

Nous vous remercions de votre réponse. J'essayais de convertir des formats en utilisant objcopy mais apparemment je n'avais pas le nom juste. J'essayais ELF quand le bon format était elf32-m68k. Pour les autres, j'ai fini par utiliser objdump avec l'option -f pour imprimer le format complet de mes anciens fichiers. Merci pour l'aide. –