summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuy Martin <gmsoft@gentoo.org>2004-06-22 13:13:16 +0000
committerGuy Martin <gmsoft@gentoo.org>2004-06-22 13:13:16 +0000
commitd3e672a3f8be7001dbe175022666c6b1556b2cf7 (patch)
treefde0082a63ab4606d37824f0ab301a1a60db5b22 /sys-devel
parentNew ebuild to fix the remerge-everything bug. (Manifest recommit) (diff)
downloadgentoo-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/ChangeLog9
-rw-r--r--sys-devel/gcc-hppa64/Manifest6
-rw-r--r--sys-devel/gcc-hppa64/files/digest-gcc-hppa64-3.4.01
-rw-r--r--sys-devel/gcc-hppa64/files/gcc-3.4.0-gentoo-branding.patch18
-rw-r--r--sys-devel/gcc-hppa64/files/gcc-3.4.0-rtl-optimization.patch136
-rw-r--r--sys-devel/gcc-hppa64/gcc-hppa64-3.4.0.ebuild110
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
+}