Package: gcc-3.3
Version: 1:3.3.6-10
Severity: wishlist
Tags: patch

Attached is a patch for gcc-3.3 to add support for the armeb
architecture.  It's pretty similar to the corresponding patches
for gcc-3.4 and gcc-4.0, but it has one extra patch for PR22528
that was fixed on the 3.4 branch but never in 3.3, and which is
needed for gcc to even be able to bootstrap itself on this
architecture.


-- System Information:
Debian Release: 3.1
Architecture: armeb (armv5teb)
Kernel: Linux 2.6.13
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)

Versions of packages gcc-3.3 depends on:
ii  binutils             2.16.1cvs20050902-1 The GNU assembler, linker and bina
ii  cpp-3.3              1:3.3.6-10          The GNU C preprocessor
ii  gcc-3.3-base         1:3.3.6-10          The GNU Compiler Collection (base
ii  libc6                2.3.5-6             GNU C Library: Shared libraries an
ii  libgcc1              1:4.0.1-8           GCC support library

-- no debconf information
--- gcc-3.3-3.3.6/debian/rules2.orig    2005-10-02 13:40:44.000000000 +0200
+++ gcc-3.3-3.3.6/debian/rules2 2005-10-02 13:41:45.000000000 +0200
@@ -152,7 +152,7 @@
 endif
 
 # Increase the timeout for one testrun on slow architectures
-ifeq ($(DEB_TARGET_ARCH), $(findstring $(DEB_TARGET_ARCH),arm hppa m68k))
+ifeq ($(DEB_TARGET_ARCH), $(findstring $(DEB_TARGET_ARCH),arm armeb hppa m68k))
   DEJAGNU_TIMEOUT=600
 else
   DEJAGNU_TIMEOUT=450
@@ -570,7 +570,7 @@
 
 # start the script only on architectures known to be slow ...
 # or on those known not to show too many failures
-ifeq ($(DEB_HOST_ARCH), $(findstring $(DEB_HOST_ARCH),arm hppa m68k mips 
mipsel))
+ifeq ($(DEB_HOST_ARCH), $(findstring $(DEB_HOST_ARCH),arm armeb hppa m68k mips 
mipsel))
        : # start logwatch script for regular output during test runs
        chmod +x debian/logwatch.sh
        -debian/logwatch.sh -t 900 -p $(builddir)/logwatch.pid \
@@ -659,7 +659,7 @@
        rm -f test32-protocol
 
 # start the script only on architectures known to be slow ...
-ifeq ($(DEB_HOST_ARCH), $(findstring $(DEB_HOST_ARCH),arm m68k))
+ifeq ($(DEB_HOST_ARCH), $(findstring $(DEB_HOST_ARCH),arm armeb m68k))
        : # start logwatch script for regular output during test runs
        chmod +x debian/logwatch.sh
        -debian/logwatch.sh -t 900 -p $(builddir)/logwatch-32.pid \
--- gcc-3.3-3.3.6/debian/control.orig   2005-10-02 13:40:45.000000000 +0200
+++ gcc-3.3-3.3.6/debian/control        2005-10-02 13:41:45.000000000 +0200
@@ -4,7 +4,7 @@
 Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
 Uploaders: Matthias Klose <[EMAIL PROTECTED]>, Gerhard Tonn <[EMAIL PROTECTED]>
 Standards-Version: 3.6.2
-Build-Depends: dpkg-dev (>= 1.13.9), libc6.1-dev (>= 2.3.2.ds1-16) [alpha 
ia64] | libc0.3-dev [hurd-i386] | libc0.1-dev [kfreebsd-i386] | libc12-dev (>= 
2.0.ds1-1) [netbsd-i386] | libc6-dev (>= 2.3.2.ds1-16), libc6-dev-sparc64 
[sparc], libc6-dev-s390x [s390], libunwind7-dev (>= 0.98.5-1) [ia64], 
libatomic-ops-dev [ia64], m4, autoconf2.13, automake1.4 | automake (<< 1.5), 
libtool, autotools-dev, gawk, dejagnu (>= 1.4.3) [!hurd-i386], expect (>= 
5.38.0) [!hurd-i386], bzip2, binutils (>= 2.15-7) | binutils-multiarch (>= 
2.15-7), binutils-hppa64 (>= 2.15-7) [hppa], debhelper (>= 3.0.25), gperf (>= 
2.7-3), bison (>= 1:1.875), flex, gettext, texinfo (>= 4.3), zlib1g-dev, 
libgc-dev [!avr], gcc-3.3, gnat-3.3 [!arm !hurd-i386 !m68k !ppc64 
!kfreebsd-i386 !netbsd-i386] | gnat-3.2 [!arm !hurd-i386 !m68k !ppc64 
!kfreebsd-i386 !netbsd-i386] | gnat [i386 powerpc sparc], locales [!netbsd-i386 
!hurd-i386 !hurd-i386], procps [!hurd-i386], sharutils, realpath (>= 1.9.12), 
lsb-release
+Build-Depends: dpkg-dev (>= 1.13.9), libc6.1-dev (>= 2.3.2.ds1-16) [alpha 
ia64] | libc0.3-dev [hurd-i386] | libc0.1-dev [kfreebsd-i386] | libc12-dev (>= 
2.0.ds1-1) [netbsd-i386] | libc6-dev (>= 2.3.2.ds1-16), libc6-dev-sparc64 
[sparc], libc6-dev-s390x [s390], libunwind7-dev (>= 0.98.5-1) [ia64], 
libatomic-ops-dev [ia64], m4, autoconf2.13, automake1.4 | automake (<< 1.5), 
libtool, autotools-dev, gawk, dejagnu (>= 1.4.3) [!hurd-i386], expect (>= 
5.38.0) [!hurd-i386], bzip2, binutils (>= 2.15-7) | binutils-multiarch (>= 
2.15-7), binutils-hppa64 (>= 2.15-7) [hppa], debhelper (>= 3.0.25), gperf (>= 
2.7-3), bison (>= 1:1.875), flex, gettext, texinfo (>= 4.3), zlib1g-dev, 
libgc-dev [!avr], gcc-3.3, gnat-3.3 [!arm !armeb !hurd-i386 !m68k !ppc64 
!kfreebsd-i386 !netbsd-i386] | gnat-3.2 [!arm !armeb !hurd-i386 !m68k !ppc64 
!kfreebsd-i386 !netbsd-i386] | gnat [i386 powerpc sparc], locales [!netbsd-i386 
!hurd-i386 !hurd-i386], procps [!hurd-i386], sharutils, realpath (>= 1.9.12), 
lsb-release
 Build-Depends-Indep: doxygen (>= 1.4.2-3), graphviz (>= 2.2)
 
 Package: gcc-3.3-base
@@ -206,7 +206,7 @@
  Documentation for the GNU Ada compiler in info format.
 
 Package: gcc-3.3-soft-float
-Architecture: arm
+Architecture: arm armeb
 Priority: optional
 Depends: gcc-3.3-base (>= 1:3.3.6-10), ${shlibs:Depends}, gcc-3.3 (>= 
1:3.3.6-10), gcc-3.3 (<< 1:3.3.7)
 Replaces: gcc-soft-float-ss (<< 1:3.3.7)
--- gcc-3.3-3.3.6/debian/rules.defs.orig        2005-10-02 13:40:44.000000000 
+0200
+++ gcc-3.3-3.3.6/debian/rules.defs     2005-10-02 13:41:45.000000000 +0200
@@ -399,7 +399,7 @@
 endif
 
 with_libgnat := yes
-ada_no_archs := arm hurd-i386 m68k ppc64 kfreebsd-i386 netbsd-i386
+ada_no_archs := arm armeb hurd-i386 m68k ppc64 kfreebsd-i386 netbsd-i386
 ifneq ($(DEB_TARGET_ARCH),i386)
   ifeq ($(DEB_TARGET_ARCH), $(findstring $(DEB_TARGET_ARCH),$(ada_no_archs)))
     with_ada := disabled for architecure $(DEB_TARGET_ARCH)
--- gcc-3.3-3.3.6/debian/rules.patch.orig       2005-10-02 13:40:45.000000000 
+0200
+++ gcc-3.3-3.3.6/debian/rules.patch    2005-10-02 13:43:13.000000000 +0200
@@ -89,6 +89,9 @@
 ifeq ($(DEB_TARGET_ARCH),arm)
   debian_patches += arm-tune arm-gotoff arm-ldm
 endif
+ifeq ($(DEB_TARGET_ARCH),armeb)
+  debian_patches += arm-tune arm-gotoff arm-ldm pr22528 arm-bigendian
+endif
 ifneq (,$(findstring $(DEB_TARGET_ARCH),i386))
   debian_patches += cpu-default-i486
 endif
--- gcc-3.3-3.3.6/debian/patches/pr22528.dpatch.orig    2005-10-02 
13:41:45.000000000 +0200
+++ gcc-3.3-3.3.6/debian/patches/pr22528.dpatch 2005-10-02 13:41:45.000000000 
+0200
@@ -0,0 +1,91 @@
+#! /bin/sh -e
+
+src=gcc
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+    pdir="-d $3"
+    src=$3/gcc
+elif [ $# -ne 1 ]; then
+    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+    exit 1
+fi
+case "$1" in
+    -patch)
+        patch $pdir -f --no-backup-if-mismatch -p0 --fuzz 10 < $0
+        ;;
+    -unpatch)
+        patch $pdir -f --no-backup-if-mismatch -R -p0 --fuzz 10 < $0
+        ;;
+    *)
+        echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+        exit 1
+esac
+exit 0
+
+--- gcc/config/arm/arm.md.orig 2004-03-30 22:43:44.000000000 +0200
++++ gcc/config/arm/arm.md      2005-08-15 12:21:55.000000000 +0200
+@@ -4275,7 +4275,7 @@
+    (set (match_dup 2)
+       (ashiftrt:SI (match_operand 0 "" "") (const_int 8)))
+    ;; store the high byte
+-   (set (match_dup 4) (subreg:QI (match_dup 2) 0))]   ;explicit subreg safe
++   (set (match_dup 4) (match_dup 5))]
+   "TARGET_ARM"
+   "
+   {
+@@ -4291,7 +4291,8 @@
+     operands[1] = adjust_address (operands[1], QImode, 0);
+     operands[3] = gen_lowpart (QImode, operands[0]);
+     operands[0] = gen_lowpart (SImode, operands[0]);
+-    operands[2] = gen_reg_rtx (SImode); 
++    operands[2] = gen_reg_rtx (SImode);
++    operands[5] = gen_lowpart (QImode, operands[2]);
+   }"
+ )
+ 
+@@ -4299,7 +4300,7 @@
+   [(set (match_dup 4) (match_dup 3))
+    (set (match_dup 2)
+       (ashiftrt:SI (match_operand 0 "" "") (const_int 8)))
+-   (set (match_operand 1 "" "")       (subreg:QI (match_dup 2) 3))]
++   (set (match_operand 1 "" "")       (match_dup 5))]
+   "TARGET_ARM"
+   "
+   {
+@@ -4316,13 +4317,14 @@
+     operands[3] = gen_lowpart (QImode, operands[0]);
+     operands[0] = gen_lowpart (SImode, operands[0]);
+     operands[2] = gen_reg_rtx (SImode);
++    operands[5] = gen_lowpart (QImode, operands[2]);
+   }"
+ )
+ 
+ ;; Subroutine to store a half word integer constant into memory.
+ (define_expand "storeinthi"
+   [(set (match_operand 0 "" "")
+-      (subreg:QI (match_operand 1 "" "") 0))
++      (match_operand 1 "" ""))
+    (set (match_dup 3) (match_dup 2))]
+   "TARGET_ARM"
+   "
+@@ -4363,6 +4365,7 @@
+     operands[3] = adjust_address (op0, QImode, 1);
+     operands[0] = adjust_address (operands[0], QImode, 0);
+     operands[2] = gen_lowpart (QImode, operands[2]);
++    operands[1] = gen_lowpart (QImode, operands[1]);
+   }"
+ )
+ 
+@@ -4682,11 +4685,12 @@
+    (set (match_dup 3)
+       (ashiftrt:SI (match_dup 2) (const_int 16)))
+    (set (match_operand:HI 0 "s_register_operand" "")
+-      (subreg:HI (match_dup 3) 0))]
++      (match_dup 4))]
+   "TARGET_ARM"
+   "
+   operands[2] = gen_reg_rtx (SImode);
+   operands[3] = gen_reg_rtx (SImode);
++  operands[4] = gen_lowpart (HImode, operands[3]);
+   "
+ )
+ 
--- gcc-3.3-3.3.6/debian/patches/arm-bigendian.dpatch.orig      2005-10-02 
13:41:45.000000000 +0200
+++ gcc-3.3-3.3.6/debian/patches/arm-bigendian.dpatch   2005-10-02 
13:41:45.000000000 +0200
@@ -0,0 +1,84 @@
+#! /bin/sh -e
+
+src=gcc
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+    pdir="-d $3"
+    src=$3/gcc
+elif [ $# -ne 1 ]; then
+    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+    exit 1
+fi
+case "$1" in
+    -patch)
+        patch $pdir -f --no-backup-if-mismatch -p0 --fuzz 10 < $0
+        ;;
+    -unpatch)
+        patch $pdir -f --no-backup-if-mismatch -R -p0 --fuzz 10 < $0
+        ;;
+    *)
+        echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+        exit 1
+esac
+exit 0
+
+--- gcc/config/arm/linux-elf.h 2004-04-13 22:15:11.000000000 +0200
++++ gcc/config/arm/linux-elf.h 2004-08-31 02:36:56.578068179 +0200
+@@ -30,17 +30,31 @@
+ /* Do not assume anything about header files.  */
+ #define NO_IMPLICIT_EXTERN_C
+ 
++/*
++ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-*
++ * (big endian) configurations.
++ */
++#if TARGET_BIG_ENDIAN_DEFAULT
++#define TARGET_ENDIAN_DEFAULT ARM_FLAG_BIG_END
++#define TARGET_ENDIAN_OPTION "mbig-endian"
++#define TARGET_LINKER_EMULATION "armelfb_linux"
++#else
++#define TARGET_ENDIAN_DEFAULT 0
++#define TARGET_ENDIAN_OPTION "mlittle-endian"
++#define TARGET_LINKER_EMULATION "armelf_linux"
++#endif
++
+ /* Default is to use APCS-32 mode.  */
+ #undef  TARGET_DEFAULT
+-#define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_MMU_TRAPS)
++#define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_MMU_TRAPS | 
TARGET_ENDIAN_DEFAULT)
+ 
+ #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6
+ 
+-#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux -p"
++#define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION " -p"
+ 
+ #undef  MULTILIB_DEFAULTS
+ #define MULTILIB_DEFAULTS \
+-      { "marm", "mlittle-endian", "mhard-float", "mapcs-32", 
"mno-thumb-interwork" }
++      { "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mapcs-32", 
"mno-thumb-interwork" }
+ 
+ #define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__"
+ 
+@@ -88,7 +102,7 @@
+    %{rdynamic:-export-dynamic} \
+    %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \
+    -X \
+-   %{mbig-endian:-EB}" \
++   %{mbig-endian:-EB} %{mlittle-endian:-EL}" \
+    SUBTARGET_EXTRA_LINK_SPEC
+ 
+ #define TARGET_OS_CPP_BUILTINS()              \
+--- gcc/config.gcc     2004-04-13 22:32:55.000000000 +0200
++++ gcc/config.gcc     2004-08-31 02:35:07.301792054 +0200
+@@ -699,6 +699,11 @@
+       ;;
+ arm*-*-linux*)                        # ARM GNU/Linux with ELF
+       tm_file="dbxelf.h elfos.h arm/elf.h arm/linux-gas.h arm/linux-elf.h 
arm/aout.h arm/arm.h"
++      case $machine in
++      arm*b-*)
++              tm_defines="TARGET_BIG_ENDIAN_DEFAULT=1 $tm_defines"
++              ;;
++      esac
+       tmake_file="t-slibgcc-elf-ver t-linux arm/t-linux"
+       extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
+       gnu_ld=yes
+
--- gcc-3.3-3.3.6/debian/control.m4.orig        2005-10-02 13:40:48.000000000 
+0200
+++ gcc-3.3-3.3.6/debian/control.m4     2005-10-02 13:41:45.000000000 +0200
@@ -619,7 +619,7 @@
 ifdef(`TARGET',`',`dnl
 ifenabled(`libs',`
 Package: gcc`'PV-soft-float
-Architecture: arm
+Architecture: arm armeb
 Priority: PRI(optional)
 Depends: gcc`'PV-base (>= CV), ${shlibs:Depends}ifenabled(`cdev',`, gcc`'PV 
(>= CV), gcc`'PV (<< NV)')
 Replaces: gcc-soft-float-ss (<< NV)

Reply via email to