usr/include/bits/stdlib.h:37: multiple definition of `realpath' .libs/backtrace.o:/usr/include/bits/stdlib.h:37: first defined here .libs/in_pack_generic.o: In function `fgets_unlocked': /usr/include/bits/stdio2.h:114: multiple definition of `fgets_unlocked' .libs/backtrace.o:/usr/include/bits/stdio2.h:114: first defined here .libs/in_pack_generic.o: In function `fgets': /usr/include/bits/stdio2.h:98: multiple definition of `fgets' .libs/backtrace.o:/usr/include/bits/stdio2.h:98: first defined here .libs/in_pack_generic.o: In function `gets': /usr/include/bits/stdio2.h:83: multiple definition of `gets' .libs/backtrace.o:/usr/include/bits/stdio2.h:83: first defined here .libs/in_unpack_generic.o: In function `stpncpy': /usr/include/bits/string3.h:160: multiple definition of `stpncpy' .libs/backtrace.o:/usr/include/bits/string3.h:160: first defined here .libs/in_unpack_generic.o: In function `wcstombs': /usr/include/bits/stdlib.h:114: multiple definition of `wcstombs' .libs/backtrace.o:/usr/include/bits/stdlib.h:114: first defined here .libs/in_unpack_generic.o: In function `mbstowcs': /usr/include/bits/stdlib.h:95: multiple definition of `mbstowcs' .libs/backtrace.o:/usr/include/bits/stdlib.h:95: first defined here .libs/in_unpack_generic.o: In function `wctomb': /usr/include/bits/stdlib.h:74: multiple definition of `wctomb' .libs/backtrace.o:/usr/include/bits/stdlib.h:74: first defined here .libs/in_unpack_generic.o: In function `ptsname_r': /usr/include/bits/stdlib.h:53: multiple definition of `ptsname_r' .libs/backtrace.o:/usr/include/bits/stdlib.h:53: first defined here .libs/in_unpack_generic.o: In function `realpath': /usr/include/bits/stdlib.h:37: multiple definition of `realpath' .libs/backtrace.o:/usr/include/bits/stdlib.h:37: first defined here .libs/in_unpack_generic.o: In function `fgets_unlocked': /usr/include/bits/stdio2.h:114: multiple definition of `fgets_unlocked' .libs/backtrace.o:/usr/include/bits/stdio2.h:114: first defined here .libs/in_unpack_generic.o: In function `fgets': /usr/include/bits/stdio2.h:98: multiple definition of `fgets' .libs/backtrace.o:/usr/include/bits/stdio2.h:98: first defined here .libs/in_unpack_generic.o: In function `gets': /usr/include/bits/stdio2.h:83: multiple definition of `gets' .libs/backtrace.o:/usr/include/bits/stdio2.h:83: first defined here collect2: ld returned 1 exit status make[3]: *** [libgfortran.la] Error 1 make[3]: Leaving directory `/tmp/justin/portage/sys-devel/gcc-4.4.1/work/build/x86_64-pc-linux-gnu/libgfortran' make[2]: *** [all] Error 2 make[2]: Leaving directory `/tmp/justin/portage/sys-devel/gcc-4.4.1/work/build/x86_64-pc-linux-gnu/libgfortran' make[1]: *** [all-target-libgfortran] Error 2 make[1]: Leaving directory `/tmp/justin/portage/sys-devel/gcc-4.4.1/work/build' make: *** [bootstrap-lean] Error 2 * ERROR: sys-devel/gcc-4.4.1 failed: * emake failed with bootstrap-lean * * Call stack: * ebuild.sh, line 51: Called call-ebuildshell 'src_compile' $ emerge --info =sys-devel/gcc-4.4.1 Portage 2.2.00.14555-prefix (prefix/linux/amd64, gcc-4.2.4, unavailable, 2.6.18.8-0.10-default x86_64) ================================================================= System Settings ================================================================= System uname: Linux-2.6.18.8-0.10-default-x86_64-Intel-R-_Xeon-R-_CPU_5160_@_3.00GHz-with-SuSE-10.2-X86-64 Timestamp of tree: Thu, 15 Oct 2009 14:25:45 +0000 app-shells/bash: 4.0_p33-r00.1 dev-lang/python: 2.6.2-r2 sys-apps/sandbox: 2.1 sys-devel/autoconf: 2.63-r01.1 sys-devel/automake: 1.10.2-r00.1, 1.11 sys-devel/binutils: 2.20.51.0.1 sys-devel/gcc-config: 1.4.1-r00.2 sys-devel/libtool: 2.2.6a-r00.2 virtual/os-headers: 2.6.30-r1 ABI="amd64" ACCEPT_KEYWORDS="~amd64-linux" ACCEPT_LICENSE="* -@EULA" ACCEPT_PROPERTIES="*" ACLOCAL_FLAGS="-I /opt/gnome/share/aclocal -I /opt/gnome/share/aclocal" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci 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" ARCH="amd64" ASFLAGS_x86="--32" AUTOCLEAN="yes" CBUILD="x86_64-pc-linux-gnu" CDEFINE_amd64="__x86_64__" CDEFINE_x86="__i386__" CFLAGS="-O2 -march=nocona -pipe" CFLAGS_x86="-m32" CHOST="x86_64-pc-linux-gnu" CHOST_amd64="x86_64-pc-linux-gnu" CHOST_x86="i686-pc-linux-gnu" CLEAN_DELAY="5" COLLISION_IGNORE="/lib/modules" COLORTERM="1" COLUMNS="279" CONFIG_PROTECT="/etc" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/sandbox.d /etc/terminfo" CPU="x86_64" CSHEDIT="emacs" CSHRCREAD="true" CVS_RSH="ssh" CXXFLAGS="-O2 -march=nocona -pipe" DEFAULT_ABI="default" DEFAULT_PATH="/home/anubis/justin/prefix/usr/bin:/home/anubis/justin/prefix/usr/sbin:/home/anubis/justin/prefix/bin:/home/anubis/justin/prefix/sbin:/home/anubis/justin/prefix/bin:/usr/bin:/bin" DISTDIR="/home/anubis/justin/prefix/usr/portage/distfiles" EDITOR="/home/anubis/justin/prefix/bin/nano" ELIBC="glibc" EMERGE_DEFAULT_OPTS="-t --verbose --jobs=9 --load-average=8 --keep-going" EMERGE_WARNING_DELAY="10" ENV="/etc/bash.bashrc" EPREFIX="/home/anubis/justin/prefix" EROOT="/home/anubis/justin/prefix/" F77="gfortran" FCFLAGS="-O2 -march=nocona -pipe" FEATURES="assume-digests collision-protect distlocks fixpackages news noinfo parallel-fetch preserve-libs protect-owned sfperms sign split-debug strict unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync" FETCHCOMMAND="/home/anubis/justin/prefix/usr/bin/wget -t 5 -T 60 --passive-ftp -O "${DISTDIR}/${FILE}" "${URI}"" FFLAGS="-O2 -march=nocona -pipe" FORTRANC="gfortran" FROM_HEADER="" GCC_SPECS="" GENTOO_MIRRORS="http://gentoo.j-schmitz.net/mirror/ ftp://ftp.gentoo.mesh-solutions.com/gentoo/ ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/gentoo ftp://ftp.tu-clausthal.de/pub/linux/gentoo/ http://mirror.switch.ch/ftp/mirror/gentoo/" GNOME2_PATH="/usr/local:/opt/gnome:/usr:/usr/local:/opt/gnome:/usr" GROFF_NO_SGR="yes" GROUP="ibi" GTK_PATH="/usr/local/lib/gtk-2.0:/opt/gnome/lib/gtk-2.0:/usr/lib/gtk-2.0:/usr/local/lib/gtk-2.0:/opt/gnome/lib/gtk-2.0:/usr/lib/gtk-2.0" GTK_PATH64="/usr/local/lib64/gtk-2.0:/opt/gnome/lib64/gtk-2.0:/usr/lib64/gtk-2.0:/usr/local/lib64/gtk-2.0:/opt/gnome/lib64/gtk-2.0:/usr/lib64/gtk-2.0" G_BROKEN_FILENAMES="1" G_FILENAME_ENCODING="@locale,UTF-8,ISO-8859-15,CP1252" HISTSIZE="1000" HOME="/home/anubis/justin" HOST="sarastro" HOSTNAME="sarastro.ibi.kfa-juelich.de" HOSTTYPE="x86_64" INFODIR="/usr/local/info:/usr/share/info:/usr/info:/usr/local/info:/usr/share/info:/usr/info" INFOPATH="/home/anubis/justin/prefix/usr/share/info:/home/anubis/justin/prefix/usr/share/gcc-data/x86_64-pc-linux-gnu/4.2.4/info" INPUTRC="/etc/inputrc" INPUT_DEVICES="keyboard mouse" JAVA_BINDIR="/usr/lib64/jvm/jre/bin" JAVA_HOME="/usr/lib64/jvm/jre" JAVA_ROOT="/usr/lib64/jvm/jre" JRE_HOME="/usr/lib64/jvm/jre" KERNEL="linux" LANG="de_DE.UTF-8" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LDFLAGS="-Wl,-O1,--hash-style=gnu,--sort-common" LDFLAGS_x86="-m elf_i386" LESS="-R -M --shift 5" LESSCLOSE="lessclose.sh %s %s" LESSKEY="/etc/lesskey.bin" LESSOPEN="|lesspipe.sh %s" LESS_ADVANCED_PREPROCESSOR="no" LIBDIR_amd64="lib" LIBDIR_amd64_fbsd="lib64" LIBDIR_ppc="lib32" LIBDIR_ppc64="lib64" LIBDIR_sparc32="lib32" LIBDIR_sparc64="lib64" LIBDIR_x86="lib32" LIBDIR_x86_fbsd="lib32" LINES="79" LINGUAS="en" LOGNAME="justin" LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmpc=\E[P:DC=\E[%dP:\ :im=\E[4h:ei=\E[4l:mi:IC=\E[%d@:ks=\E[?1h\E=:\ :ke=\E[?1l\E>:vi=\E[?25l:ve=\E[34h\E[?25h:vs=\E[34l:\ :ti=\E[?1049h:te=\E[?1049l:us=\E[4m:ue=\E[24m:so=\E[3m:\ :se=\E[23m:mb=\E[5m:md=\E[1m:mr=\E[7m:me=\E[m:ms:\ :Co#8:pa#64:AF=\E[3%dm:AB=\E[4%dm:op=\E[39;49m:AX:\ :vb=\Eg:G0:as=\E(0:ae=\E(B:\ :ac=\140\140aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~..--++,,hhII00:\ :po=\E[5i:pf=\E[4i:k0=\E[10~:k1=\EOP:k2=\EOQ:k3=\EOR:\ :k4=\EOS:k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:\ :k9=\E[20~:k;=\E[21~:F1=\E[23~:F2=\E[24~:F3=\E[25~:\ :F4=\E[26~:F5=\E[28~:F6=\E[29~:F7=\E[31~:F8=\E[32~:\ :F9=\E[33~:FA=\E[34~:kb=:K1=\EOw:K2=\EOu:K3=\EOy:\ :K4=\EOq:K5=\EOs:kB=\E[Z:kE=\E[8\^:*4=\E[3$:*7=\E[8$:\ :#2=\E[7$:#3=\E2$:#4=\E[d:%c=\E[6$:%e=\E[5$:%i=\E[c:\ :kh=\E[1~:@1=\E[1~:kH=\E[4~:@7=\E[4~:kN=\E[6~:kP=\E[5~:\ :kI=\E[2~:kD=\E[3~:ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:km:" TEXINPUTS="::/home/anubis/justin/.TeX:/usr/share/doc/.TeX:/usr/doc/.TeX:/home/anubis/justin/.TeX:/usr/share/doc/.TeX:/usr/doc/.TeX" USE="X amd64 bash-completion berkdb bzip2 cli cracklib crypt dri fortran gdbm iconv isdnlog libffi lzma mmx modules mudflap nano-syntax ncurses nls nptl nptlonly openmp pcre perl png pppd prefix python readline reflection session spl sse sse2 ssl sysfs tcpd threads tk truetype unicode xorg zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci 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="en" USERLAND="GNU" VIDEO_CARDS="fglrx" USER="justin" USERLAND="GNU" USE_EXPAND="ALSA_CARDS ALSA_PCM_PLUGINS APACHE2_MODULES APACHE2_MPMS CAMERAS CROSSCOMPILE_OPTS DVB_CARDS ELIBC FCDSL_CARDS FOO2ZJS_DEVICES FRITZCAPI_CARDS INPUT_DEVICES KERNEL LCD_DEVICES LINGUAS LIRC_DEVICES MISDN_CARDS NETBEANS_MODULES QEMU_SOFTMMU_TARGETS QEMU_USER_TARGETS SANE_BACKENDS USERLAND VIDEO_CARDS" USE_EXPAND_HIDDEN="CROSSCOMPILE_OPTS ELIBC KERNEL USERLAND" USE_ORDER="env:pkg:conf:defaults:pkginternal:env.d" VENDOR="suse" VIDEO_CARDS="fglrx" WINDOW="0" WINDOWMANAGER="/usr/bin/kde" XCURSOR_THEME="crystalwhite" XDG_CONFIG_DIRS="/usr/local/etc/xdg/:/etc/xdg/:/etc/opt/gnome/xdg/" XDG_DATA_DIRS="/usr/local/share/:/usr/share/:/etc/opt/kde3/share/:/opt/kde3/share/:/opt/gnome/share/" XKEYSYMDB="/usr/share/X11/XKeysymDB" XNLSPATH="/usr/share/X11/nls" _="/home/anubis/justin/prefix/usr/bin/emerge" mc="() { . /usr/share/mc/bin/mc-wrapper.sh }" ================================================================= Package Settings ================================================================= sys-devel/gcc-4.4.1 was built with the following: USE="mudflap nls nptl openmp (prefix) (-altivec) -bootstrap -build -doc (-fixed-point) -fortran -gcj -graphite -gtk (-hardened) -ip28 -ip32r10k (-libffi) (-multilib) -multislot (-n32) (-n64) -nocxx -objc -objc++ -objc-gc -test -vanilla" $ emerge -pqv =sys-devel/gcc-4.4.1 [ebuild R ] sys-devel/gcc-4.4.1 USE="fortran* mudflap nls nptl openmp (-altivec) -bootstrap -build -doc (-fixed-point) -gcj -graphite -gtk (-hardened) -ip28 -ip32r10k (-libffi) (-multilib) -multislot (-n32) (-n64) -nocxx -objc -objc++ -objc-gc -test -vanilla"
On RHEL5 amd64-linux I am able to successfully emerge sys-devel/gcc-4.4.1 using USE=fortran, but net-misc/openssh-5.3_p1 fails with a similar error: -------------------------------------------------------------------------------- x86_64-pc-linux-gnu-gcc -o sftp progressmeter.o sftp.o sftp-client.o sftp-common.o sftp-glob.o -L. -Lopenbsd-compat/ -Wl,-O1 -fstack-protector-all -Wl,-O1 -lssh -lopenbsd-compat -L/tmp/gentoo/usr/lib -lssl -lcrypto -ldl-lz -lutil -lz -lnsl -lcrypt -lresolv ./libssh.a(fatal.o): In function `fgets_unlocked': fatal.c:(.text+0xb0): multiple definition of `fgets_unlocked' ssh-rand-helper.o:ssh-rand-helper.c:(.text+0x1590): first defined here ./libssh.a(fatal.o): In function `fgets': fatal.c:(.text+0xf0): multiple definition of `fgets' ssh-rand-helper.o:ssh-rand-helper.c:(.text+0x15d0): first defined here ... -------------------------------------------------------------------------------- I think the problem could be related to glibc 2.5 (on RHEL5) defining these functions in /usr/include/bits/*.h Using a vanilla gcc-4.4.1 (bootstrapped with the RHEL5 system gcc) the multiple definitions do not occur, so some Gentoo modifications seem to be a problem. BTW, on RHEL4 having glibc-2.3 net-misc/openssh-5.3_p1 can be emerged without any problems.
hmmm, these multiple definitions errors get nasty, more because I've no clue why they only happen on certain linuxes...
I have confirmed that the workaround to this bug is either USE=vanilla or USE=-fortran. It would be useful to know what the heck USE=vanilla is doing but it is not obvious in the gcc ebuilds.
vanilla means: apply no patches
sys-devel/gcc-4.4.4-r1 also failed for me on RHEL5 (amd64-linux) with USE="-vanilla fortran". Appending "-fgnu89-inline" to CFLAGS in libgfortran fixed the issue. This also works for other packages like app-arch/cpio, app-arch/gzip and net-misc/openssh. BTW: The problematic patch seems to be "10_all_gcc-default-fortify-source.patch", which enables _FORTIFY_SOURCE=2 by default. If this patch is excluded (using GENTOO_PATCH_EXCLUDE) gcc also compiles itself successfully, but other packages still fail with multiple definitions.
(In reply to comment #5) > Appending "-fgnu89-inline" to CFLAGS in libgfortran > fixed the issue. This also works for other packages like app-arch/cpio, > app-arch/gzip and net-misc/openssh. confirmed here, thx.
*** Bug 283663 has been marked as a duplicate of this bug. ***
and gcc-4.5.*?
*** Bug 290263 has been marked as a duplicate of this bug. ***
*** Bug 306945 has been marked as a duplicate of this bug. ***
Current stable gcc-4.5.2-r00.1 built fine with default USE="-vanilla fortran" on host-OS OpenSuse. I tried a few others.. All emerged fine: sys-devel/gcc-4.4.5 sys-devel/gcc-4.4.4-r2
ok, closing then, thanks
More talk on the ML about this issue so I guess we will re-open..
Benda says this allows compilation: GENTOO_PATCH_EXCLUDE=10_all_gcc-default-fortify-source.patch
(In reply to comment #14) > Benda says this allows compilation: > GENTOO_PATCH_EXCLUDE=10_all_gcc-default-fortify-source.patch Ah-ha, In Comment 5 Stephan Hartmann already mentioned about this work around. The patch just enable that buffer overflow check by default. I am now using Centos 5 with gcc-4.5.3 and no problems are spotted. Don't know what Stephan Hartmann refers to by "but other packages still fail with multiple definitions."
(In reply to comment #15) > (In reply to comment #14) > > Benda says this allows compilation: > > GENTOO_PATCH_EXCLUDE=10_all_gcc-default-fortify-source.patch > > Ah-ha, In Comment 5 Stephan Hartmann already mentioned about this work around. > The patch just enable that buffer overflow check by default. I am now using > Centos 5 with gcc-4.5.3 and no problems are spotted. So, excluding a patch is easy to do in something like the bashrc inside the profiles IF we can find a condition to check.. Maybe: if "/lib/libc.so.6 | grep "C Library" | grep version" == $problem_version OR easier, "/usr/bin/ldd --version | head -n1" Thoughts anyone?
since this depends on the libc, I suggest to query the libc on Linux for it's version (/lib/libc.so or something?) and exclude that patch based on some number out there. The devil is in the details, of course
(In reply to comment #17) > since this depends on the libc, I suggest to query the libc on Linux for it's > version (/lib/libc.so or something?) and exclude that patch based on some > number out there. That is the same as what I just said, no? I'll give it a try
oh, right, I missed that one, sorry for the noise.
I didn't REALLY want to go here, but... % cat profile.bashrc # This is a ugly issue, see bug 289757 for origins # 1) check OS since you cannot assume that *a* version of glibc is to blame, for # some reason # 2) On OS, check for a glibc version # 3) Then exclude the fortify patch # # To add another "problem host OS" then add another elif block or so # if [[ ${PN} == "gcc" ]]; then if [[ -f /etc/redhat-release ]]; then if [[ $(grep "release 5" /etc/redhat-release > /dev/null) ]]; then if [[ $(/lib/libc.so.6 | grep "version 2.5" > /dev/null ); then GENTOO_PATCH_EXCLUDE=10_all_gcc-default-fortify-source.patch fi fi elif [[ -f /etc/SuSE-release ]]; then if [[ $(grep "VERSION = 10" /etc/SuSE-release > /dev/null) ]]; then if [[ $(/lib/libc.so.6 | grep "version 2.4" > /dev/null ); then GENTOO_PATCH_EXCLUDE=10_all_gcc-default-fortify-source.patch fi fi fi fi // vim: set expandtab ts=4: <EOF>
oh my... If we'd know what actually fails to compile/link, we probably could just try to compile a simple program with -Wa,FORTIFY=2 or whatever is the correct invocation.
(In reply to comment #21) > oh my... > > If we'd know what actually fails to compile/link, we probably could just try to > compile a simple program with -Wa,FORTIFY=2 or whatever is the correct > invocation. What about this one stolen from autoconf snprintf test. cat > test.c <<< #include <stdio.h> int snprintf(char *a, size_t b, const char *c, ...) { return 0; } int main () { snprintf(0, 0, 0); return 0; } <EOF> Even host shipped gcc fails: $ /usr/bin/gcc -O2 -D_FORTIFY_SOURCE=2 -o test test.c test.c:2: error: expected declaration specifiers or ‘...’ before numeric constant test.c:2: error: expected declaration specifiers or ‘...’ before ‘__builtin_object_size’ test.c:2: warning: conflicting types for built-in function ‘__builtin___snprintf_chk’ test.c: In function ‘main’: test.c:8: warning: passing argument 3 of ‘__builtin___snprintf_chk’ makes pointer from integer without a cast BTW, RHEL 4 with glibc-2.3.5 fails with this test, causing openssh to fail. That's where I have discovered this test piece.
(In reply to comment #21) > oh my... > > If we'd know what actually fails to compile/link, we probably could just try to > compile a simple program with -Wa,FORTIFY=2 or whatever is the correct > invocation. And maybe this test is need understandable: http://sourceware.org/bugzilla/show_bug.cgi?id=6409
(In reply to comment #23) > (In reply to comment #21) > > oh my... > > > > If we'd know what actually fails to compile/link, we probably could just try to > > compile a simple program with -Wa,FORTIFY=2 or whatever is the correct > > invocation. > > And maybe this test is need understandable: > > http://sourceware.org/bugzilla/show_bug.cgi?id=6409 s/need/more/g
(In reply to comment #22) > What about this one stolen from autoconf snprintf test. Sorry Benda, I'm not buying this test code. The code snippet fails on RHEL4, but my host doesn't have this bug.
(In reply to comment #25) > Sorry Benda, I'm not buying this test code. The code snippet fails on RHEL4, > but my host doesn't have this bug. Hi, Jeremy. I personally disabled FORTIFY_SOURCE=2 on CentOS 4.9 too. Otherwise openssh[hpn, tcpd] fails with: i686-pc-linux-gnu-gcc -O2 -pipe -march=nocona -Wall -Wpointer-arith -Wuninitialized -Wsign-compare -Wformat-security -Wno-pointer-sign -Wno-unused-result -fno-strict-aliasing -fno-builtin-memset -fstack-protector-all -std=gnu99 -I. -I.. -I. -I./.. -DHAVE_CONFIG_H -c bsd-snprintf.c bsd-snprintf.c: In function 'fmtstr': bsd-snprintf.c:499:3: warning: value computed is not used bsd-snprintf.c: At top level: bsd-snprintf.c:832:1: error: expected declaration specifiers or '...' before numeric constant bsd-snprintf.c:832:1: error: expected declaration specifiers or '...' before '__builtin_object_size' bsd-snprintf.c:832:1: warning: conflicting types for built-in function '__builtin___vsnprintf_chk' bsd-snprintf.c:840:1: error: expected declaration specifiers or '...' before numeric constant bsd-snprintf.c:840:1: error: expected declaration specifiers or '...' before '__builtin_object_size' bsd-snprintf.c:840:1: warning: conflicting types for built-in function '__builtin___snprintf_chk' bsd-snprintf.c: In function '__builtin___snprintf_chk': bsd-snprintf.c:846:2: warning: passing argument 3 of '__builtin___vsnprintf_chk' makes pointer from integer without a cast bsd-snprintf.c:832:1: note: expected 'const char *' but argument is of type 'int' bsd-snprintf.c:846:2: warning: passing argument 4 of '__builtin___vsnprintf_chk' makes pointer from integer without a cast bsd-snprintf.c:832:1: note: expected 'va_list' but argument is of type 'unsigned int' bsd-snprintf.c:846:2: error: too many arguments to function '__builtin___vsnprintf_chk' bsd-snprintf.c:832:1: note: declared here Could you verify this with your RHEL 4?
(In reply to comment #26) > (In reply to comment #25) > > Sorry Benda, I'm not buying this test code. The code snippet fails on RHEL4, > > but my host doesn't have this bug. > > Hi, Jeremy. I personally disabled FORTIFY_SOURCE=2 on CentOS 4.9 too. Otherwise > openssh[hpn, tcpd] fails with: Nope, it doesn't fail on RHEL4.
can we move the epatch exclude into the gcc ebuilds eventually? it's easy to rm the patch prior to toolchain_src_unpack.
One might consider this bug even a dup of #362315
from comment #29 of bug #362315 Commit message: Disable fortify patches with older glibcs http://sources.gentoo.org/sys-devel/gcc/gcc-4.6.0.ebuild?r1=1.6&r2=1.7 http://sources.gentoo.org/sys-devel/gcc/gcc-4.6.1-r1.ebuild?r1=1.3&r2=1.4 http://sources.gentoo.org/sys-devel/gcc/gcc-4.6.2.ebuild?r1=1.2&r2=1.3
I was trying to specify what works in a very granular fashion, I'm fine with a nuke-all approach in the end. Unfortunately, a has_version check won't work (if that isn't obvious)..
I hope this is adequately worked around now and we can put it to rest. RESOLVED:WORKAROUND % cat linux/profile.bashrc # This is a ugly issue, see bug 289757 for origins # This mimics the check in gcc ebuilds, bug 362315 # # # Remember, bash treats floats like strings.. if [[ ${PN} == gcc && ${EBUILD_PHASE} == unpack ]]; then # Since 2.3 > 2.12 in numerical terms, just compare 2.X to 2.Y, will break # if >=3.0 is ever released VERS=$(/lib/libc.so.6 | head -n1 | grep -o "version [0-9]\.[0-9]" | cut -d. -f2 ) if [[ $VERS -lt 12 ]]; then # compare host glibc 2.x to 2.12 ewarn "Your host glibc is too old; disabling automatic fortify. bug 289757" GENTOO_PATCH_EXCLUDE="10_all_gcc-default-fortify-source.patch" fi fi # vim: set syn=sh expandtab ts=4:
Gcc only builds here with USE=-fortran but with +fortran it still failed on CentOS 5.6 Portage 2.2.01.19893-prefix (prefix/linux/amd64, gcc-4.6.1, unavailable, 2.6.18-238.12.1.el5 x86_64) ================================================================= System Settings ================================================================= System uname: Linux-2.6.18-238.12.1.el5-x86_64-Intel-R-_Xeon-R-_CPU_E5450_@_3.00GHz-with-redhat-5.6-Final Timestamp of tree: Tue, 13 Dec 2011 22:40:43 +0000 app-shells/bash: 4.2_p10 dev-lang/python: 2.7.2-r3 dev-util/pkgconfig: 0.26 sys-devel/autoconf: 2.68 sys-devel/automake: 1.11.1 sys-devel/binutils: 2.22 sys-devel/gcc: 4.6.1-r1 sys-devel/gcc-config: 1.5-r2 sys-devel/libtool: 2.4-r4 sys-devel/make: 3.82 Repositories: gentoo_prefix science Installed sets: ACCEPT_KEYWORDS="~amd64-linux" ACCEPT_LICENSE="* -@EULA" CBUILD="x86_64-pc-linux-gnu" CFLAGS="-O2 -pipe -march=native -mtune=native -mfpmath=sse -msse4.1" CHOST="x86_64-pc-linux-gnu" CONFIG_PROTECT="/etc" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/gconf /etc/portage /etc/terminfo" CXXFLAGS="-O2 -pipe -march=native -mtune=native -mfpmath=sse -msse4.1" DISTDIR="/s/ls2/home/users/alexxy/prefix/usr/portage/distfiles" FEATURES="assume-digests binpkg-logs buildpkg collision-protect distlocks ebuild-locks fixlafiles force-prefix metadata-transfer news parallel-fetch preserve-libs protect-owned sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch" FFLAGS="-O2 -pipe -march=native -mtune=native -mfpmath=sse -msse4.1" GENTOO_MIRRORS="http://distfiles.gentoo.org" LANG="en_US.UTF-8" LDFLAGS="-Wl,-O1" LINGUAS="en" MAKEOPTS="-j4" PKGDIR="/s/ls2/home/users/alexxy/prefix/usr/portage/packages" PORTAGE_CONFIGROOT="/s/ls2/home/users/alexxy/prefix/" 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/alexxy" PORTDIR="/s/ls2/home/users/alexxy/prefix/usr/portage" PORTDIR_OVERLAY="/s/ls2/home/users/alexxy/prefix/var/lib/layman/science" SYNC="rsync://rsync.prefix.freens.org/gentoo-portage-prefix" USE="amd64 bash-completion berkdb blas bzip2 cli cracklib crypt cxx double-precision dri fftw fontconfig fortran gdbm git gmp graphite iconv ipv6 lapack lpsol mmx modules mpi mudflap ncurses nls nptl nptlonly openmp pcre plotutils png pppd prefix readline romio session sse sse2 ssl sysfs tcpd threads truetype unicode vim vim-syntax xorg zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci 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 cgi cgid 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" CALLIGRA_FEATURES="kexi words flow plan stage tables krita karbon braindump" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ubx" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="en" PHP_TARGETS="php5-3" RUBY_TARGETS="ruby18" USERLAND="GNU" VIDEO_CARDS="fbdev glint intel mach64 mga neomagic nouveau nv r128 radeon savage sis tdfx trident vesa via vmware dummy v4l" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account" Unset: CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS ================================================================= Package Settings ================================================================= sys-devel/gcc-4.6.1-r1 was built with the following: USE="bootstrap cxx graphite mudflap nls nptl openmp (prefix) (-altivec) -build -doc (-fixed-point) -fortran -gcj -go -gtk (-hardened) (-libffi) (-multilib) -multislot -nocxx -nopie -nossp -objc -objc++ -objc-gc -test (-vanilla)" CFLAGS="-O2 -pipe -march=native -mtune=native" CXXFLAGS="-O2 -pipe -march=native -mtune=native" LDFLAGS="-L/s/ls2/home/users/alexxy/prefix/usr/lib -Wl,-rpath=/s/ls2/home/users/alexxy/prefix/usr/lib -L/s/ls2/home/users/alexxy/prefix/lib -Wl,-rpath=/s/ls2/home/users/alexxy/prefix/lib"
how about you first get some sane LDFLAGS?
As I said in IRC, you shouldn't have USE=bootsrap after a --sync. Don't re-open this bug, please. If you feel like you need to, then reproduce with non-masked ebuilds. Comment #32 stands.
Created attachment 295867 [details] /var/tmp/alexxy/portage/sys-devel/gcc-4.5.3-r1/temp/build.log.gz gzipped build log for gcc-4.5.3-r1 all prefix packages were rebuilt with gcc-4.2.4 before building gcc-4.5.3
alexxy@weed1 ~ $ emerge --info gcc Portage 2.2.01.19893-prefix (prefix/linux/amd64, gcc-4.2.4, unavailable, 2.6.18-238.12.1.el5 x86_64) ================================================================= System Settings ================================================================= System uname: Linux-2.6.18-238.12.1.el5-x86_64-Intel-R-_Xeon-R-_CPU_E5450_@_3.00GHz-with-redhat-5.6-Final Timestamp of tree: Tue, 13 Dec 2011 22:40:43 +0000 app-shells/bash: 4.2_p10 dev-lang/python: 2.7.2-r3 dev-util/pkgconfig: 0.26 sys-devel/autoconf: 2.68 sys-devel/automake: 1.11.1 sys-devel/binutils: 2.22 sys-devel/gcc: 4.2.4-r01.4 sys-devel/gcc-config: 1.5-r2 sys-devel/libtool: 2.4-r4 sys-devel/make: 3.82 Repositories: gentoo_prefix science Installed sets: ACCEPT_KEYWORDS="~amd64-linux" ACCEPT_LICENSE="* -@EULA" CBUILD="x86_64-pc-linux-gnu" CFLAGS="-O2 -pipe" CHOST="x86_64-pc-linux-gnu" CONFIG_PROTECT="/etc" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/gconf /etc/portage /etc/revdep-rebuild /etc/terminfo" CXXFLAGS="-O2 -pipe" DISTDIR="/s/ls2/home/users/alexxy/prefix/usr/portage/distfiles" FEATURES="assume-digests binpkg-logs buildpkg collision-protect distlocks ebuild-locks fixlafiles force-prefix metadata-transfer news parallel-fetch preserve-libs protect-owned sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch" FFLAGS="" GENTOO_MIRRORS="http://distfiles.gentoo.org" LANG="en_US.UTF-8" LDFLAGS="-Wl,-O1" LINGUAS="en" MAKEOPTS="-j4" PKGDIR="/s/ls2/home/users/alexxy/prefix/usr/portage/packages" PORTAGE_CONFIGROOT="/s/ls2/home/users/alexxy/prefix/" 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/alexxy" PORTDIR="/s/ls2/home/users/alexxy/prefix/usr/portage" PORTDIR_OVERLAY="/s/ls2/home/users/alexxy/prefix/var/lib/layman/science" SYNC="rsync://rsync.prefix.freens.org/gentoo-portage-prefix" USE="amd64 bash-completion berkdb blas bzip2 cli cracklib crypt cxx double-precision dri fftw fontconfig fortran gdbm git gmp graphite iconv infiniband ipv6 lapack lpsol mmx modules mpi mudflap ncurses nls nptl nptlonly openmp pcre plotutils png pppd prefix readline romio session sse sse2 ssl sysfs tcpd threads truetype unicode vim vim-syntax xorg zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci 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 cgi cgid 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" CALLIGRA_FEATURES="kexi words flow plan stage tables krita karbon braindump" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ubx" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="en" PHP_TARGETS="php5-3" RUBY_TARGETS="ruby18" USERLAND="GNU" VIDEO_CARDS="fbdev glint intel mach64 mga neomagic nouveau nv r128 radeon savage sis tdfx trident vesa via vmware dummy v4l" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account" Unset: CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS ================================================================= Package Settings ================================================================= sys-devel/gcc-4.2.4-r01.4 was built with the following: USE="cxx fortran mudflap nls nptl openmp (prefix) (-altivec) -bootstrap -build -doc -gcj -gtk (-hardened) (-libffi) (-libssp) (-multilib) -multislot -nocxx -objc -objc++ -objc-gc -test (-vanilla)"
alexxy@weed1 ~ $ emerge -pv gcc These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild NS ] sys-devel/gcc-4.5.3-r1 [4.2.4-r01.4] to /s/ls2/home/users/alexxy/prefix/ USE="cxx fortran graphite mudflap nls nptl openmp (-altivec) -bootstrap -build -doc (-fixed-point) -gcj -gtk (-hardened) (-libffi) (-libssp) -lto (-multilib) -multislot -nocxx -nopie -nossp -objc -objc++ -objc-gc -test (-vanilla)" 0 kB Total: 1 package (1 in new slot), Size of downloads: 0 kB
also it builds fine with -fortran (both 4.5 and 4.6)
(In reply to comment #35) > As I said in IRC, you shouldn't have USE=bootsrap after a --sync. Don't re-open > this bug, please. If you feel like you need to, then reproduce with non-masked > ebuilds. Comment #32 stands. Bad news, vapier has removed GENTOO_PATCH_EXCLUDE from toolchain.eclass. cf http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/eclass/toolchain.eclass?r1=1.488&r2=1.489 Toolchain experts, we were relying on GENTOO_PATCH_EXCLUDE to disable default fortify on hosts with old glibc. What would you suggest to handle this dry situation in prefix?
use EPATCH_EXCLUDE in profile.bashrc
(In reply to comment #40) > Bad news, vapier has removed GENTOO_PATCH_EXCLUDE from toolchain.eclass. cf Sigh. I'll test and fix tomorrow. I owe you an apology Alexey. Please accept this.
EPATCH_EXCLUDE tested to work on RHEL 5.6. to darkside: another issue: for /lib/libc.so.6 | head -n1 | grep -o "version [0-9]\.[0-9]", it will extract "version 2.12" as "version 2.1" shouldn't it be /lib/libc.so.6 | head -n1 | grep -o "version [0-9]\.[0-9]\+" ? another ugly thing is that, on debian hosts, libc.so.6 is at /lib/i386-linux-gnu/libc.so.6..., we may try to locate libc.so.6 or use "ldd --version" like ldd --version | head -n1 | grep -o ') [0-9].[0-9]\+' | cut -d. -f2 or use (yeah, it's worse) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #include <stdio.h> #include <gnu/libc-version.h> int main (void) { puts (gnu_get_libc_version ()); return 0; } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
he he =) seems like i found root of problems =D patch now called 10_all_default-fortify-source.patch while in portage.bashrc it called 10_all_gcc-default-fortify-source.patch
(In reply to comment #32) > I hope this is adequately worked around now and we can put it to rest. > RESOLVED:WORKAROUND + 15 Dec 2011; Jeremy Olexa <darkside@gentoo.org> linux/profile.bashrc: + Fix bug 289757 (again). Use ldd, use EPATCH_EXCLUDE, match new patch name as + well Thanks Benda and Alexey
I can't quite find this in git, but my latest sync (from an hour back) has this in prefix/linux/profile.bashrc VERS=$(/usr/bin/ldd --version | head -n1 | grep -o "version [0-9]\.[0-9]\+" | cut -d. -f2 ) I think that was supposed to be VERS=$(/usr/bin/ldd --version | head -n1 | grep -o ') [0-9].[0-9]\+' | cut -d. -f2) Sorry if it's already fixed in git but not released yet. If so, can someone please point me to gitweb or viewcvs where i can look at the latest tree?
(In reply to comment #46) > > VERS=$(/usr/bin/ldd --version | head -n1 | grep -o ') [0-9].[0-9]\+' | cut -d. > -f2) > > > Sorry if it's already fixed in git but not released yet. If so, can someone > please point me to gitweb or viewcvs where i can look at the latest tree? applied. Thanks for reporting. should hit prefix mirror soon (~1 day) it is in gentoo-x86 tree being whitelisted: http://overlays.gentoo.org/proj/alt/browser/trunk/prefix-overlay/whitelist.txt you can find it here: http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/profiles/prefix/linux/
@heroxbd: I think you forgot to update the ChangeLog in profiles/prefix for this change.