Le GCC nouveau est disponible. Au menu : des corrections de bogues (dans le deroulement des boucles), de meilleurs optimisations pour les architectures x86, et l'implementation des descripteurs de fonctions dans des tables virtuelles pour le C++ sur IA64.
Aller plus loin
# précisions
Posté par oliv . Évalué à 10.
l'annonce avec quelques détails:
http://gcc.gnu.org/ml/gcc-announce/2001/msg00004.html(...)
le problème pour les utilisateurs de BSD:
http://gcc.gnu.org/ml/gcc-announce/2001/msg00005.html(...)
[^] # Patch 3.0.1 -> 3.0.2 quelque part ?
Posté par Patrice Mandin . Évalué à 1.
Merci
[^] # Re: Patch 3.0.1 -> 3.0.2 quelque part ?
Posté par Pierre Tramal (site web personnel) . Évalué à 4.
[^] # Re: précisions
Posté par Anonyme . Évalué à -1.
# symboles ?
Posté par Yohann (site web personnel) . Évalué à 4.
j'ai pas mal entendu parler de problemes de compatibilite des symboles des gcc 3.X.X
Quelqu'un pourrait il m'expliquer, clairement parce que je ne hack pas (encore :) gcc, comment tu ca fonctionne/ne fonctionne pas ?
Ca serait sympa
[^] # Re: symboles ?
Posté par psc . Évalué à -4.
me suis refait une lfs a cause de ca !!!
[^] # Re: symboles ?
Posté par Benoît Sibaud (site web personnel) . Évalué à 10.
Cela ne s'applique pas au C.
[^] # Re: symboles ?
Posté par psc . Évalué à -3.
[^] # Re: symboles ?
Posté par Anonyme . Évalué à 1.
Je n'ai rien compris à ton message, peux-tu le reformulé stp ?
(c'est une vrai demande)
[^] # Re: symboles ?
Posté par psc . Évalué à 0.
en fait kan tu veux compiler la glibc avec gcc 3
le configure te dit que si tu compile avec gcc 3 ta libC ne fonctionnera pas avec les versions anterieur ou superieur de glibc.
notemment a cause des symboles d'apres ce que j'ai comprid.
or tu disais que le problemes de symboles n'affectait pas les librairies/exec compiler en C
c'est plus clair la ?
[^] # Re: symboles ?
Posté par Benoît Sibaud (site web personnel) . Évalué à 9.
(Par exemple gcc 3.x ne compile pas sur une Patate Sparc, car il faut au moins une glibc 2.2.x et peut-être pas n'importe quel x en plus)
[^] # Re: symboles ?
Posté par psc . Évalué à 2.
[^] # Re: symboles ?
Posté par Pascal Terjan (site web personnel) . Évalué à 5.
[^] # Re: symboles ?
Posté par Benoît Sibaud (site web personnel) . Évalué à 4.
[^] # Re: symboles ?
Posté par psc . Évalué à 0.
maintenant si j'ai tout qui est compiler avec gcc3.x et que je met une nouvelle glibc genre 2.2.4 (compiler avec gcc3.x donc) cela ne devrait poser aucun probleme, or le message dans le configure, dit clairement que ca pose un probleme !
et la je trouve pas ca logique
[^] # Re: symboles ?
Posté par Yohann (site web personnel) . Évalué à 6.
Resumons, je connais un peu le C et l'assembleur, le fonctionnement de la pile...
Pour moi gcc produit du code machine (ok, pas directement).
En compilant un truc, on obtient une suite d'octet, que seul ton proc comprend. Arrete moi si je dis une connerie :)
L'ABI est donc un grand truc ki contient plein d'info sur les symbols, mais lesquelles ?tailles ? adresse ?
Mais dans tout ca je ne comprend pas a quoi servent les symbols ! Quels sont leurs roles ? Quel information contiennent ils ?
[^] # Re: symboles ?
Posté par Benoît Sibaud (site web personnel) . Évalué à 5.
Sur la nouvelle ABI :
http://www.codesourcery.com/cxx-abi/(...)
Les symboles, c'est ce que tu vois quand tu fais un nm sur un .o ou un .a par exemple : les fonctions définies ou utilisées, les attributs définis ou utilisés, etc. Donc leur nom, leur taille, leur emplacement en mémoire, qui les définit, qui les utilise, etc.
[^] # Re: symboles ?
Posté par Pierre Tramal (site web personnel) . Évalué à 6.
[^] # Re: symboles ?
Posté par Yann Droneaud (site web personnel) . Évalué à 4.
l'ABI du C++, et là les fichiers objets générés à
partir de GCC-2 et GCC-3 sont totalement incompatibles...
Pour les problemes avec la glibc, (qui sont aussi les problemes du kernel), c'est lié au changement
dans le fonctionnement des declarations inline static ou extern. Il y a peut etre d'autre problemes mais c'est tout ce que je sais ...
[^] # Re: symboles ?
Posté par wismerhill . Évalué à 1.
partir de GCC-2 et GCC-3 sont totalement incompatibles...
Ce qui n'est pas si étonnant puisqu'il est ici question d'un changement de version majeure.
[^] # Re: symboles ?
Posté par Johann Deneux . Évalué à 2.
toto.c:
void toto(int a) {
return;
}
gcc -c toto.c donne:
toto.o
00000000 t gcc2_compiled.
00000000 T toto
En C++, le nom de la fonction n'est pas suffisant, il faut aussi le type des arguments.
g++-2.95.3 -c toto.c donne:
00000000 ? __FRAME_BEGIN__
00000000 t gcc2_compiled.
00000000 T toto__Fi
gcc 3 utilise une autre convention pour coder le type des arguments.
g++-3 -c toto.c donne:
00000000 T _Z4totoi
Quand un autre fichier objet utilisant la fonction toto doit être créé, il faut savoir quelle convention utiliser. C'est là, je pense, qu'intervient l'incompatibilité entre gcc 2 et gcc 3.
Question pour les curieux: que se passe-t-il si je lie le dernier toto.o avec un titi.c compilé avec gcc contenant la définition suivante:
int _Z4totoi;
[^] # Re: symboles ?
Posté par Benoît Sibaud (site web personnel) . Évalué à 1.
int _Z4totoi;
int main()
{
}
$ nm toto.o
00000000 T _Z4totoi
$ nm titi.o
00000000 B _Z4totoi
00000000 T main
$ g++-3.0 toto.o titi.o
titi.o(.bss+0x0): multiple definition of `toto(int)'
toto.o(.text+0x0): first defined here
/usr/bin/ld: Warning: size of symbol `toto(int)' changed from 5 to 4 in titi.o
/usr/bin/ld: Warning: type of symbol `toto(int)' changed from 2 to 1 in titi.o
collect2: ld returned 1 exit status
# compilation de KDE
Posté par Marc . Évalué à 8.
Le code généré par g++ 3.0 est-il plus performant que sont celui de son prédécesseur (je pense au template par exemple) ?
# pfffff.........
Posté par Pat _ . Évalué à 0.
il a fallu que je boot sur un CD, supprime les /usr/lib/libgcc_s.* et relance l'installe du gcc 3.0.2 pour que cela reparte (ouf)
[^] # Re: pfffff.........
Posté par Anonyme . Évalué à 0.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.