# [emerge] Problème de compilation pour GCC

## Picani

Bonjour à tous !!

Après 2 mois relativement loin de mon ordi, je me suis dit que faire des mises à jour serait un bon début. Dans la liste je vois GCC-4.4.1 (actuellement j'ai 4.3.2-r3). Impossible de le compiler, sa plante tjrs sur le même fichier : insn-attrtab.c. Je me suis mis en MAKEOPTS="-j1", -march=i686 (plutôt que core2) et j'ai même installer un binaire de GCC-4.3.2-r3 ... [Je sais ça sent le déjà vu.]

Voici les dernières lignes des 2 derniers build.log :

```

i686-pc-linux-gnu-gcc -c  -O -DIN_GCC   -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wcast-qual -Wold-style-definition -Wc++-compat -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -fno-common  -DHAVE_CONFIG_H -I. -I. -I/var/tmp/portage/sys-devel/gcc-4.4.1/work/gcc-4.4.1/gcc -I/var/tmp/portage/sys-devel/gcc-4.4.1/work/gcc-4.4.1/gcc/. -I/var/tmp/portage/sys-devel/gcc-4.4.1/work/gcc-4.4.1/gcc/../include -I/var/tmp/portage/sys-devel/gcc-4.4.1/work/gcc-4.4.1/gcc/../libcpp/include  -I/var/tmp/portage/sys-devel/gcc-4.4.1/work/gcc-4.4.1/gcc/../libdecnumber -I/var/tmp/portage/sys-devel/gcc-4.4.1/work/gcc-4.4.1/gcc/../libdecnumber/bid -I../libdecnumber    insn-attrtab.c -o insn-attrtab.o

/var/tmp/portage/sys-devel/gcc-4.4.1/temp/ccBF6dwB.s: Assembler messages:

/var/tmp/portage/sys-devel/gcc-4.4.1/temp/ccBF6dwB.s:122349: Error: junk at end of line, first unrecognized character valued 0x8

/var/tmp/portage/sys-devel/gcc-4.4.1/temp/ccBF6dwB.s:143807: Error: bad register name `%erp)'

make[3]: *** [insn-attrtab.o] Erreur 1

make[3]: quittant le rÃ©pertoire Â« /var/tmp/portage/sys-devel/gcc-4.4.1/work/build/gcc Â»

make[2]: *** [all-stage1-gcc] Erreur 2

make[2]: quittant le rÃ©pertoire Â« /var/tmp/portage/sys-devel/gcc-4.4.1/work/build Â»

make[1]: *** [stage1-bubble] Erreur 2

make[1]: quittant le rÃ©pertoire Â« /var/tmp/portage/sys-devel/gcc-4.4.1/work/build Â»

make: *** [bootstrap-lean] Erreur 2

 

 ERROR: sys-devel/gcc-4.4.1 failed.

 Call stack:

               ebuild.sh, line   49:  Called src_compile

             environment, line 4833:  Called toolchain_src_compile

             environment, line 5359:  Called gcc_src_compile

             environment, line 3059:  Called gcc_do_make

             environment, line 2849:  Called die

 The specific snippet of code:

       emake LDFLAGS="${LDFLAGS}" STAGE1_CFLAGS="${STAGE1_CFLAGS}" LIBPATH="${LIBPATH}" BOOT_CFLAGS="${BOOT_CFLAGS}" ${GCC_MAKE_TARGET} || die "emake failed with ${GCC_MAKE_TARGET}";

  The die message:

   emake failed with bootstrap-lean

 

 If you need support, post the topmost build error, and the call stack if relevant.

 A complete build log is located at '/var/tmp/portage/sys-devel/gcc-4.4.1/temp/build.log'.

 The ebuild environment file is located at '/var/tmp/portage/sys-devel/gcc-4.4.1/temp/environment'. 

```

et 

```

/var/tmp/portage/sys-devel/gcc-4.4.1/work/build/./prev-gcc/xgcc -B/var/tmp/portage/sys-devel/gcc-4.4.1/work/build/./prev-gcc/ -B/usr/i686-pc-linux-gnu/bin/ -c  -O2 -march=i686 -pipe -DIN_GCC   -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wcast-qual -Wold-style-definition -Wc++-compat -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings   -DHAVE_CONFIG_H -I. -I. -I/var/tmp/portage/sys-devel/gcc-4.4.1/work/gcc-4.4.1/gcc -I/var/tmp/portage/sys-devel/gcc-4.4.1/work/gcc-4.4.1/gcc/. -I/var/tmp/portage/sys-devel/gcc-4.4.1/work/gcc-4.4.1/gcc/../include -I/var/tmp/portage/sys-devel/gcc-4.4.1/work/gcc-4.4.1/gcc/../libcpp/include  -I/var/tmp/portage/sys-devel/gcc-4.4.1/work/gcc-4.4.1/gcc/../libdecnumber -I/var/tmp/portage/sys-devel/gcc-4.4.1/work/gcc-4.4.1/gcc/../libdecnumber/bid -I../libdecnumber    insn-attrtab.c -o insn-attrtab.o

/var/tmp/portage/sys-devel/gcc-4.4.1/work/gcc-4.4.1/gcc/config/i386/i386.md: In function â€˜internal_dfa_insn_codeâ€™:

/var/tmp/portage/sys-devel/gcc-4.4.1/work/gcc-4.4.1/gcc/config/i386/i386.md:335: internal compiler error: Erreur de segmentation

Please submit a full bug report,

with preprocessed source if appropriate.

See <http://bugs.gentoo.org/> for instructions.

make[3]: *** [insn-attrtab.o] Erreur 1

make[3]: quittant le rÃ©pertoire Â« /var/tmp/portage/sys-devel/gcc-4.4.1/work/build/gcc Â»

make[2]: *** [all-stage3-gcc] Erreur 2

make[2]: quittant le rÃ©pertoire Â« /var/tmp/portage/sys-devel/gcc-4.4.1/work/build Â»

make[1]: *** [stage3-bubble] Erreur 2

make[1]: quittant le rÃ©pertoire Â« /var/tmp/portage/sys-devel/gcc-4.4.1/work/build Â»

make: *** [bootstrap-lean] Erreur 2

 

 ERROR: sys-devel/gcc-4.4.1 failed.

 Call stack:

               ebuild.sh, line   49:  Called src_compile

             environment, line 4833:  Called toolchain_src_compile

             environment, line 5359:  Called gcc_src_compile

             environment, line 3059:  Called gcc_do_make

             environment, line 2849:  Called die

 The specific snippet of code:

       emake LDFLAGS="${LDFLAGS}" STAGE1_CFLAGS="${STAGE1_CFLAGS}" LIBPATH="${LIBPATH}" BOOT_CFLAGS="${BOOT_CFLAGS}" ${GCC_MAKE_TARGET} || die "emake failed with ${GCC_MAKE_TARGET}";

  The die message:

   emake failed with bootstrap-lean

 

 If you need support, post the topmost build error, and the call stack if relevant.

 A complete build log is located at '/var/tmp/portage/sys-devel/gcc-4.4.1/temp/build.log'.

 The ebuild environment file is located at '/var/tmp/portage/sys-devel/gcc-4.4.1/temp/environment'.

```

Et emerge --info :

```

Portage 2.1.6.13 (default/linux/x86/2008.0, gcc-4.3.2, glibc-2.9_p20081201-r2, 2.6.29-gentoo-r6 i686)

=================================================================

System uname: Linux-2.6.29-gentoo-r6-i686-Intel-R-_Core-TM-2_CPU_6300_@_1.86GHz-with-gentoo-1.12.11.1

Timestamp of tree: Wed, 16 Sep 2009 10:45:02 +0000

app-shells/bash:     3.2_p39

dev-java/java-config: 2.1.8-r1

dev-lang/python:     2.6.2-r1

dev-util/cmake:      2.6.4

sys-apps/baselayout: 1.12.11.1

sys-apps/sandbox:    1.6-r2

sys-devel/autoconf:  2.13, 2.63-r1

sys-devel/automake:  1.9.6-r2, 1.10.2

sys-devel/binutils:  2.18-r3

sys-devel/gcc-config: 1.4.1

sys-devel/libtool:   1.5.26

virtual/os-headers:  2.6.29

ACCEPT_KEYWORDS="x86"

CBUILD="i686-pc-linux-gnu"

CFLAGS="-O2 -march=i686 -pipe"

CHOST="i686-pc-linux-gnu"

CONFIG_PROTECT="/etc"

CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/fonts/fonts.conf /etc/gconf /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/udev/rules.d"

CXXFLAGS="-O2 -march=i686 -pipe"

DISTDIR="/usr/portage/distfiles"

FEATURES="distlocks fixpackages protect-owned sandbox sfperms strict unmerge-orphans userfetch"

GENTOO_MIRRORS="ftp://ftp.free.fr/mirrors/ftp.gentoo.org/ "

LANG="fr_FR.utf8"

LDFLAGS="-Wl,-O1"

LINGUAS="fr"

MAKEOPTS="-j1"

PKGDIR="/usr/portage/packages"

PORTAGE_CONFIGROOT="/"

PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"

PORTAGE_TMPDIR="/var/tmp"

PORTDIR="/usr/portage"

SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"

USE="X aac acl alsa berkdb bzip2 cairo cdio cli cracklib crypt dbus dri dvd dvdnav emacs flac fortran fr gdbm gtk iconv id3tag ipv6 isdnlog java jpeg mmx mp3 mudflap ncurses nls nptl nptlonly ogg opengl openmp pam pch pcre perl png pppd python qt4 readline reflection sdl session slit spl sqlite sse sse2 ssl ssse3 sysfs tcpd theora tiff toolbar truetype unicode vorbis wavpack wma x86 xft xorg zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1 emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" ELIBC="glibc" INPUT_DEVICES="keyboard mouse" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="fr" USERLAND="GNU" VIDEO_CARDS="radeon"

Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LC_ALL, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, PORTDIR_OVERLAY

```

----------

## netfab

Tu as vérifié ta ram ? Même fichier, mais erreurs différentes, je pense qu'un memtest ne serait pas superflu.

----------

## elyes

également, vérifier s'il te reste de la place sur ton disque.

----------

## boozo

'alute

je penche aussi en faveur de la ram et/ou d'un swap trop faible - insn-attrtab.c est même connu pour son embonpoint ^^

// vu sur b/f.g.o : certains ont dû virer pipe des cflags pour passer (sic!) oO

btw: un besoin spécifique de passer en 4.4.1 sur une arch en stable ?

----------

## Picani

Houlala plein de questions d'un coup !!! (dsl je sors de 2h de sport et 1h d'histoire avec ensuite 1 petite heure de transport en commun ...)

Alors la ram je vais tester mais j'ai jamais eu de problème, le swap c'est pas ça (4Go) et pour le passage à 4.4.1, ben je dirais que le projet GCC est sérieux et qu'il considère cette version comme stable, donc  c'est qu'elle dois l'être (en clair pas vraiment de raison, juste une envie ...  :Very Happy:  )

----------

## boozo

encore une question alors : c'est dans une vm ou c'est une compilation brut de fonderie ?

 :Shocked:   4Go de swap ?!?   :Shocked: 

----------

## Picani

Non c'est "une compilation brut de fonderie" lol. Et les 4Go de swap c'était pour faire des vm, mais, jje veux que tout marche bien (y comprit gcc) avant de m'y mettre.

----------

## Picani

C'est bon, le problème venait bien de la mémoire, une barette qui marche plus ... mais le sytème marche nickel maintenant !

Sinon j'ai juste une petite question : en recompilant la Glibc, je me suis apperçut que c'est -march=i686 qui est utilisé alors que dans mon make.conf ya -march=core2. D'ailleurs toutes les autres compilations se font avec. Ya une bonne raisons ? Parce que c'est quand même un gros truc super utilisé, donc si on peut pas l'optimiser complètement c'est moyen.

----------

## xaviermiller

hem, il vaut mieux une lib hyper importante bien compilée, que "optimisée" et potentiellement instable.

Beaucoup d'ebuilds filtrent les CFLAGS et remplacent parfois même le "-march".

En fait, un Core2 n'est qu'un 8086 légèrement amélioré. Pas besoin de SSE4 pour glibc  :Wink: 

----------

## kwenspc

 *XavierMiller wrote:*   

> En fait, un Core2 n'est qu'un 8086 légèrement amélioré. Pas besoin de SSE4 pour glibc 

 

Au contraire, mieux vaut que les fonctions mathématiques utilisent des instructions dédiées et performantes plutôt que les génériques!

Et mettre un -march=core2 n'a jamais rien bousillé en stabilité. Ça permet justement de tirer partis des jeux d'instructions de son processeur là où il faut. C'est utiliser des flags spécifiques à l'optimisation du code (gcc ça va transformer le déroulement des algos) qui amènent à des instabilités.

----------

## Picani

D'accord avec kwenspc. Mais bon si on peut pas ...

----------

## Mike Hunt

 *Picani wrote:*   

> Sinon j'ai juste une petite question : en recompilant la Glibc, je me suis apperçut que c'est -march=i686 qui est utilisé alors que dans mon make.conf ya -march=core2. D'ailleurs toutes les autres compilations se font avec. Ya une bonne raisons ? Parce que c'est quand même un gros truc super utilisé, donc si on peut pas l'optimiser complètement c'est moyen.

 

Ça semble être tout à fait normal, ici j'ai:

```
# grep CFLAGS /etc/make.conf

CFLAGS="-march=native -O2 -pipe"

CXXFLAGS="${CFLAGS}"

# cat /var/db/pkg/sys-libs/glibc-2.9_p20081201-r2/CFLAGS

-march=i686 -pipe -O2 -fno-strict-aliasing
```

----------

## kwenspc

l'option -march dépend totalement de ton CPU. Si c'est pas un core2duo forcément que tu vas pas mettre core2. Le mot clé native pour -march permet de laisser à gcc le soin de prendre le mieux (depuis gcc 4.2 je crois?). Chez moi il sélectionne nocona (j'ai un quad core2, et je reste en 64 bits) pour la glibc.

Mais la glibc est un paquet spécial, pas étonnant que le CFLAGS du make.conf est adapté par la suite. Donc Picani c'est pas parce que la glibc prend i686 qu'il te faut pas mettre core2 (ou native) dans ton make.conf, la plupart des autres paquets utiliseront ça.

----------

## Picani

Ok merci pour les infos.

----------

## freezby

@kwenspc, question à 2 francs : comment sais-tu quel "march" est sélectionné lorsque tu as mis native ??

----------

## guilc

```
 gcc -march=native -Q --help=target
```

----------

## nemo13

 *guilc wrote:*   

> 
> 
> ```
>  gcc -march=native -Q --help=target
> ```
> ...

 

Merci guilc,

C'est un plaisir de fréquenter ce forum , on y apprend en permanence.  :Very Happy: 

A+

----------

