Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1545 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Problème de crt0.o

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de crt0.o

n°1194058
c_gatti
GNU is not unix
Posté le 07-09-2005 à 13:52:17  profilanswer
 

Bonjour,
J'ai construit un compilateur croisé linux/ppc-elf GCC de souche 4.0.1 avec support langage C, C++, JAVA.
Mon problème est le crt0.o
En effet, j'ai un crt0.o fourni par l'OS sur cible ppc et un crt0.o fourni par la newlib.
Pour tester mon compilateur croisé, j'ai écrit un HelloWorld.cpp
Quand je link mon HelloWorld.o avec le crt0.o de l'OS cible, des symboles apparaissent indefinis.
Ceux ci sont les CTOR et DTOR, constructeurs et destructeurs globaux.
Je ne peux donc compiler mon appli et pour ce faire j'utilise le crt0.o fourni par la newlib.
Pour executer HelloWorld (écrit en C), pas de problème, pour HelloWorld (écrit en C++ ou Java) j'obtient un beau segfault.
Je me suis demandé d'ou venait le probleme et en utilisant gdb, je me suis apercu que la methode cout faisait planter gdb.
Je me suis donc dis que l'initialisation des classes n'avait pas été faite, et cela m'a mis sur la piste de la fonction _start.
Mais après avoir fait des recherches sur le net, je me pose ces questions :
CRT est fourni par l'OS, mais les inits de librairies sont faits dans les lib dans la fonction _start : ok pour libc, mais comment pour libstdc++ et libjava ?
Je pense que le crt0.o de l'OS cible devrait fonctionner et c'est en apportant à l'édition de lien le "bon" _start (dans newlib et/ou libc et/ou libstdc++ et/ou libjava) que l'on aura un process qui démarre convenablement.
Autrement dit :
   - on aurait un HWC avec un _start correct, apporté par la "libc" (= newlib ?)
   - on aurait un HWC++ avec un _start incorrect, qui n'appelle pas les constructeurs nécessaires à C++,
   - on aurait un HWjava avec un _start incorrect, qui n'appelle pas les constructeurs nécessaires à C++ et Java
J'aurai besoin d'une confirmation, et si possible j'aimerai savoir :
   - quelles sont les libs (dans OS, dans gcc, dans newlib...) qui définissent le symbole _start
   - quelles sont les libs (dans OS, dans gcc, dans newlib...) qui utilisent le symbole _start
et ce, de meme pour les "global_constructors" et "global_destructors".
Cordialement,
Christophe.

mood
Publicité
Posté le 07-09-2005 à 13:52:17  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Problème de crt0.o

 

Sujets relatifs
[resolu] batch : Probleme copie fichierprobleme copier fichier depuis url
probleme en fortran90...probleme sur IE
Problème Span[Debutant] Problème Hibernate
Probleme avec mail() et Hotmail[Débutant] Problème J2EE - Méthode statique
Problème de block/inline [résolu]probléme avec visual C++ library
Plus de sujets relatifs à : Problème de crt0.o


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR