diff options
author | Guy Martin <gmsoft@gentoo.org> | 2004-06-22 13:13:16 +0000 |
---|---|---|
committer | Guy Martin <gmsoft@gentoo.org> | 2004-06-22 13:13:16 +0000 |
commit | d3e672a3f8be7001dbe175022666c6b1556b2cf7 (patch) | |
tree | fde0082a63ab4606d37824f0ab301a1a60db5b22 /sys-devel | |
parent | New ebuild to fix the remerge-everything bug. (Manifest recommit) (diff) | |
download | gentoo-2-d3e672a3f8be7001dbe175022666c6b1556b2cf7.tar.gz gentoo-2-d3e672a3f8be7001dbe175022666c6b1556b2cf7.tar.bz2 gentoo-2-d3e672a3f8be7001dbe175022666c6b1556b2cf7.zip |
New gcc-3.4.0. Hardmasked for now. needs testing.
Diffstat (limited to 'sys-devel')
-rw-r--r-- | sys-devel/gcc-hppa64/ChangeLog | 9 | ||||
-rw-r--r-- | sys-devel/gcc-hppa64/Manifest | 6 | ||||
-rw-r--r-- | sys-devel/gcc-hppa64/files/digest-gcc-hppa64-3.4.0 | 1 | ||||
-rw-r--r-- | sys-devel/gcc-hppa64/files/gcc-3.4.0-gentoo-branding.patch | 18 | ||||
-rw-r--r-- | sys-devel/gcc-hppa64/files/gcc-3.4.0-rtl-optimization.patch | 136 | ||||
-rw-r--r-- | sys-devel/gcc-hppa64/gcc-hppa64-3.4.0.ebuild | 110 |
6 files changed, 277 insertions, 3 deletions
diff --git a/sys-devel/gcc-hppa64/ChangeLog b/sys-devel/gcc-hppa64/ChangeLog index 64de9ce55364..8708c39fee13 100644 --- a/sys-devel/gcc-hppa64/ChangeLog +++ b/sys-devel/gcc-hppa64/ChangeLog @@ -1,6 +1,13 @@ # ChangeLog for sys-devel/gcc-hppa64 # Copyright 2000-2004 Gentoo Technologies, Inc.; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc-hppa64/ChangeLog,v 1.4 2004/05/13 11:35:57 gmsoft Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc-hppa64/ChangeLog,v 1.5 2004/06/22 13:13:16 gmsoft Exp $ + +*gcc-hppa64-3.4.0 (22 Jun 2004) + + 22 Jun 2004; Guy Martin <gmsoft@gentoo.org> gcc-hppa64-3.4.0.ebuild, + files/gcc-3.4.0-gentoo-branding.patch, + files/gcc-3.4.0-rtl-optimization.patch: + New gcc-3.4.0. Hardmasked for now. needs testing. 13 May 2004; Guy Martin <gmsoft@gentoo.org> gcc-hppa64-3.3.2.ebuild: Marked stable on hppa. diff --git a/sys-devel/gcc-hppa64/Manifest b/sys-devel/gcc-hppa64/Manifest index 46eb3b400ce1..41ea4600c5f1 100644 --- a/sys-devel/gcc-hppa64/Manifest +++ b/sys-devel/gcc-hppa64/Manifest @@ -1,5 +1,7 @@ -MD5 5f6eefe595dd725094ac23c9168cf83a ChangeLog 712 -MD5 18a8f9ab9576011c4e01acc8e4c8a6ec gcc-hppa64-3.3.2.ebuild 2281 +MD5 1acb1754497fe865af574f8ec4bd6c4a ChangeLog 711 +MD5 95bf5528c65f06058a60deb21f822928 gcc-hppa64-3.3.2.ebuild 2280 MD5 016028badcf024e3ef4688435ffbce58 metadata.xml 223 +MD5 95bf5528c65f06058a60deb21f822928 gcc-hppa64-3.4.0.ebuild 2280 MD5 006481ae255582fae4fa22107dfb359e files/digest-gcc-hppa64-3.3.2 64 MD5 d9ae122db2768f8e504dfef256d4991f files/gcc-3.3.2-gentoo-branding.patch 874 +MD5 c18300f698a8fd5c824c1ddb4d0685dd files/digest-gcc-hppa64-3.4.0 64 diff --git a/sys-devel/gcc-hppa64/files/digest-gcc-hppa64-3.4.0 b/sys-devel/gcc-hppa64/files/digest-gcc-hppa64-3.4.0 new file mode 100644 index 000000000000..710f9e1fbbc2 --- /dev/null +++ b/sys-devel/gcc-hppa64/files/digest-gcc-hppa64-3.4.0 @@ -0,0 +1 @@ +MD5 85c6fc83d51be0fbb4f8205accbaff59 gcc-3.4.0.tar.bz2 27258902 diff --git a/sys-devel/gcc-hppa64/files/gcc-3.4.0-gentoo-branding.patch b/sys-devel/gcc-hppa64/files/gcc-3.4.0-gentoo-branding.patch new file mode 100644 index 000000000000..3e40a63245d3 --- /dev/null +++ b/sys-devel/gcc-hppa64/files/gcc-3.4.0-gentoo-branding.patch @@ -0,0 +1,18 @@ +diff -uNr gcc-3.4.0.orig/gcc/version.c gcc-3.4.0/gcc/version.c +--- gcc-3.4.0.orig/gcc/version.c 2004-06-22 10:16:27.349833112 +0000 ++++ gcc-3.4.0/gcc/version.c 2004-06-22 10:19:06.461644440 +0000 +@@ -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.0 @GENTOO@"; + + /* This is the location of the online document giving instructions for + reporting bugs. If you distribute a modified version of GCC, +@@ -14,4 +14,4 @@ + forward us bugs reported to you, if you determine that they are + not bugs in your modifications.) */ + +-const char bug_report_url[] = "<URL:http://gcc.gnu.org/bugs.html>"; ++const char bug_report_url[] = "<URL:http://bugs.gentoo.org/>"; diff --git a/sys-devel/gcc-hppa64/files/gcc-3.4.0-rtl-optimization.patch b/sys-devel/gcc-hppa64/files/gcc-3.4.0-rtl-optimization.patch new file mode 100644 index 000000000000..8093b5fcebbc --- /dev/null +++ b/sys-devel/gcc-hppa64/files/gcc-3.4.0-rtl-optimization.patch @@ -0,0 +1,136 @@ +diff -uNr gcc-3.4.0.orig/gcc/config/pa/pa.c gcc-3.4.0/gcc/config/pa/pa.c +--- gcc-3.4.0.orig/gcc/config/pa/pa.c 2004-06-22 10:16:28.320685520 +0000 ++++ gcc-3.4.0/gcc/config/pa/pa.c 2004-06-22 10:26:08.638463808 +0000 +@@ -1550,15 +1550,18 @@ + operand1 = gen_rtx_MEM (GET_MODE (operand1), tem); + + /* Handle secondary reloads for loads/stores of FP registers from +- REG+D addresses where D does not fit in 5 bits, including ++ REG+D addresses where D does not fit in 5 or 14 bits, including + (subreg (mem (addr))) cases. */ + if (scratch_reg + && fp_reg_operand (operand0, mode) + && ((GET_CODE (operand1) == MEM +- && !memory_address_p (DFmode, XEXP (operand1, 0))) ++ && !memory_address_p ((GET_MODE_SIZE (mode) == 4 ? SFmode : DFmode), ++ XEXP (operand1, 0))) + || ((GET_CODE (operand1) == SUBREG + && GET_CODE (XEXP (operand1, 0)) == MEM +- && !memory_address_p (DFmode, XEXP (XEXP (operand1, 0), 0)))))) ++ && !memory_address_p ((GET_MODE_SIZE (mode) == 4 ++ ? SFmode : DFmode), ++ XEXP (XEXP (operand1, 0), 0)))))) + { + if (GET_CODE (operand1) == SUBREG) + operand1 = XEXP (operand1, 0); +@@ -1588,10 +1591,13 @@ + else if (scratch_reg + && fp_reg_operand (operand1, mode) + && ((GET_CODE (operand0) == MEM +- && ! memory_address_p (DFmode, XEXP (operand0, 0))) ++ && !memory_address_p ((GET_MODE_SIZE (mode) == 4 ++ ? SFmode : DFmode), ++ XEXP (operand0, 0))) + || ((GET_CODE (operand0) == SUBREG) + && GET_CODE (XEXP (operand0, 0)) == MEM +- && !memory_address_p (DFmode, ++ && !memory_address_p ((GET_MODE_SIZE (mode) == 4 ++ ? SFmode : DFmode), + XEXP (XEXP (operand0, 0), 0))))) + { + if (GET_CODE (operand0) == SUBREG) +diff -uNr gcc-3.4.0.orig/gcc/config/pa/pa.h gcc-3.4.0/gcc/config/pa/pa.h +--- gcc-3.4.0.orig/gcc/config/pa/pa.h 2004-06-22 10:16:28.323685064 +0000 ++++ gcc-3.4.0/gcc/config/pa/pa.h 2004-06-22 10:26:15.434430664 +0000 +@@ -1304,7 +1304,7 @@ + + `S' is the constant 31. + +- `T' is for fp loads and stores. ++ `T' is for floating-point loads and stores. + + `U' is the constant 63. */ + +@@ -1327,17 +1327,20 @@ + (GET_CODE (OP) == MEM \ + && !IS_LO_SUM_DLT_ADDR_P (XEXP (OP, 0)) \ + && !IS_INDEX_ADDR_P (XEXP (OP, 0)) \ +- /* Using DFmode forces only short displacements \ +- to be recognized as valid in reg+d addresses. \ +- However, this is not necessary for PA2.0 since \ +- it has long FP loads/stores. \ ++ /* Floating-point loads and stores are used to load \ ++ integer values as well as floating-point values. \ ++ They don't have the same set of REG+D address modes \ ++ as integer loads and stores. PA 1.x supports only \ ++ short displacements. PA 2.0 supports long displacements \ ++ but the base register needs to be aligned. \ + \ +- FIXME: the ELF32 linker clobbers the LSB of \ +- the FP register number in {fldw,fstw} insns. \ +- Thus, we only allow long FP loads/stores on \ +- TARGET_64BIT. */ \ +- && memory_address_p ((TARGET_PA_20 && !TARGET_ELF32 \ +- ? GET_MODE (OP) \ ++ The checks in GO_IF_LEGITIMATE_ADDRESS for SFmode and \ ++ DFmode test the validity of an address for use in a \ ++ floating point load or store. So, we use SFmode/DFmode \ ++ to see if the address is valid for a floating-point \ ++ load/store operation. */ \ ++ && memory_address_p ((GET_MODE_SIZE (GET_MODE (OP)) == 4 \ ++ ? SFmode \ + : DFmode), \ + XEXP (OP, 0))) \ + : ((C) == 'S' ? \ +@@ -1487,13 +1490,32 @@ + if (base \ + && GET_CODE (index) == CONST_INT \ + && ((INT_14_BITS (index) \ +- && (TARGET_SOFT_FLOAT \ +- || (TARGET_PA_20 \ +- && ((MODE == SFmode \ +- && (INTVAL (index) % 4) == 0) \ +- || (MODE == DFmode \ +- && (INTVAL (index) % 8) == 0))) \ +- || ((MODE) != SFmode && (MODE) != DFmode))) \ ++ && (((MODE) != DImode \ ++ && (MODE) != SFmode \ ++ && (MODE) != DFmode) \ ++ /* The base register for DImode loads and stores \ ++ with long displacements must be aligned because \ ++ the lower three bits in the displacement are \ ++ assumed to be zero. */ \ ++ || ((MODE) == DImode \ ++ && (!TARGET_64BIT \ ++ || (INTVAL (index) % 8) == 0)) \ ++ /* Similarly, the base register for SFmode/DFmode \ ++ loads and stores with long displacements must \ ++ be aligned. \ ++ \ ++ FIXME: the ELF32 linker clobbers the LSB of \ ++ the FP register number in PA 2.0 floating-point \ ++ insns with long displacements. This is because \ ++ R_PARISC_DPREL14WR and other relocations like \ ++ it are not supported. For now, we reject long \ ++ displacements on this target. */ \ ++ || (((MODE) == SFmode || (MODE) == DFmode) \ ++ && (TARGET_SOFT_FLOAT \ ++ || (TARGET_PA_20 \ ++ && !TARGET_ELF32 \ ++ && (INTVAL (index) \ ++ % GET_MODE_SIZE (MODE)) == 0))))) \ + || INT_5_BITS (index))) \ + goto ADDR; \ + if (!TARGET_DISABLE_INDEXING \ +@@ -1609,6 +1631,11 @@ + else \ + newoffset = offset & ~mask; \ + \ ++ /* Ensure that long displacements are aligned. */ \ ++ if (!VAL_5_BITS_P (newoffset) \ ++ && GET_MODE_CLASS (MODE) == MODE_FLOAT) \ ++ newoffset &= ~(GET_MODE_SIZE (MODE) -1); \ ++ \ + if (newoffset != 0 && VAL_14_BITS_P (newoffset)) \ + { \ + temp = gen_rtx_PLUS (Pmode, XEXP (new, 0), \ diff --git a/sys-devel/gcc-hppa64/gcc-hppa64-3.4.0.ebuild b/sys-devel/gcc-hppa64/gcc-hppa64-3.4.0.ebuild new file mode 100644 index 000000000000..eba324044201 --- /dev/null +++ b/sys-devel/gcc-hppa64/gcc-hppa64-3.4.0.ebuild @@ -0,0 +1,110 @@ +# 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-hppa64/gcc-hppa64-3.4.0.ebuild,v 1.1 2004/06/22 13:13:16 gmsoft Exp $ + +inherit eutils + + +# Variables +MYARCH="$(echo ${PN} | cut -d- -f2)" +TMP_P="${P/-${MYARCH}/}" +TMP_PN="${PN/-${MYARCH}/}" +I="/usr" +S="${WORKDIR}/${P}" + + +DESCRIPTION="Gcc for 64bit hppa kernels" +HOMEPAGE="http://www.gnu.org/software/gcc/gcc.html" +SRC_URI="ftp://gcc.gnu.org/pub/gcc/releases/${TMP_P}/${TMP_P}.tar.bz2" +LICENSE="GPL-2 LGPL-2.1" +SLOT="0" + +KEYWORDS="-* -hppa" + +DEPEND="virtual/glibc + >=sys-devel/binutils-hppa64-2.14.90.0.7 + >=sys-devel/binutils-2.14.90.0.7 + >=sys-devel/gcc-config-1.3.1" + +RDEPEND="virtual/glibc + >=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 )" + +TARGET=hppa64-linux + +version_patch() { + [ ! -f "$1" ] && return 1 + [ -z "$2" ] && return 1 + + sed -e "s:@GENTOO@:$2:g" ${1} > ${T}/${1##*/} + epatch ${T}/${1##*/} +} + +src_unpack() { + unpack ${TMP_P}.tar.bz2 + cd ${WORKDIR} + ln -s ${TMP_P} ${P} + cd ${S} + + # Make gcc's version info specific to Gentoo + if [ -z "${PP_VER}" ]; then + version_patch ${FILESDIR}/${TMP_P}-gentoo-branding.patch \ + "(Gentoo Linux ${PVR})" || die "Failed Branding" + fi + + # rtl-optimization fix for pa2.0 + epatch ${FILESDIR}/${TMP_P}-rtl-optimization.patch +} + +src_compile() { + cd ${WORKDIR} + + # Build in a separate build tree + mkdir -p ${WORKDIR}/build + cd ${WORKDIR}/build + + einfo "Configuring GCC..." + + addwrite "/dev/zero" + ${S}/configure --prefix=${I} \ + --build=hppa-linux \ + --host=hppa-linux \ + --disable-shared \ + --without-libc \ + --enable-languages=c \ + --target=${TARGET} \ + ${myconf} || die + + einfo "Building GCC..." + S="${WORKDIR}/build" \ + emake CPATH=/usr/include CFLAGS="${CFLAGS}" || die +} + +src_install() { + # Do allow symlinks in ${I}/lib/gcc-lib/${CHOST}/${PV}/include as + # this can break the build. + for x in cd ${WORKDIR}/build/gcc/include/* + do + if [ -L ${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=${D}${I} \ + FAKE_ROOT="${D}" \ + install || die + + #Remove unneeded files + + for i in lib/libiberty.a man share include info + do + rm -R ${D}/usr/${i} + done +} |