diff options
author | Travis Tilley <lv@gentoo.org> | 2004-05-19 13:13:43 +0000 |
---|---|---|
committer | Travis Tilley <lv@gentoo.org> | 2004-05-19 13:13:43 +0000 |
commit | 39cb0760fc02ae755a78011e18357832be1c3028 (patch) | |
tree | a8a124cde6da5aa8e45ccc3c6083399391c22f9e | |
parent | Version Bump (Manifest recommit) (diff) | |
download | gentoo-2-39cb0760fc02ae755a78011e18357832be1c3028.tar.gz gentoo-2-39cb0760fc02ae755a78011e18357832be1c3028.tar.bz2 gentoo-2-39cb0760fc02ae755a78011e18357832be1c3028.zip |
updated gcc 3.4 to a 20040519 snapshot and removed the fno-for-scope and stack-size patches, as they"ve been merged upstream. updated to the latest piessp patches from Peter Mazinger, only with the arm patches temporarily disabled. removed SSP exclusion patch... it should no longer be needed. amd64 users beware: this release breaks the ABI slightly, and has a small chance of causing problems. for more information on this ABI break, see http://gcc.gnu.org/ml/gcc/2004-05/msg00911.html
-rw-r--r-- | sys-devel/gcc/ChangeLog | 18 | ||||
-rw-r--r-- | sys-devel/gcc/Manifest | 10 | ||||
-rw-r--r-- | sys-devel/gcc/files/3.4.0/gcc-3.4-libiberty-pic.patch | 10 | ||||
-rw-r--r-- | sys-devel/gcc/files/3.4.0/gcc-3.4.0-fno-for-scope.patch | 47 | ||||
-rw-r--r-- | sys-devel/gcc/files/3.4.0/gcc-3.4.0-r3-gentoo-branding.patch (renamed from sys-devel/gcc/files/3.4.0/gcc-3.4.0-gentoo-branding.patch) | 6 | ||||
-rw-r--r-- | sys-devel/gcc/files/digest-gcc-3.4.0-r1 | 4 | ||||
-rw-r--r-- | sys-devel/gcc/files/digest-gcc-3.4.0-r3 (renamed from sys-devel/gcc/files/digest-gcc-3.4.0-r2) | 4 | ||||
-rw-r--r-- | sys-devel/gcc/gcc-3.4.0-r1.ebuild | 903 | ||||
-rw-r--r-- | sys-devel/gcc/gcc-3.4.0-r3.ebuild (renamed from sys-devel/gcc/gcc-3.4.0-r2.ebuild) | 65 |
9 files changed, 59 insertions, 1008 deletions
diff --git a/sys-devel/gcc/ChangeLog b/sys-devel/gcc/ChangeLog index b9f6e3bebe49..b8a80c56c9ec 100644 --- a/sys-devel/gcc/ChangeLog +++ b/sys-devel/gcc/ChangeLog @@ -1,6 +1,22 @@ # ChangeLog for sys-devel/gcc # Copyright 2002-2004 Gentoo Technologies, Inc.; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/ChangeLog,v 1.245 2004/05/17 01:04:21 lv Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/ChangeLog,v 1.246 2004/05/19 13:13:42 lv Exp $ + +*gcc-3.4.0-r3 (20 May 2004) + + 20 May 2004; Travis Tilley <lv@gentoo.org> + +files/3.4.0/gcc-3.4-libiberty-pic.patch, + -files/3.4.0/gcc-3.4.0-fno-for-scope.patch, + -files/3.4.0/gcc-3.4.0-gentoo-branding.patch, + +files/3.4.0/gcc-3.4.0-r3-gentoo-branding.patch, -gcc-3.4.0-r1.ebuild, + -gcc-3.4.0-r2.ebuild, +gcc-3.4.0-r3.ebuild: + updated gcc 3.4 to a 20040519 snapshot and removed the fno-for-scope and + stack-size patches, as they"ve been merged upstream. updated to the latest + piessp patches from Peter Mazinger, only with the arm patches temporarily + disabled. removed SSP exclusion patch... it should no longer be needed. amd64 + users beware: this release breaks the ABI slightly, and has a small chance of + causing problems. for more information on this ABI break, see + http://gcc.gnu.org/ml/gcc/2004-05/msg00911.html 17 May 2004; Travis Tilley <lv@gentoo.org> gcc-3.3.3-r5.ebuild: added amd64 to the (short) list of archs that can enable automatic PIE + SSP diff --git a/sys-devel/gcc/Manifest b/sys-devel/gcc/Manifest index f2d5a33f7e35..f0b30ac71a87 100644 --- a/sys-devel/gcc/Manifest +++ b/sys-devel/gcc/Manifest @@ -7,7 +7,6 @@ MD5 a6dd62d4bac8bd5630f21e56dbe5919c gcc-3.3.3_pre20040130.ebuild 21520 MD5 dc586211fcb550a333b881432d652b3d gcc-3.3.3_pre20040408-r1.ebuild 22692 MD5 8a2d0081e6c0f75912849fbb37f3c531 gcc-3.2.2-r2.ebuild 15862 MD5 bdaadd8732e58e8c60242fcddc6cfaa5 gcc-3.3.ebuild 16663 -MD5 4de2eed72b915d6d7dd07bc1494092a8 gcc-3.4.0-r2.ebuild 29482 MD5 42871c605b839610632d237b41e38866 gcc-3.3.2-r5.ebuild 21460 MD5 7eb36ba5811423e02b4ae4c11d8869c5 gcc-3.3.3_pre20040215.ebuild 22195 MD5 d8d35a54609911a201727872dc3ffe26 gcc-3.3.3_pre20040322.ebuild 22621 @@ -19,11 +18,11 @@ MD5 6f4b970b6e64b99a49d7c2ac35817d38 gcc-3.3.3.ebuild 22398 MD5 bd281971d3658dd49f02f647b97c4eeb gcc-3.3.1-r5.ebuild 18002 MD5 b6a375116a668edbe10b2ac2e1f9fc6d gcc-3.0.4-r6.ebuild 8577 MD5 68da62e17a31058a92822721b553eca9 gcc-3.1.1-r1.ebuild 9424 -MD5 032dccf3b2988b58febe425f6df9ef35 gcc-3.4.0-r1.ebuild 28580 MD5 14cf69f1206d85356781dd2ad63eb7ca gcc-3.3.2-r4.ebuild 20741 MD5 8c9407ec40e58c4ebeabe5ee6e93a52a gcc-3.2.2.ebuild 16096 MD5 c7e55fc7f4bfd637f45786c0c5fbb365 gcc-2.95.3-r8.ebuild 9095 MD5 b5f1d4d71ad38c5c5e489466ac0ad399 gcc-3.3.3-r3.ebuild 24690 +MD5 d4e4738809a95a586d78c0b85bbcaa54 gcc-3.4.0-r3.ebuild 28651 MD5 9fb6a5505f97c736a3f40f84ea9c71da gcc-3.3.2-r6.ebuild 21217 MD5 e6ead3ed008a1fe7adc73ddae996ade3 gcc-3.3.2-r1.ebuild 17965 MD5 a37e0dd7fdc68b9dc8a50638ecaed18e ChangeLog 50475 @@ -51,8 +50,7 @@ MD5 e58b6c1f3122b79a5d0d273acc3c008c files/digest-gcc-3.3.2-r7 361 MD5 5a9db19cd5ad6ad16b0f838d525d842a files/digest-gcc-3.3.3-r3 522 MD5 d476dba058ac32b251723e136c6dfa8e files/digest-gcc-3.3.3-r4 526 MD5 3a68d40d170427ffbfcf181b5099d693 files/digest-gcc-3.3.3-r5 528 -MD5 b9ef3095a058a4a51f5adef3ad7fb2b6 files/digest-gcc-3.4.0-r1 297 -MD5 5ceeed49b92f3600fabd402571bf3044 files/digest-gcc-3.4.0-r2 365 +MD5 887868d00e0bee0ea5dbe9ab3ff2f491 files/digest-gcc-3.4.0-r3 367 MD5 ac529391146ca1021405f8ec7a4b0579 files/digest-gcc-3.3.3_pre20040130 138 MD5 9996ea8d65888808363832ea1571fe0a files/digest-gcc-3.3.3_pre20040215 138 MD5 9996ea8d65888808363832ea1571fe0a files/digest-gcc-3.3.3_pre20040322 138 @@ -151,6 +149,6 @@ MD5 9ba0bd0b103cf9535927ad7c482fe780 files/3.3.3/gcc333-debian-arm-getoff.patch MD5 ff6d7b5082c5e39fab8a5d8932c1a8b7 files/3.3.3/gcc-3.3.3-uclibc-add-ssp.patch 461 MD5 4b249bff27ab6328436e6289ac9f9cfc files/3.3.3/gcc333_pre20040215-gentoo-branding.patch 839 MD5 3210d5fd70806c44d4426c3dceebd480 files/3.3.3/gcc333_pre20040408-stack-size.patch 653 -MD5 fbab4a9c4c8a8b2f329b02ee9b97fa6f files/3.4.0/gcc-3.4.0-gentoo-branding.patch 759 +MD5 02c346508a61b399952de4f8855871ff files/3.4.0/gcc-3.4.0-r3-gentoo-branding.patch 781 +MD5 66df5567226338b7504bbd3c25cea92c files/3.4.0/gcc-3.4-libiberty-pic.patch 370 MD5 66edf32babf498517ca56fa44c901f26 files/3.4.0/gcc-3.4.0-move-propolice-into-glibc.patch 894 -MD5 c89b605fe512439cf492c1c378226c7c files/3.4.0/gcc-3.4.0-fno-for-scope.patch 1604 diff --git a/sys-devel/gcc/files/3.4.0/gcc-3.4-libiberty-pic.patch b/sys-devel/gcc/files/3.4.0/gcc-3.4-libiberty-pic.patch new file mode 100644 index 000000000000..214c44bc4b2b --- /dev/null +++ b/sys-devel/gcc/files/3.4.0/gcc-3.4-libiberty-pic.patch @@ -0,0 +1,10 @@ +--- libiberty/Makefile.in.mps 2004-05-13 15:53:17.000000000 +0200 ++++ libiberty/Makefile.in 2004-05-13 15:52:53.000000000 +0200 +@@ -224,6 +224,7 @@ $(TARGETLIB): $(REQUIRED_OFILES) $(EXTRA + $(AR) $(AR_FLAGS) $(TARGETLIB) \ + $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS); \ + $(RANLIB) $(TARGETLIB); \ ++ cp $(TARGETLIB) ../ ; \ + cd ..; \ + else true; fi + diff --git a/sys-devel/gcc/files/3.4.0/gcc-3.4.0-fno-for-scope.patch b/sys-devel/gcc/files/3.4.0/gcc-3.4.0-fno-for-scope.patch deleted file mode 100644 index 534e7dba6dcd..000000000000 --- a/sys-devel/gcc/files/3.4.0/gcc-3.4.0-fno-for-scope.patch +++ /dev/null @@ -1,47 +0,0 @@ -diff -prN libstdc++-v3-orig/include/bits/locale_facets.h libstdc++-v3/include/bits/locale_facets.h -*** libstdc++-v3-orig/include/bits/locale_facets.h 2004-03-24 21:11:32.000000000 +0000 ---- libstdc++-v3/include/bits/locale_facets.h 2004-04-23 15:45:34.000000000 +0100 -*************** namespace std -*** 1161,1168 **** - - _M_widen_ok = 1; - // Set _M_widen_ok to 2 if memcpy can't be used. -! for (size_t __i = 0; __i < sizeof(_M_widen); ++__i) -! if (__tmp[__i] != _M_widen[__i]) - { - _M_widen_ok = 2; - break; ---- 1161,1168 ---- - - _M_widen_ok = 1; - // Set _M_widen_ok to 2 if memcpy can't be used. -! for (size_t __j = 0; __j < sizeof(_M_widen); ++__j) -! if (__tmp[__j] != _M_widen[__j]) - { - _M_widen_ok = 2; - break; -*************** namespace std -*** 1182,1192 **** - // Check if any default values were created. Do this by - // renarrowing with a different default value and comparing. - bool __consecutive = true; -! for (size_t __i = 0; __i < sizeof(_M_narrow); ++__i) -! if (!_M_narrow[__i]) - { - char __c; -! do_narrow(__tmp + __i, __tmp + __i + 1, 1, &__c); - if (__c == 1) - { - __consecutive = false; ---- 1182,1192 ---- - // Check if any default values were created. Do this by - // renarrowing with a different default value and comparing. - bool __consecutive = true; -! for (size_t __j = 0; __j < sizeof(_M_narrow); ++__j) -! if (!_M_narrow[__j]) - { - char __c; -! do_narrow(__tmp + __j, __tmp + __j + 1, 1, &__c); - if (__c == 1) - { - __consecutive = false; diff --git a/sys-devel/gcc/files/3.4.0/gcc-3.4.0-gentoo-branding.patch b/sys-devel/gcc/files/3.4.0/gcc-3.4.0-r3-gentoo-branding.patch index 4c7fe28ffae8..64f68488e5ea 100644 --- a/sys-devel/gcc/files/3.4.0/gcc-3.4.0-gentoo-branding.patch +++ b/sys-devel/gcc/files/3.4.0/gcc-3.4.0-r3-gentoo-branding.patch @@ -1,10 +1,10 @@ ---- gcc/version.c.old 2004-04-21 21:55:54.128578312 +0100 -+++ gcc/version.c 2004-04-21 21:56:35.749251008 +0100 +--- gcc/version.c.old 2004-05-20 05:20:46.352804640 -0400 ++++ gcc/version.c 2004-05-20 05:23:53.833303272 -0400 @@ -5,7 +5,7 @@ please modify this string to indicate that, e.g. by putting your organization's name in parentheses at the end of the string. */ --const char version_string[] = "3.4.0"; +-const char version_string[] = "3.4.1 20040519 (prerelease)"; +const char version_string[] = "3.4.0 @GENTOO@"; /* This is the location of the online document giving instructions for diff --git a/sys-devel/gcc/files/digest-gcc-3.4.0-r1 b/sys-devel/gcc/files/digest-gcc-3.4.0-r1 deleted file mode 100644 index 14bc0ca82147..000000000000 --- a/sys-devel/gcc/files/digest-gcc-3.4.0-r1 +++ /dev/null @@ -1,4 +0,0 @@ -MD5 85c6fc83d51be0fbb4f8205accbaff59 gcc-3.4.0.tar.bz2 27258902 -MD5 59888ad7dd14f022f2ee461a894da531 gcc-3.4.0-manpages.tar.bz2 616854 -MD5 70ea114bafaf053177e81a6687a14251 gcc-3.4.0-v8.5.3-nodefault-pie-ssp.patch 10847 -MD5 3573dfa5694ca8cc89fd19df3dfdd0ef gcc-3.3.3-v8.5.3-gcc-exclusion.patch 783 diff --git a/sys-devel/gcc/files/digest-gcc-3.4.0-r2 b/sys-devel/gcc/files/digest-gcc-3.4.0-r3 index 410db788a1d1..d15ab4ef7534 100644 --- a/sys-devel/gcc/files/digest-gcc-3.4.0-r2 +++ b/sys-devel/gcc/files/digest-gcc-3.4.0-r3 @@ -1,5 +1,5 @@ MD5 85c6fc83d51be0fbb4f8205accbaff59 gcc-3.4.0.tar.bz2 27258902 +MD5 a3cc31720c6322efd1053e202e8f90e9 gcc-3.4.0-branch-update-20040519.patch.bz2 927608 MD5 6231e229fb4cdf27f83c4b480700e6e3 protector-3.4-1.tar.gz 30975 MD5 59888ad7dd14f022f2ee461a894da531 gcc-3.4.0-manpages.tar.bz2 616854 -MD5 b787401ba46cc16fb3bc7894f86d06ef gcc-3.4.0-piepatches-v8.7.4.tar.bz2 8485 -MD5 fd6ef77953886d6ff74410188faafbb7 gcc-3.3.3-v8.7.0-gcc-ssp-exclusion.patch.bz2 316 +MD5 aac42693151bf45c14508f99cd795730 gcc-3.4.0-piepatches-v8.7.6.tar.bz2 14674 diff --git a/sys-devel/gcc/gcc-3.4.0-r1.ebuild b/sys-devel/gcc/gcc-3.4.0-r1.ebuild deleted file mode 100644 index ae95de279e28..000000000000 --- a/sys-devel/gcc/gcc-3.4.0-r1.ebuild +++ /dev/null @@ -1,903 +0,0 @@ -# Copyright 1999-2004 Gentoo Technologies, Inc. -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/gcc-3.4.0-r1.ebuild,v 1.4 2004/05/07 02:01:08 lv Exp $ - -IUSE="static nls bootstrap java build X multilib gcj f77 objc hardened uclibc" - -inherit eutils flag-o-matic libtool - -# Compile problems with these (bug #6641 among others)... -#filter-flags "-fno-exceptions -fomit-frame-pointer -fforce-addr" - -# Recently there has been a lot of stability problem in Gentoo-land. Many -# things can be the cause to this, but I believe that it is due to gcc3 -# still having issues with optimizations, or with it not filtering bad -# combinations (protecting the user maybe from himeself) yet. -# -# This can clearly be seen in large builds like glibc, where too aggressive -# CFLAGS cause the tests to fail miserbly. -# -# Quote from Nick Jones <carpaski@gentoo.org>, who in my opinion -# knows what he is talking about: -# -# People really shouldn't force code-specific options on... It's a -# bad idea. The -march options aren't just to look pretty. They enable -# options that are sensible (and include sse,mmx,3dnow when apropriate). -# -# The next command strips CFLAGS and CXXFLAGS from nearly all flags. If -# you do not like it, comment it, but do not bugreport if you run into -# problems. -# -# <azarah@gentoo.org> (13 Oct 2002) -do_filter_flags() { - strip-flags - - # In general gcc does not like optimization, and add -O2 where - # it is safe. This is especially true for gcc 3.3 + 3.4 - replace-flags -O? -O2 - - # -mcpu is deprecated, and will actually break the gcc build on - # a few archs... use mtune instead - setting="`get-flag mcpu`" - [ ! -z "${setting}" ] && replace-flags -mcpu="${setting}" -mtune="${setting}" - export GCJFLAGS="${CFLAGS/-O?/-O2}" -} - -# Theoretical cross compiler support -[ ! -n "${CCHOST}" ] && export CCHOST="${CHOST}" - -LOC="/usr" -MY_PV="`echo ${PV} | awk -F. '{ gsub(/_pre.*|_alpha.*/, ""); print $1 "." $2 }'`" -MY_PV_FULL="`echo ${PV} | awk '{ gsub(/_pre.*|_alpha.*/, ""); print $0 }'`" - -# GCC 3.4 no longer uses gcc-lib. we'll rename this later for compatibility -# reasons, as a few things would break without gcc-lib. -LIBPATH="${LOC}/lib/gcc/${CCHOST}/${MY_PV_FULL}" -BINPATH="${LOC}/${CCHOST}/gcc-bin/${MY_PV}" -DATAPATH="${LOC}/share/gcc-data/${CCHOST}/${MY_PV}" -# Dont install in /usr/include/g++-v3/, but in gcc internal directory. -# We will handle /usr/include/g++-v3/ with gcc-config ... -STDCXX_INCDIR="${LIBPATH}/include/g++-v${MY_PV/\.*/}" - -# PIE support -PIE_VER="8.5.3" - -# ProPolice version -#PP_VER="3_3" -#PP_FVER="${PP_VER//_/.}-7" -PP_VER= -PP_FVER= - -# Patch tarball support ... -#PATCH_VER="1.0" -PATCH_VER= - -# Snapshot support ... -#SNAPSHOT="2002-08-12" -SNAPSHOT= - -# Branch update support ... -MAIN_BRANCH="${PV}" # Tarball, etc used ... - -#BRANCH_UPDATE="20021208" -BRANCH_UPDATE= - -if [ -z "${SNAPSHOT}" ] -then - S="${WORKDIR}/${PN}-${MAIN_BRANCH}" - SRC_URI="ftp://gcc.gnu.org/pub/gcc/releases/${P}/${PN}-${MAIN_BRANCH}.tar.bz2" - - if [ -n "${PATCH_VER}" ] - then - SRC_URI="${SRC_URI} - mirror://gentoo/${P}-patches-${PATCH_VER}.tar.bz2" - fi - - if [ -n "${BRANCH_UPDATE}" ] - then - SRC_URI="${SRC_URI} - mirror://gentoo/${PN}-${MAIN_BRANCH}-branch-update-${BRANCH_UPDATE}.patch.bz2" - fi -else - S="${WORKDIR}/gcc-${SNAPSHOT//-}" - SRC_URI="ftp://sources.redhat.com/pub/gcc/snapshots/${SNAPSHOT}/gcc-${SNAPSHOT//-}.tar.bz2" -fi -if [ -n "${PP_VER}" ] -then - SRC_URI="${SRC_URI} - http://www.research.ibm.com/trl/projects/security/ssp/gcc${PP_VER}/protector-${PP_FVER}.tar.gz" -fi - -# PERL cannot be present at bootstrap, and is used to build the man pages. So.. -# lets include some pre-generated ones, shall we? -SRC_URI="${SRC_URI} - mirror://gentoo/${P}-manpages.tar.bz2" - -# bug #6148 - the bounds checking patch interferes with gcc.c -# PaX Team, Peter S. Mazinger, pappy, solar, swtaylor, tseng. -# forward port of the gcc 3.3 version, only with SSP disabled until -# a port of propolice to 3.4 is completed. -PIE_BASE_URI="mirror://gentoo/" -PIE_SSP_PATCH="gcc-3.4.0-v${PIE_VER}-nodefault-pie-ssp.patch" -PIE_EXCLUSION_PATCH="gcc-3.3.3-v${PIE_VER}-gcc-exclusion.patch" -SRC_URI="${SRC_URI} ${PIE_BASE_URI}${PIE_SSP_PATCH} ${PIE_BASE_URI}${PIE_EXCLUSION_PATCH}" - -DESCRIPTION="The GNU Compiler Collection. Includes C/C++ and java compilers, as well as support for pax PIE" -HOMEPAGE="http://www.gnu.org/software/gcc/gcc.html" - -LICENSE="GPL-2 LGPL-2.1" - -KEYWORDS="-*" -#KEYWORDS="~amd64 ~x86 ~ppc ~sparc ~mips ~ia64 ~ppc64 ~hppa ~alpha ~s390" - -# Ok, this is a hairy one again, but lets assume that we -# are not cross compiling, than we want SLOT to only contain -# $PV, as people upgrading to new gcc layout will not have -# their old gcc unmerged ... -# GCC 3.4 introduces a new version of libstdc++ -if [ "${CHOST}" == "${CCHOST}" ] -then - SLOT="${MY_PV}" -else - SLOT="${CCHOST}-${MY_PV}" -fi - -# We need the later binutils for support of the new cleanup attribute. -# 'make check' fails for about 10 tests (if I remember correctly) less -# if we use later bison. -# This one depends on glibc-2.3.2-r3 containing the __guard in glibc -# we scan for Guard@@libgcc and then apply the function moving patch. -# If using NPTL, we currently cannot however depend on glibc-2.3.2-r3, -# else bootstap will break. - -# we need a proper glibc version for the Scrt1.o provided to the pie-ssp specs -DEPEND="virtual/glibc - !nptl? ( >=sys-libs/glibc-2.3.2-r3 ) - !amd64? ( hardened? ( >=sys-libs/glibc-2.3.3_pre20040207 ) ) - ( !sys-devel/hardened-gcc ) - >=sys-devel/binutils-2.14.90.0.8-r1 - >=sys-devel/bison-1.875 - >=sys-devel/gcc-config-1.3.1 - amd64? ( multilib? ( >=app-emulation/emul-linux-x86-baselibs-1.0 ) ) - !build? ( >=sys-libs/ncurses-5.2-r2 - nls? ( sys-devel/gettext ) )" - -RDEPEND="virtual/glibc - !nptl? ( >=sys-libs/glibc-2.3.2-r3 ) - hardened? ( !amd64? ( >=sys-libs/glibc-2.3.3_pre20040207 ) ) - >=sys-devel/gcc-config-1.3.1 - >=sys-libs/zlib-1.1.4 - >=sys-apps/texinfo-4.2-r4 - !build? ( >=sys-libs/ncurses-5.2-r2 )" - -PDEPEND="sys-devel/gcc-config" - -gcc_compat() { - einfo "GCC 3.4 provides a new (incompatible) version of libstdc++, so" - einfo "binaries linked to an older libstdc++ will break if that older" - einfo "version is uninstalled. To make sure nothing breaks, the libs" - einfo "from your previous gcc $@ installation will be backed up and" - einfo "included in this install." - - cd ${ROOT} || die "Failed to chdir to root: ${ROOT}" - tar cvf ${WORKDIR}/gcc-libs.tar $(find ${ROOT}/${LOC}/lib/gcc-lib/${CCHOST}/$@ -type f -name '*.so*') || die "failed to create tarball" - cd ${D} || die "failed to enter \$D: $D" - tar -mxvf ${WORKDIR}/gcc-libs.tar || die "failed to extract tarball" - - export BULIB=$@ -} - -chk_gcc_version() { - # This next bit is for updating libtool linker scripts ... - local OLD_GCC_VERSION="`gcc -dumpversion`" - local OLD_GCC_CHOST="$(gcc -v 2>&1 | egrep '^Reading specs' |\ - sed -e 's:^.*/gcc-lib/\([^/]*\)/[0-9]\+.*$:\1:')" - - if [ "${OLD_GCC_VERSION}" != "${MY_PV_FULL}" ] - then - echo "${OLD_GCC_VERSION}" > "${WORKDIR}/.oldgccversion" - fi - - if [ -n "${OLD_GCC_CHOST}" ] - then - if [ "${CHOST}" = "${CCHOST}" -a "${OLD_GCC_CHOST}" != "${CHOST}" ] - then - echo "${OLD_GCC_CHOST}" > "${WORKDIR}/.oldgccchost" - fi - fi - - # Did we check the version ? - touch "${WORKDIR}/.chkgccversion" -} - -version_patch() { - [ ! -f "$1" ] && return 1 - [ -z "$2" ] && return 1 - - sed -e "s:@GENTOO@:$2:g" ${1} > ${T}/${1##*/} - epatch ${T}/${1##*/} -} - -glibc_have_ssp() { - local my_libc="${ROOT}/lib/libc.so.6" - -# Not necessary. lib64 is a symlink to /lib. -- avenj@gentoo.org 3 Apr 04 -# case "${ARCH}" in -# "amd64") -# my_libc="${ROOT}/lib64/libc.so.?" -# ;; -# esac - - # Check for the glibc to have the __guard symbols - if [ "$(readelf -s "${my_libc}" 2>/dev/null | \ - grep GLOBAL | grep OBJECT | grep '__guard')" ] && \ - [ "$(readelf -s "${my_libc}" 2>/dev/null | \ - grep GLOBAL | grep FUNC | grep '__stack_smash_handler')" ] - then - return 0 - else - return 1 - fi -} - -check_glibc_ssp() { - if glibc_have_ssp - then - if [ -n "${GLIBC_SSP_CHECKED}" ] && \ - [ -z "$(readelf -s "${ROOT}/$(gcc-config -L)/libgcc_s.so" 2>/dev/null | \ - grep 'GLOBAL' | grep 'OBJECT' | grep '__guard')" ] - then - # No need to check again ... - return 0 - fi - - echo - ewarn "This sys-libs/glibc has __guard object and __stack_smash_handler functions" - ewarn "scanning the system for binaries with __guard - this may take 5-10 minutes" - ewarn "Please do not press ctrl-C or ctrl-Z during this period - it will continue" - echo - if ! bash ${FILESDIR}/scan_libgcc_linked_ssp.sh - then - echo - eerror "Found binaries that are dynamically linked to the libgcc with __guard@@GCC" - eerror "You need to compile these binaries without CFLAGS -fstack-protector/hcc -r" - echo - eerror "Also, you have to make sure that using ccache needs the cache to be flushed" - eerror "wipe out /var/tmp/ccache or /root/.ccache. This will remove possible saved" - eerror "-fstack-protector arguments that still may reside in such a compiler cache" - echo - eerror "When such binaries are found, gcc cannot remove libgcc propolice functions" - eerror "leading to gcc -static -fstack-protector breaking, see gentoo bug #25299" - echo - einfo "To do a full scan on your system, enter this following command in a shell" - einfo "(Please keep running and remerging broken packages until it do not report" - einfo " any breakage anymore!):" - echo - einfo " # ${FILESDIR}/scan_libgcc_linked_ssp.sh" - echo - die "Binaries with libgcc __guard@GCC dependencies detected!" - else - echo - einfo "No binaries with suspicious libgcc __guard@GCC dependencies detected" - echo - fi - fi - - return 0 -} - -update_gcc_for_libc_ssp() { - if glibc_have_ssp - then - einfo "Updating gcc to use SSP from glibc..." - sed -e 's|^\(LIBGCC2_CFLAGS.*\)$|\1 -D_LIBC_PROVIDES_SSP_|' \ - -i ${S}/gcc/Makefile.in || die "Failed to update gcc!" - fi -} - -src_unpack() { - # I think it's a little messed up to allow people to compile just to have - # it fail right near the end, so lets die right away when parts that are - # known to be broken are going to be compiled. - # Travis Tilley <lv@gentoo.org> - #use amd64 && use java && use gcj && die "gcj will not compile yet with gcc 3.4.0 on amd64. re-emerge with USE=-gcj" - #use amd64 && use multilib && die "multilib support will not compile yet with gcc 3.4.0. re-emerge with USE=-multilib" - - local release_version="Gentoo Linux ${PVR}" - - ewarn "Do not hold me accountable if GCC 3.4 makes things unstable, wont" - ewarn "compile your favorite piece of software, breaks anything C++" - ewarn "that you compiled with it after uninstalling gcc 3.4, eats your cat," - ewarn "humps your leg, or pees on your rug. YOU HAVE BEEN WARNED!!!" - ewarn "ALSO DO NOT BOTHER TSENG, SOLAR, OR GENTOO-HARDENED ABOUT GCC 3.4!" - ewarn "SSP has yet to be ported, and if you are using -fstack-protector," - ewarn "you should cancel this install before you end up breaking something!" - ewarn "While this may be a final release, numerous problems still exist.." - - if [ -n "${PP_VER}" ] && [ "${ARCH}" != "hppa" ] - then - # the guard check should be very early in the unpack process - check_glibc_ssp - fi - - if [ -z "${SNAPSHOT}" ] - then - unpack ${PN}-${MAIN_BRANCH}.tar.bz2 - - if [ -n "${PATCH_VER}" ] - then - unpack ${P}-patches-${PATCH_VER}.tar.bz2 - fi - else - unpack gcc-${SNAPSHOT//-}.tar.bz2 - fi - - if [ -n "${PP_VER}" ] - then - unpack protector-${PP_FVER}.tar.gz - fi - - cd ${S} - # Fixup libtool to correctly generate .la files with portage - elibtoolize --portage --shallow - - # Branch update ... - if [ -n "${BRANCH_UPDATE}" ] - then - epatch ${DISTDIR}/${PN}-${MAIN_BRANCH}-branch-update-${BRANCH_UPDATE}.patch.bz2 - fi - - # Do bulk patches included in ${P}-patches-${PATCH_VER}.tar.bz2 - if [ -n "${PATCH_VER}" ] - then - mkdir -p ${WORKDIR}/patch/exclude -# mv -f ${WORKDIR}/patch/{40,41}* ${WORKDIR}/patch/exclude/ - mv -f ${WORKDIR}/patch/41* ${WORKDIR}/patch/exclude/ - - #use uclibc || mv -f ${WORKDIR}/patch/8?_* ${WORKDIR}/patch/exclude/ - - if [ -n "`use multilib`" -a "${ARCH}" = "amd64" ] - then - mv -f ${WORKDIR}/patch/06* ${WORKDIR}/patch/exclude/ - fi - epatch ${WORKDIR}/patch - fi - - if [ -n "`use multilib`" -a "${ARCH}" = "amd64" ] - then - epatch ${FILESDIR}/gcc331_use_multilib.amd64.patch - fi - - # non-default SSP and PIE support. - if [ "${ARCH}" != "hppa" -a "${ARCH}" != "hppa64" -a -n "${PP_VER}" ] - then - # ProPolice Stack Smashing protection - EPATCH_OPTS="${EPATCH_OPTS} ${WORKDIR}/protector.dif" \ - epatch ${FILESDIR}/3.3.1/gcc331-pp-fixup.patch - - EPATCH_OPTS="${EPATCH_OPTS} ${WORKDIR}/protector.dif" \ - epatch ${FILESDIR}/3.3.3/gcc333-ssp-3.3_7-fixup.patch - - epatch ${WORKDIR}/protector.dif - - cp ${WORKDIR}/protector.c ${WORKDIR}/${P}/gcc/ || die "protector.c not found" - cp ${WORKDIR}/protector.h ${WORKDIR}/${P}/gcc/ || die "protector.h not found" - - release_version="${release_version}, ssp-${PP_FVER}" - - update_gcc_for_libc_ssp - fi - - # This patch enables improved PIE and SSP behaviour but does not - # enable it by default ... - - cd ${WORKDIR}/${P} - epatch ${DISTDIR}/${PIE_SSP_PATCH} - use uclibc || epatch ${DISTDIR}/${PIE_EXCLUSION_PATCH} - - release_version="${release_version}, pie-${PIE_VER}" - - if [ -n "`use hardened`" -a "${ARCH}" != "sparc" ] - then - einfo "Updating gcc to use automatic PIE + SSP building ..." - sed -e 's|^ALL_CFLAGS = |ALL_CFLAGS = -DEFAULT_PIE_SSP|' \ - -i ${S}/gcc/Makefile.in || die "Failed to update gcc!" - - # rebrand to make bug reports easier - release_version="${release_version/Gentoo/Gentoo Hardened}" - fi - - version_patch ${FILESDIR}/3.4.0/gcc-${PV}-gentoo-branding.patch \ - "${BRANCH_UPDATE} (${release_version})" || die "Failed Branding" - - # TODO: on arches where we lack a Scrt1.o (like parisc) we still need unpack, compile and install logic - # TODO: for the crt1Snocsu.o provided by a custom gcc-pie-ssp.tgz which can also be included in SRC_URI - - # apps like openoffice break without this - cd ${S} ; epatch ${FILESDIR}/3.4.0/gcc-3.4.0-fno-for-scope.patch - # needed on ppc/ppc64 - cd ${S} ; epatch ${FILESDIR}/3.3.3/gcc333_pre20040408-stack-size.patch - - # Install our pre generated manpages if we do not have perl ... - if [ ! -x /usr/bin/perl ] - then - cd ${S}; unpack ${P}-manpages.tar.bz2 - fi - - # Misdesign in libstdc++ (Redhat) - cp -a ${S}/libstdc++-v3/config/cpu/i{4,3}86/atomicity.h - - # disable --as-needed from being compiled into gcc specs - # natively when using >=sys-devel/binutils-2.15.90.0.3 this is - # done to keep our gcc backwards compatible with binutils. - # gcc 3.4.1 cvs has patches that need back porting.. - # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14992 (May 3 2004) - sed -i -e s/HAVE_LD_AS_NEEDED/USE_LD_AS_NEEDED/g ${S}/gcc/config.in - - cd ${S}; ./contrib/gcc_update --touch &> /dev/null -} - -src_compile() { - - local myconf= - local gcc_lang= - - if ! use build - then - myconf="${myconf} --enable-shared" - gcc_lang="c,c++" - use f77 && gcc_lang="${gcc_lang},f77" - use objc && gcc_lang="${gcc_lang},objc" - use java && use gcj && gcc_lang="${gcc_lang},java" - # We do NOT want 'ADA support' in here! - # use ada && gcc_lang="${gcc_lang},ada" - else - gcc_lang="c" - fi - if ! use nls || use build - then - myconf="${myconf} --disable-nls" - else - myconf="${myconf} --enable-nls --without-included-gettext" - fi - - # Enable building of the gcj Java AWT & Swing X11 backend - # if we have X as a use flag and are not in a build stage. - # X11 support is still very experimental but enabling it is - # quite innocuous... [No, gcc is *not* linked to X11...] - # <dragon@gentoo.org> (15 May 2003) - if [ -n "`use java`" -a -n "`use gcj`" -a \ - -n "`use X`" -a -z "`use build`" -a \ - -f /usr/X11R6/include/X11/Xlib.h ] - then - myconf="${myconf} --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib" - myconf="${myconf} --enable-interpreter --enable-java-awt=xlib --with-x" - fi - - # Multilib not yet supported - if [ -n "`use multilib`" -a "${ARCH}" = "amd64" ] - then - einfo "WARNING: Multilib support enabled. This is still experimental." - myconf="${myconf} --enable-multilib" - else - if [ "${ARCH}" = "amd64" ] - then - einfo "WARNING: Multilib not enabled. You will not be able to build 32bit binaries." - fi - myconf="${myconf} --disable-multilib" - fi - - # Fix linking problem with c++ apps which where linked - # against a 3.2.2 libgcc - [ "${ARCH}" = "hppa" ] && myconf="${myconf} --enable-sjlj-exceptions" - - use hardened && append-flags -fPIC - - # --with-gnu-ld needed for cross-compiling - # --enable-sjlj-exceptions : currently the unwind stuff seems to work - # for statically linked apps but not dynamic - # so use setjmp/longjmp exceptions by default - # --disable-libunwind-exceptions needed till unwind sections get fixed. see ps.m for details - - if ! use uclibc - then - # it's getting close to a time where we are going to need USE=glibc, uclibc, bsdlibc -solar - myconf="${myconf} --disable-libunwind-exceptions --enable-__cxa_atexit --enable-clocale=generic" - else - myconf="${myconf} --disable-__cxa_atexit --enable-target-optspace --with-gnu-ld --enable-sjlj-exceptions" - fi - - # Default arch support - use amd64 && myconf="${myconf} --with-arch=k8" - #use s390 && myconf="${myconf} --with-arch=nofreakingclue" - #use x86 && myconf="${myconf} --with-arch=i586" - #use mips && myconf="${myconf} --with-arch=mips3" - - do_filter_flags - einfo "CFLAGS=\"${CFLAGS}\"" - einfo "CXXFLAGS=\"${CXXFLAGS}\"" - einfo "GCJFLAGS=\"${GCJFLAGS}\"" - - # Build in a separate build tree - mkdir -p ${WORKDIR}/build - cd ${WORKDIR}/build - - einfo "Configuring GCC..." - addwrite "/dev/zero" - ${S}/configure --prefix=${LOC} \ - --bindir=${BINPATH} \ - --includedir=${LIBPATH}/include \ - --datadir=${DATAPATH} \ - --mandir=${DATAPATH}/man \ - --infodir=${DATAPATH}/info \ - --enable-shared \ - --host=${CHOST} \ - --target=${CCHOST} \ - --with-system-zlib \ - --enable-languages=${gcc_lang} \ - --enable-threads=posix \ - --enable-long-long \ - --disable-checking \ - --enable-cstdio=stdio \ - --enable-clocale=generic \ - --enable-__cxa_atexit \ - --enable-version-specific-runtime-libs \ - --with-gxx-include-dir=${STDCXX_INCDIR} \ - --with-local-prefix=${LOC}/local \ - --disable-werror \ - ${myconf} || die - - touch ${S}/gcc/c-gperf.h - - # Do not make manpages if we do not have perl ... - if [ ! -x /usr/bin/perl ] - then - find ${S} -name '*.[17]' -exec touch {} \; || : - fi - - # Setup -j in MAKEOPTS - get_number_of_jobs - - einfo "Building GCC..." - # Only build it static if we are just building the C frontend, else - # a lot of things break because there are not libstdc++.so .... - if [ -n "`use static`" -a "${gcc_lang}" = "c" ] - then - # Fix for our libtool-portage.patch - S="${WORKDIR}/build" \ - emake LDFLAGS="-static" bootstrap \ - LIBPATH="${LIBPATH}" \ - BOOT_CFLAGS="${CFLAGS}" STAGE1_CFLAGS="-O" || die - # Above FLAGS optimize and speedup build, thanks - # to Jeff Garzik <jgarzik@mandrakesoft.com> - else - # Fix for our libtool-portage.patch - S="${WORKDIR}/build" \ - emake profiledbootstrap \ - LIBPATH="${LIBPATH}" \ - BOOT_CFLAGS="${CFLAGS}" STAGE1_CFLAGS="-O" || die - - fi -} - -src_install() { - local x= - - # Do allow symlinks in ${LOC}/lib/gcc-lib/${CHOST}/${PV}/include as - # this can break the build. - for x in ${WORKDIR}/build/gcc/include/* - do - if [ -L ${x} ] - then - rm -f ${x} - continue - fi - done - # Remove generated headers, as they can cause things to break - # (ncurses, openssl, etc). - for x in `find ${WORKDIR}/build/gcc/include/ -name '*.h'` - do - if grep -q 'It has been auto-edited by fixincludes from' ${x} - then - rm -f ${x} - fi - done - - einfo "Installing GCC..." - # Do the 'make install' from the build directory - cd ${WORKDIR}/build - S="${WORKDIR}/build" \ - make prefix=${LOC} \ - bindir=${BINPATH} \ - includedir=${LIBPATH}/include \ - datadir=${DATAPATH} \ - mandir=${DATAPATH}/man \ - infodir=${DATAPATH}/info \ - DESTDIR="${D}" \ - LIBPATH="${LIBPATH}" \ - install || die - - [ -r ${D}${BINPATH}/gcc ] || die "gcc not found in ${D}" - - # Because GCC 3.4 installs into the gcc directory and not the gcc-lib - # directory, we will have to rename it in order to keep compatibility - # with our current libtool check and gcc-config (which would be a pain - # to fix compared to this simple mv and symlink). - mv ${D}/${LOC}/lib/gcc ${D}/${LOC}/lib/gcc-lib - ln -s gcc-lib ${D}/${LOC}/lib/gcc - LIBPATH=${LIBPATH/lib\/gcc/lib\/gcc-lib} - - # Due to the fact that GCC 3.4 provides an incompatible version of - # libstdc++, we need to provide compatibility for binary-only apps - # which are linked against the old version. Every arch should have - # one of these marked stable, so lets look for the newest version - # first. We need to check for the .so instead of just the directory - # because there may or may not be any shared objects to back up... - # The PPC-specific gcc 3.3.3 ebuilds for some reason install directly - # to /usr/lib/ on PPC64, so we'll have to add logic for this later. :/ - # Travis Tilley <lv@gentoo.org> - if [ -f ${LOC}/lib/gcc-lib/${CCHOST}/3.3.3/libstdc++.so ] - then - gcc_compat 3.3.3 - elif [ -f ${LOC}/lib/gcc-lib/${CCHOST}/3.3.2/libstdc++.so ] - then - gcc_compat 3.3.2 - elif [ -f ${LOC}/lib/gcc-lib/${CCHOST}/3.2.3/libstdc++.so ] - then - gcc_compat 3.2.3 - fi - - dodir /lib /usr/bin - dodir /etc/env.d/gcc - echo "PATH=\"${BINPATH}\"" > ${D}/etc/env.d/gcc/${CCHOST}-${MY_PV_FULL} - echo "ROOTPATH=\"${BINPATH}\"" >> ${D}/etc/env.d/gcc/${CCHOST}-${MY_PV_FULL} - - # The LDPATH stuff is kinda iffy now that we need to provide compatibility - # with older versions of GCC for binary apps. - if [ -n "`use multilib`" -a "${ARCH}" = "amd64" ] - then - # amd64 is a bit unique because of multilib. Add some other paths - LDPATH="${LIBPATH}:${LIBPATH}/32:${LIBPATH}/../lib64:${LIBPATH}/../lib32" - else - LDPATH="${LIBPATH}" - fi - if [ "${BULIB}" != "" ] - then - LDPATH="${LDPATH}:${LOC}/lib/gcc-lib/${CCHOST}/${BULIB}" - fi - echo "LDPATH=\"${LDPATH}\"" >> ${D}/etc/env.d/gcc/${CCHOST}-${MY_PV_FULL} - - echo "MANPATH=\"${DATAPATH}/man\"" >> ${D}/etc/env.d/gcc/${CCHOST}-${MY_PV_FULL} - echo "INFOPATH=\"${DATAPATH}/info\"" >> ${D}/etc/env.d/gcc/${CCHOST}-${MY_PV_FULL} - echo "STDCXX_INCDIR=\"${STDCXX_INCDIR##*/}\"" >> ${D}/etc/env.d/gcc/${CCHOST}-${MY_PV_FULL} - # Also set CC and CXX - echo "CC=\"gcc\"" >> ${D}/etc/env.d/gcc/${CCHOST}-${MY_PV_FULL} - echo "CXX=\"g++\"" >> ${D}/etc/env.d/gcc/${CCHOST}-${MY_PV_FULL} - - # Make sure we do not check glibc for SSP again, as we did already - if glibc_have_ssp || \ - [ -f "${ROOT}/etc/env.d/99glibc_ssp" ] - then - echo "GLIBC_SSP_CHECKED=1" > ${D}/etc/env.d/99glibc_ssp - fi - - # Make sure we dont have stuff lying around that - # can nuke multiple versions of gcc - if [ -z "`use build`" ] - then - cd ${D}${LIBPATH} - - # Tell libtool files where real libraries are - for x in ${D}${LOC}/lib/*.la ${D}${LIBPATH}/../*.la - do - if [ -f "${x}" ] - then - sed -i -e "s:/usr/lib:${LIBPATH}:" ${x} - mv ${x} ${D}${LIBPATH} - fi - done - - # Move all the libraries to version specific libdir. - for x in ${D}${LOC}/lib/*.{so,a}* ${D}${LIBPATH}/../*.{so,a}* - do - [ -f "${x}" -o -L "${x}" ] && mv -f ${x} ${D}${LIBPATH} - done - - # Move Java headers to compiler-specific dir - for x in ${D}${LOC}/include/gc*.h ${D}${LOC}/include/j*.h - do - [ -f "${x}" ] && mv -f ${x} ${D}${LIBPATH}/include/ - done - for x in gcj gnu java javax org - do - if [ -d "${D}${LOC}/include/${x}" ] - then - dodir /${LIBPATH}/include/${x} - mv -f ${D}${LOC}/include/${x}/* ${D}${LIBPATH}/include/${x}/ - rm -rf ${D}${LOC}/include/${x} - fi - done - - if [ -d "${D}${LOC}/lib/security" ] - then - dodir /${LIBPATH}/security - mv -f ${D}${LOC}/lib/security/* ${D}${LIBPATH}/security - rm -rf ${D}${LOC}/lib/security - fi - - # Move libgcj.spec to compiler-specific directories - [ -f "${D}${LOC}/lib/libgcj.spec" ] && \ - mv -f ${D}${LOC}/lib/libgcj.spec ${D}${LIBPATH}/libgcj.spec - - # Rename jar because it could clash with Kaffe's jar if this gcc is - # primary compiler (aka don't have the -<version> extension) - cd ${D}${LOC}/${CCHOST}/gcc-bin/${MY_PV} - [ -f jar ] && mv -f jar gcj-jar - - # Move <cxxabi.h> to compiler-specific directories - [ -f "${D}${STDCXX_INCDIR}/cxxabi.h" ] && \ - mv -f ${D}${STDCXX_INCDIR}/cxxabi.h ${D}${LIBPATH}/include/ - - # These should be symlinks - cd ${D}${BINPATH} - for x in gcc g++ c++ g77 gcj - do - rm -f ${CCHOST}-${x} - [ -f "${x}" ] && ln -sf ${x} ${CCHOST}-${x} - - if [ -f "${CCHOST}-${x}-${PV}" ] - then - rm -f ${CCHOST}-${x}-${PV} - ln -sf ${x} ${CCHOST}-${x}-${PV} - fi - done - fi - - # This one comes with binutils - if [ -f "${D}${LOC}/lib/libiberty.a" ] - then - rm -f ${D}${LOC}/lib/libiberty.a - fi - if [ -f "${D}${LIBPATH}/libiberty.a" ] - then - rm -f ${D}${LIBPATH}/libiberty.a - fi - - cd ${S} - if [ -z "`use build`" ] - then - cd ${S} - docinto /${CCHOST} - dodoc COPYING COPYING.LIB ChangeLog* FAQ MAINTAINERS README - docinto ${CCHOST}/html - dohtml *.html - cd ${S}/boehm-gc - docinto ${CCHOST}/boehm-gc - dodoc ChangeLog doc/{README*,barrett_diagram} - docinto ${CCHOST}/boehm-gc/html - dohtml doc/*.html - cd ${S}/gcc - docinto ${CCHOST}/gcc - dodoc ChangeLog* FSFChangeLog* LANGUAGES NEWS ONEWS README* SERVICE - if use f77 - then - cd ${S}/libf2c - docinto ${CCHOST}/libf2c - dodoc ChangeLog* README TODO *.netlib - fi - cd ${S}/libffi - docinto ${CCHOST}/libffi - dodoc ChangeLog* LICENSE README - cd ${S}/libiberty - docinto ${CCHOST}/libiberty - dodoc ChangeLog* COPYING.LIB README - if use objc - then - cd ${S}/libobjc - docinto ${CCHOST}/libobjc - dodoc ChangeLog* README* THREADS* - fi - cd ${S}/libstdc++-v3 - docinto ${CCHOST}/libstdc++-v3 - dodoc ChangeLog* README - docinto ${CCHOST}/libstdc++-v3/html - dohtml -r -a css,diff,html,txt,xml docs/html/* - cp -f docs/html/17_intro/[A-Z]* \ - ${D}/usr/share/doc/${PF}/${DOCDESTTREE}/17_intro/ - - if use java && use gcj - then - cd ${S}/fastjar - docinto ${CCHOST}/fastjar - dodoc AUTHORS CHANGES COPYING ChangeLog* NEWS README - cd ${S}/libjava - docinto ${CCHOST}/libjava - dodoc ChangeLog* COPYING HACKING LIBGCJ_LICENSE NEWS README THANKS - fi - - prepman ${DATAPATH} - prepinfo ${DATAPATH} - else - rm -rf ${D}/usr/share/{man,info} - rm -rf ${D}${DATAPATH}/{man,info} - fi - - # Rather install the script, else portage with changing $FILESDIR - # between binary and source package borks things .... - insinto /lib/rcscripts/awk - doins ${FILESDIR}/awk/fixlafiles.awk - exeinto /sbin - doexe ${FILESDIR}/fix_libtool_files.sh - - if [ "${ARCH}" = "amd64" ] - then - # GCC 3.4 tries to place libgcc_s in lib64, where it will never be - # found. When multilib is enabled, it also places the 32bit version in - # lib32. This problem could be handled by a symlink if you only plan on - # having one compiler installed at a time, but since these directories - # exist outside the versioned directories, versions from gcc 3.3 and - # 3.4 will overwrite each other. not good. - cp -pfd ${D}/${LIBPATH}/../lib64/libgcc_s* ${D}/${LIBPATH} - use multilib && \ - cp -pfd ${D}/${LIBPATH}/../lib32/libgcc_s* ${D}/${LIBPATH} - fi -} - -pkg_preinst() { - - if [ ! -f "${WORKDIR}/.chkgccversion" ] - then - chk_gcc_version - fi - - # Make again sure that the linker "should" be able to locate - # libstdc++.so ... - if [ -n "`use multilib`" -a "${ARCH}" = "amd64" ] - then - # Can't always find libgcc_s.so.1, make it find it - export LD_LIBRARY_PATH="${LIBPATH}:${LIBPATH}/../lib64:${LIBPATH}/../lib32:${LD_LIBRARY_PATH}" - else - export LD_LIBRARY_PATH="${LIBPATH}:${LD_LIBRARY_PATH}" - fi - ${ROOT}/sbin/ldconfig -} - -pkg_postinst() { - - if [ -n "`use multilib`" -a "${ARCH}" = "amd64" ] - then - # Can't always find libgcc_s.so.1, make it find it - export LD_LIBRARY_PATH="${LIBPATH}:${LIBPATH}/../lib64:${LIBPATH}/../lib32:${LD_LIBRARY_PATH}" - else - export LD_LIBRARY_PATH="${LIBPATH}:${LD_LIBRARY_PATH}" - fi - if [ "${ROOT}" = "/" -a "${COMPILER}" = "gcc3" -a "${CHOST}" = "${CCHOST}" ] - then - gcc-config --use-portage-chost ${CCHOST}-${MY_PV_FULL} - fi - - # Update libtool linker scripts to reference new gcc version ... - if [ "${ROOT}" = "/" ] && \ - [ -f "${WORKDIR}/.oldgccversion" -o -f "${WORKDIR}/.oldgccchost" ] - then - local OLD_GCC_VERSION= - local OLD_GCC_CHOST= - - if [ -f "${WORKDIR}/.oldgccversion" ] && \ - [ -n "$(cat "${WORKDIR}/.oldgccversion")" ] - then - OLD_GCC_VERSION="$(cat "${WORKDIR}/.oldgccversion")" - else - OLD_GCC_VERSION="${MY_PV_FULL}" - fi - - if [ -f "${WORKDIR}/.oldgccchost" ] && \ - [ -n "$(cat "${WORKDIR}/.oldgccchost")" ] - then - OLD_GCC_CHOST="--oldarch $(cat "${WORKDIR}/.oldgccchost")" - fi - - /sbin/fix_libtool_files.sh ${OLD_GCC_VERSION} ${OLD_GCC_CHOST} - fi -} - diff --git a/sys-devel/gcc/gcc-3.4.0-r2.ebuild b/sys-devel/gcc/gcc-3.4.0-r3.ebuild index 3388ac259745..b387c0bd80c1 100644 --- a/sys-devel/gcc/gcc-3.4.0-r2.ebuild +++ b/sys-devel/gcc/gcc-3.4.0-r3.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2004 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/gcc-3.4.0-r2.ebuild,v 1.4 2004/05/18 00:53:40 lv Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/gcc-3.4.0-r3.ebuild,v 1.1 2004/05/19 13:13:43 lv Exp $ IUSE="static nls bootstrap java build X multilib gcj f77 objc hardened uclibc" @@ -60,7 +60,7 @@ DATAPATH="${LOC}/share/gcc-data/${CCHOST}/${MY_PV}" STDCXX_INCDIR="${LIBPATH}/include/g++-v${MY_PV/\.*/}" # PIE support -PIE_VER="8.7.4" +PIE_VER="8.7.6" # ProPolice version PP_VER="3_4" @@ -76,9 +76,7 @@ SNAPSHOT= # Branch update support ... MAIN_BRANCH="${PV}" # Tarball, etc used ... - -#BRANCH_UPDATE="20021208" -BRANCH_UPDATE= +BRANCH_UPDATE=20040519 if [ -z "${SNAPSHOT}" ] then @@ -94,7 +92,7 @@ then if [ -n "${BRANCH_UPDATE}" ] then SRC_URI="${SRC_URI} - mirror://gentoo/${PN}-${MAIN_BRANCH}-branch-update-${BRANCH_UPDATE}.patch.bz2" + http://dev.gentoo.org/~lv/${PN}-${MAIN_BRANCH}-branch-update-${BRANCH_UPDATE}.patch.bz2" fi else S="${WORKDIR}/gcc-${SNAPSHOT//-}" @@ -112,14 +110,12 @@ SRC_URI="${SRC_URI} mirror://gentoo/${P}-manpages.tar.bz2" # bug #6148 - the bounds checking patch interferes with gcc.c -# PaX Team, Peter S. Mazinger, pappy, solar, swtaylor, tseng. # just till the mirrors update... #PIE_BASE_URI="mirror://gentoo/" PIE_BASE_URI="http://dev.gentoo.org/~lv/" PIE_CORE="gcc-3.4.0-piepatches-v${PIE_VER}.tar.bz2" -SSP_EXCLUSION_PATCH="gcc-3.3.3-v8.7.0-gcc-ssp-exclusion.patch.bz2" -SRC_URI="${SRC_URI} ${PIE_BASE_URI}${PIE_CORE} ${PIE_BASE_URI}${SSP_EXCLUSION_PATCH}" +SRC_URI="${SRC_URI} ${PIE_BASE_URI}${PIE_CORE}" DESCRIPTION="The GNU Compiler Collection. Includes C/C++, java compilers, pie and ssp extentions" HOMEPAGE="http://www.gnu.org/software/gcc/gcc.html" @@ -298,12 +294,6 @@ update_gcc_for_libc_ssp() { } src_unpack() { - # I think it's a little messed up to allow people to compile just to have - # it fail right near the end, so lets die right away when parts that are - # known to be broken are going to be compiled. - # Travis Tilley <lv@gentoo.org> - use amd64 && use multilib && die "multilib support will not compile yet with gcc 3.4.0. re-emerge with USE=-multilib" - local release_version="Gentoo Linux ${PVR}" ewarn "GCC 3.4 support in Gentoo is still in an early experimental stage." @@ -314,8 +304,7 @@ src_unpack() { ewarn "of software, emits strange and confusing error messages, frustrates" ewarn "you and your porting efforts, eats your cat, humps your leg, or pees" ewarn "on your rug. You have been warned!" - ewarn "NOTE: the piessp patch isnt as complete as the 3.3.3 version on archs" - ewarn "other than x86 and amd64!" + ewarn "NOTE: the piessp patch isnt as complete as the 3.3.3 version" if [ -n "${PP_VER}" ] && [ "${ARCH}" != "hppa" ] then @@ -380,15 +369,19 @@ src_unpack() { epatch ${FILESDIR}/gcc331_use_multilib.amd64.patch fi - #if [ -n "${PIE_VER}" ] - #then + if [ -n "${PIE_VER}" ] + then + # broken as of the moment... + mkdir ${WORKDIR}/piepatch/skip + mv ${WORKDIR}/piepatch/upstream/*arm* ${WORKDIR}/piepatch/skip + mv ${WORKDIR}/piepatch/def/*arm* ${WORKDIR}/piepatch/skip # corrects startfile/endfile selection and shared/static/pie flag usage epatch ${WORKDIR}/piepatch/upstream # adds non-default pie support (for now only rs6000) epatch ${WORKDIR}/piepatch/nondef # adds default pie support for all archs less rs6000 if DEFAULT_PIE[_SSP] is defined epatch ${WORKDIR}/piepatch/def - #fi + fi # non-default SSP support. if [ "${ARCH}" != "hppa" -a "${ARCH}" != "hppa64" -a -n "${PP_VER}" ] @@ -400,6 +393,7 @@ src_unpack() { cp ${WORKDIR}/gcc/protector.h ${WORKDIR}/${P}/gcc/ || die "protector.h not found" cp -R ${WORKDIR}/gcc/testsuite/* ${WORKDIR}/${P}/gcc/testsuite/ || die "testsuite not found" epatch ${FILESDIR}/3.4.0/gcc-3.4.0-move-propolice-into-glibc.patch + epatch ${WORKDIR}/protectonly.dif #use uclibc && epatch ${FILESDIR}/3.3.3/gcc-3.3.3-uclibc-add-ssp.patch @@ -410,19 +404,9 @@ src_unpack() { cd ${WORKDIR}/${P} - # ARM was having issues with static linking as the spec file - # calls for crtbeginT.o vs crtbeginS.o. SpanKY looked through - # the gcc/config/arm/t-* files, it's appears that it's not meant - # to build crtbeginT.o (May 2 2004) - # Testing arm again (May 3 2004) - # solved hopefully as of pie/ssp v8.7.1 - - epatch ${DISTDIR}/${SSP_EXCLUSION_PATCH} - release_version="${release_version}, pie-${PIE_VER}" - if ( use x86 || use amd64 && use hardened ) + if ( use hardened && ( use x86 || use sparc || use amd64 ) ) then - # [ "${ARCH}" != "sparc" && "${ARCH}" != "ppc64" && "${ARCH}" != "s390" ] einfo "Updating gcc to use automatic PIE + SSP building ..." sed -e 's|^ALL_CFLAGS = |ALL_CFLAGS = -DEFAULT_PIE_SSP |' \ -i ${S}/gcc/Makefile.in || die "Failed to update gcc!" @@ -431,17 +415,15 @@ src_unpack() { release_version="${release_version/Gentoo/Gentoo Hardened}" fi - version_patch ${FILESDIR}/3.4.0/gcc-${PV}-gentoo-branding.patch \ + # corrects text relocations in libiberty.a + use pic && epatch ${FILESDIR}/3.4.0/gcc-3.4-libiberty-pic.patch + + version_patch ${FILESDIR}/3.4.0/gcc-${PV}-r3-gentoo-branding.patch \ "${BRANCH_UPDATE} (${release_version})" || die "Failed Branding" # TODO: on arches where we lack a Scrt1.o (like parisc) we still need unpack, compile and install logic # TODO: for the crt1Snocsu.o provided by a custom gcc-pie-ssp.tgz which can also be included in SRC_URI - # apps like openoffice break without this - cd ${S} ; epatch ${FILESDIR}/3.4.0/gcc-3.4.0-fno-for-scope.patch - # needed on ppc/ppc64 - cd ${S} ; epatch ${FILESDIR}/3.3.3/gcc333_pre20040408-stack-size.patch - # Install our pre generated manpages if we do not have perl ... if [ ! -x /usr/bin/perl ] then @@ -524,19 +506,18 @@ src_compile() { if ! use uclibc then # it's getting close to a time where we are going to need USE=glibc, uclibc, bsdlibc -solar - myconf="${myconf} --enable-__cxa_atexit --enable-clocale=generic" + myconf="${myconf} --enable-__cxa_atexit --enable-clocale=gnu" else - myconf="${myconf} --disable-__cxa_atexit --enable-target-optspace --with-gnu-ld --enable-sjlj-exceptions" + myconf="${myconf} --disable-__cxa_atexit --enable-target-optspace --with-gnu-ld --enable-sjlj-exceptions --enable-clocale=ieee_1003.1-2001" fi - # Default arch support - use amd64 && myconf="${myconf} --with-arch=k8" + # Default arch support disabled for now... + #use amd64 && myconf="${myconf} --with-arch=k8" #use s390 && myconf="${myconf} --with-arch=nofreakingclue" #use x86 && myconf="${myconf} --with-arch=i586" #use mips && myconf="${myconf} --with-arch=mips3" do_filter_flags - use hardened && append-flags -fPIC einfo "CFLAGS=\"${CFLAGS}\"" einfo "CXXFLAGS=\"${CXXFLAGS}\"" einfo "GCJFLAGS=\"${GCJFLAGS}\"" |