diff -r 1ba79f2126df -r 7d70bcf940a9 patches/gcc/3.2.3/120-sh-linux-1.patch --- a/patches/gcc/3.2.3/120-sh-linux-1.patch Wed Oct 28 12:03:38 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1761 +0,0 @@ -diff -ruN gcc-20030210.orig/boehm-gc/configure gcc-20030210/boehm-gc/configure ---- gcc-20030210.orig/boehm-gc/configure Fri Jan 31 19:17:00 2003 -+++ gcc-20030210/boehm-gc/configure Sat Feb 22 01:40:14 2003 -@@ -1922,7 +1922,7 @@ - # This must be Linux ELF. - linux-gnu*) - case $host_cpu in -- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* ) -+ alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh* ) - lt_cv_deplibs_check_method=pass_all ;; - *) - # glibc up to 2.1.1 does not perform some relocations on ARM -diff -ruN gcc-20030210.orig/config-ml.in gcc-20030210/config-ml.in ---- gcc-20030210.orig/config-ml.in Fri Jan 31 19:16:59 2003 -+++ gcc-20030210/config-ml.in Sat Feb 22 01:40:14 2003 -@@ -545,6 +545,7 @@ - if [ -d ../$${dir}/$${lib} ]; then \ - flags=`echo $$i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \ - if (cd ../$${dir}/$${lib}; $(MAKE) $(FLAGS_TO_PASS) \ -+ DESTDIR="$(DESTDIR)" \ - CFLAGS="$(CFLAGS) $${flags}" \ - prefix="$(prefix)" \ - exec_prefix="$(exec_prefix)" \ -diff -ruN gcc-20030210.orig/debian/edit-specs.in gcc-20030210/debian/edit-specs.in ---- gcc-20030210.orig/debian/edit-specs.in Thu Jan 1 09:00:00 1970 -+++ gcc-20030210/debian/edit-specs.in Sat Feb 22 01:40:14 2003 -@@ -0,0 +1,45 @@ -+/^*asm:$/ { -+n -+c\ -+@AS_ENDIAN_FLAG@ %{mrelax:-relax} -+} -+/^*cpp:$/ { -+n -+c\ -+%(cpp_default_cpu_spec) %(subtarget_cpp_spec) %(subtarget_cpp_ptr_spec) %(subtarget_cpp_endian_spec) -+} -+/^*cc1:$/ { -+n -+c\ -+-musermode @CC1_CPU_ENDIAN_FLAGS@ %{profile:-p} -+} -+/^*link:$/ { -+n -+c\ -+%{!static:--eh-frame-hdr} @LINKER_CPU_ENDIAN_FLAGS@ @LINKER_RPATH_LINK_FLAG@ %{mrelax:-relax} %{shared:-shared} %{!static: %{rdynamic:-export-dynamic} %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} %{static:-static} -+} -+/^*multilib:$/ { -+n -+c\ -+. ; -+} -+/^*multilib_matches:$/ { -+n -+c\ -+ -+} -+/^*multilib_options:$/ { -+n -+c\ -+ -+} -+/^*subtarget_cpp_endian_spec:$/ { -+n -+c\ -+@CPP_ENDIAN_DEF@ -+} -+/^*cpp_default_cpu_spec:$/ { -+n -+c\ -+@CPP_CPU_DEFS@ -+} -diff -ruN gcc-20030210.orig/debian/install-CPU-linux gcc-20030210/debian/install-CPU-linux ---- gcc-20030210.orig/debian/install-CPU-linux Thu Jan 1 09:00:00 1970 -+++ gcc-20030210/debian/install-CPU-linux Sat Feb 22 01:40:14 2003 -@@ -0,0 +1,111 @@ -+#! /bin/sh -+ -+VERSION=$1; shift -+CPU=$1 -+ -+# literally (binary-ly) same -+PROGS_C="cpp gcc" -+PROGS_ADDITIONAL="c++ g++ g77 gcj" -+ -+DRIVERS_C="cc1 cpp0 tradcpp0" -+DRIVERS_ADDITIONAL="cc1obj cc1plus collect2 f771 jc1 jvgenmain" -+if [ -z "$STEP1_COMPILER_BUILD" ]; then -+ PROGS="$PROGS_C $PROGS_ADDITIONAL" -+ DRIVERS="$DRIVERS_C $DRIVERSADDITIONAL" -+ INITIAL="" -+else -+ PROGS=$PROGS_C -+ DRIVERS=$DRIVERS_C -+ INITIAL="-initial" -+fi -+ -+OBJS="crtbegin.o crtbeginS.o crtend.o crtendS.o" -+LIBS_C="libgcc.a" -+LIBS_1="libgcc_s.so libgcc_s.so.1 libstdc++.so libstdc++.so.3 libstdc++.so.3.0.2" -+LIBS_2="libobjc.a libstdc++.a libsupc++.a" -+INCLUDE="include" -+ -+cd debian/gcc-sh-linux-others${INITIAL} || exit 1 -+ -+# Make directories. -+mkdir -p usr/bin usr/share usr/share/man usr/share/man/man1 usr/lib \ -+ usr/lib/gcc-lib usr/lib/gcc-lib/${CPU}-linux \ -+ usr/lib/gcc-lib/${CPU}-linux/${VERSION} \ -+ usr/${CPU}-linux usr/${CPU}-linux/lib -+ -+# Make symbolic links for include dir. -+(cd usr/${CPU}-linux; ln -s ../sh-linux/include .) -+ -+# Make symbolic links for executables. -+(cd usr/bin; -+ for p in ${PROGS}; do -+ ln -s shCPU-linux-GCC ${CPU}-linux-$p -+ done) -+ -+case "${CPU}" in -+ sh3) -+ MULTILIBDIR= -+ AS_ENDIAN_FLAG="-little" -+ CPP_ENDIAN_DEF="-D__LITTLE_ENDIAN__" -+ CPP_CPU_DEFS="-D__SH3__ -D__sh3__" -+ CC1_CPU_ENDIAN_FLAGS="-ml -m3" -+ LINKER_CPU_ENDIAN_FLAGS="-m shlelf_linux -EL --architecture sh3" -+ LINKER_RPATH_LINK_FLAG="-rpath-link /usr/sh3-linux/lib" -+ ;; -+ sh3eb) -+ MULTILIBDIR=/mb -+ AS_ENDIAN_FLAG="-big" -+ CPP_ENDIAN_DEF="-D__BIG_ENDIAN__" -+ CPP_CPU_DEFS="-D__SH3__ -D__sh3__" -+ CC1_CPU_ENDIAN_FLAGS="-mb -m3" -+ LINKER_CPU_ENDIAN_FLAGS="-m shelf_linux -EB --architecture sh3" -+ LINKER_RPATH_LINK_FLAG="-rpath-link /usr/sh3eb-linux/lib" -+ ;; -+ sh4) -+ MULTILIBDIR=/m4 -+ AS_ENDIAN_FLAG="-little" -+ CPP_ENDIAN_DEF="-D__LITTLE_ENDIAN__" -+ CPP_CPU_DEFS="-D__SH4__" -+ CC1_CPU_ENDIAN_FLAGS="-ml -m4" -+ LINKER_CPU_ENDIAN_FLAGS="-m shlelf_linux -EL --architecture sh4" -+ LINKER_RPATH_LINK_FLAG="-rpath-link /usr/sh4-linux/lib" -+ ;; -+ sh4eb) -+ MULTILIBDIR=/mb/m4 -+ AS_ENDIAN_FLAG="-big" -+ CPP_ENDIAN_DEF="-D__BIG_ENDIAN__" -+ CPP_CPU_DEFS="-D__SH4__" -+ CC1_CPU_ENDIAN_FLAGS="-mb -m4" -+ LINKER_CPU_ENDIAN_FLAGS="-m shelf_linux -EB --architecture sh4" -+ LINKER_RPATH_LINK_FLAG="-rpath-link /usr/sh4eb-linux/lib" -+ ;; -+esac -+ -+# Make symbolic links for GCC drivers, objects, libraries, and include dir. -+(cd usr/lib/gcc-lib/${CPU}-linux/${VERSION}; -+ for f in ${DRIVERS} ${INCLUDE}; do -+ ln -s ../../sh-linux/${VERSION}/$f $f; -+ done -+ for f in ${OBJS} ${LIBS_C}; do -+ ln -s ../../sh-linux/${VERSION}${MULTILIBDIR}/$f $f; -+ done) -+ -+if [ -z "$STEP1_COMPILER_BUILD" ]; then -+ for f in ${LIBS_1} ${LIBS_2}; do -+ mv ../gcc-sh-linux/usr/sh-linux/lib${MULTILIBDIR}/$f usr/${CPU}-linux/lib/; -+ done -+fi -+ -+sed -e "s+@AS_ENDIAN_FLAG@+${AS_ENDIAN_FLAG}+" \ -+ -e "s+@CPP_ENDIAN_DEF@+${CPP_ENDIAN_DEF}+" \ -+ -e "s+@CPP_CPU_DEFS@+${CPP_CPU_DEFS}+" \ -+ -e "s+@CC1_CPU_ENDIAN_FLAGS@+${CC1_CPU_ENDIAN_FLAGS}+" \ -+ -e "s+@LINKER_CPU_ENDIAN_FLAGS@+${LINKER_CPU_ENDIAN_FLAGS}+" \ -+ -e "s+@LINKER_RPATH_LINK_FLAG@+${LINKER_RPATH_LINK_FLAG}+" \ -+ ../edit-specs.in >../edit-specs-${CPU}.sed -+ -+sed -f ../edit-specs-${CPU}.sed \ -+ ../gcc-sh-linux${INITIAL}/usr/lib/gcc-lib/sh-linux/${VERSION}/specs \ -+ > usr/lib/gcc-lib/${CPU}-linux/${VERSION}/specs -+ -+exit 0 -diff -ruN gcc-20030210.orig/debian/multilib-symlink gcc-20030210/debian/multilib-symlink ---- gcc-20030210.orig/debian/multilib-symlink Thu Jan 1 09:00:00 1970 -+++ gcc-20030210/debian/multilib-symlink Sat Feb 22 01:40:14 2003 -@@ -0,0 +1,10 @@ -+#! /bin/sh -+ -+cd /usr/sh-linux/lib -+ln -s ../../sh3-linux/lib/{*.a,*.so*,*.o} . -+cd m4 -+ln -s ../../../sh4-linux/lib/{*.a,*.so*,*.o} . -+cd ../mb -+ln -s ../../../sh3eb-linux/lib/{*.a,*.so*,*.o} . -+cd m4 -+ln -s ../../../../sh4eb-linux/lib/{*.a,*.so*,*.o} . -diff -ruN gcc-20030210.orig/debian/shCPU-linux-GCC gcc-20030210/debian/shCPU-linux-GCC ---- gcc-20030210.orig/debian/shCPU-linux-GCC Thu Jan 1 09:00:00 1970 -+++ gcc-20030210/debian/shCPU-linux-GCC Sat Feb 22 01:40:14 2003 -@@ -0,0 +1,59 @@ -+#! /bin/bash -+ -+BASENAME=${0##*/} -+PROG=${BASENAME##*-} -+CPU=${BASENAME%%-*} -+ -+if [ "$PROG" = gcc ]; then -+ if [ "$1" = "-b" -a "$2" = "i386-linux" ]; then -+ shift 2 -+ exec /usr/bin/gcc "$@" -+ elif [ "$1" = "-print-multi-lib" -o "$1" = "--print-multi-lib" ]; then -+ echo ".;" -+ exit 0 -+ elif [ "$1" = "-print-multi-os-directory" -o "$1" = "--print-multi-os-directory" ]; then -+ echo "." -+ exit 0 -+ elif [ "$1" = "-dumpspecs" ]; then -+ cat /usr/lib/gcc-lib/${CPU}-linux/@@VERSION@@/specs -+ exit 0 -+ fi -+fi -+ -+case "${CPU}" in -+ sh3) -+ ARCH=m3 -+ DEFINES="-D__sh3__ -D__SH3__ -D__LITTLE_ENDIAN__" -+ ENDIAN=ml -+ ;; -+ sh3eb) -+ ARCH=m3 -+ DEFINES="-D__sh3__ -D__SH3__ -D__BIG_ENDIAN__" -+ ENDIAN=mb -+ ;; -+ sh4) -+ ARCH=m4 -+ DEFINES="-D__SH4__ -D__LITTLE_ENDIAN__" -+ ENDIAN=ml -+ ;; -+ sh4eb) -+ ARCH=m4 -+ DEFINES="-D__SH4__ -D__BIG_ENDIAN__" -+ ENDIAN=mb -+ ;; -+esac -+ -+# Prepend the appropriate options -+# If user specifies some options, it will be overridden -+ -+case "${PROG}" in -+ cpp) -+ exec sh-linux-${PROG} $DEFINES "$@" -+ ;; -+ c++|g++|g77|gcc|gcj) -+ exec sh-linux-${PROG} -$ARCH -$ENDIAN "$@" -+ ;; -+esac -+ -+echo "Something wrong..." -+exit 1 -diff -ruN gcc-20030210.orig/gcc/config/sh/elf.h gcc-20030210/gcc/config/sh/elf.h ---- gcc-20030210.orig/gcc/config/sh/elf.h Fri Feb 22 01:42:28 2002 -+++ gcc-20030210/gcc/config/sh/elf.h Sat Feb 22 01:40:14 2003 -@@ -170,3 +170,7 @@ - #undef ENDFILE_SPEC - #define ENDFILE_SPEC \ - "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s" -+ -+/* ASM_OUTPUT_CASE_LABEL is defined in elfos.h. With it, -+ redundant .align will be generated. */ -+#undef ASM_OUTPUT_CASE_LABEL -diff -ruN gcc-20030210.orig/gcc/config/sh/lib1funcs.asm gcc-20030210/gcc/config/sh/lib1funcs.asm ---- gcc-20030210.orig/gcc/config/sh/lib1funcs.asm Fri Feb 22 01:42:28 2002 -+++ gcc-20030210/gcc/config/sh/lib1funcs.asm Sat Feb 22 01:40:14 2003 -@@ -39,8 +39,13 @@ - - #ifdef __ELF__ - #define LOCAL(X) .L_##X -+#define FUNC(X) .type X,@function; .hidden X -+#define _ENDFUNC(X) .Lfe_##X: .size X,.Lfe_##X-X -+#define ENDFUNC(X) _ENDFUNC(X) - #else - #define LOCAL(X) L_##X -+#define FUNC(X) -+#define ENDFUNC(X) - #endif - - #ifdef __linux__ -@@ -91,6 +96,40 @@ - .global GLOBAL(ashiftrt_r4_31) - .global GLOBAL(ashiftrt_r4_32) - -+ FUNC(GLOBAL(ashiftrt_r4_0)) -+ FUNC(GLOBAL(ashiftrt_r4_1)) -+ FUNC(GLOBAL(ashiftrt_r4_2)) -+ FUNC(GLOBAL(ashiftrt_r4_3)) -+ FUNC(GLOBAL(ashiftrt_r4_4)) -+ FUNC(GLOBAL(ashiftrt_r4_5)) -+ FUNC(GLOBAL(ashiftrt_r4_6)) -+ FUNC(GLOBAL(ashiftrt_r4_7)) -+ FUNC(GLOBAL(ashiftrt_r4_8)) -+ FUNC(GLOBAL(ashiftrt_r4_9)) -+ FUNC(GLOBAL(ashiftrt_r4_10)) -+ FUNC(GLOBAL(ashiftrt_r4_11)) -+ FUNC(GLOBAL(ashiftrt_r4_12)) -+ FUNC(GLOBAL(ashiftrt_r4_13)) -+ FUNC(GLOBAL(ashiftrt_r4_14)) -+ FUNC(GLOBAL(ashiftrt_r4_15)) -+ FUNC(GLOBAL(ashiftrt_r4_16)) -+ FUNC(GLOBAL(ashiftrt_r4_17)) -+ FUNC(GLOBAL(ashiftrt_r4_18)) -+ FUNC(GLOBAL(ashiftrt_r4_19)) -+ FUNC(GLOBAL(ashiftrt_r4_20)) -+ FUNC(GLOBAL(ashiftrt_r4_21)) -+ FUNC(GLOBAL(ashiftrt_r4_22)) -+ FUNC(GLOBAL(ashiftrt_r4_23)) -+ FUNC(GLOBAL(ashiftrt_r4_24)) -+ FUNC(GLOBAL(ashiftrt_r4_25)) -+ FUNC(GLOBAL(ashiftrt_r4_26)) -+ FUNC(GLOBAL(ashiftrt_r4_27)) -+ FUNC(GLOBAL(ashiftrt_r4_28)) -+ FUNC(GLOBAL(ashiftrt_r4_29)) -+ FUNC(GLOBAL(ashiftrt_r4_30)) -+ FUNC(GLOBAL(ashiftrt_r4_31)) -+ FUNC(GLOBAL(ashiftrt_r4_32)) -+ - .align 1 - GLOBAL(ashiftrt_r4_32): - GLOBAL(ashiftrt_r4_31): -@@ -170,6 +209,41 @@ - GLOBAL(ashiftrt_r4_0): - rts - nop -+ -+ ENDFUNC(GLOBAL(ashiftrt_r4_0)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_1)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_2)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_3)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_4)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_5)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_6)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_7)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_8)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_9)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_10)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_11)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_12)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_13)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_14)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_15)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_16)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_17)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_18)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_19)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_20)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_21)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_22)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_23)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_24)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_25)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_26)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_27)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_28)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_29)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_30)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_31)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_32)) -+ - #endif - - #ifdef L_ashiftrt_n -@@ -192,6 +266,7 @@ - ! - - .global GLOBAL(ashrsi3) -+ FUNC(GLOBAL(ashrsi3)) - .align 2 - GLOBAL(ashrsi3): - mov #31,r0 -@@ -319,6 +394,8 @@ - rts - nop - -+ ENDFUNC(GLOBAL(ashrsi3)) -+ - #endif - - #ifdef L_ashiftlt -@@ -340,6 +417,7 @@ - ! (none) - ! - .global GLOBAL(ashlsi3) -+ FUNC(GLOBAL(ashlsi3)) - .align 2 - GLOBAL(ashlsi3): - mov #31,r0 -@@ -476,6 +554,8 @@ - rts - nop - -+ ENDFUNC(GLOBAL(ashlsi3)) -+ - #endif - - #ifdef L_lshiftrt -@@ -497,6 +577,7 @@ - ! (none) - ! - .global GLOBAL(lshrsi3) -+ FUNC(GLOBAL(lshrsi3)) - .align 2 - GLOBAL(lshrsi3): - mov #31,r0 -@@ -633,6 +714,8 @@ - rts - nop - -+ ENDFUNC(GLOBAL(lshrsi3)) -+ - #endif - - #ifdef L_movstr -@@ -649,76 +732,113 @@ - add #64,r4 - .align 4 - .global GLOBAL(movstrSI64) -+ FUNC(GLOBAL(movstrSI64)) - GLOBAL(movstrSI64): - mov.l @(60,r5),r0 - mov.l r0,@(60,r4) - .global GLOBAL(movstrSI60) -+ FUNC(GLOBAL(movstrSI60)) - GLOBAL(movstrSI60): - mov.l @(56,r5),r0 - mov.l r0,@(56,r4) - .global GLOBAL(movstrSI56) -+ FUNC(GLOBAL(movstrSI56)) - GLOBAL(movstrSI56): - mov.l @(52,r5),r0 - mov.l r0,@(52,r4) - .global GLOBAL(movstrSI52) -+ FUNC(GLOBAL(movstrSI52)) - GLOBAL(movstrSI52): - mov.l @(48,r5),r0 - mov.l r0,@(48,r4) - .global GLOBAL(movstrSI48) -+ FUNC(GLOBAL(movstrSI48)) - GLOBAL(movstrSI48): - mov.l @(44,r5),r0 - mov.l r0,@(44,r4) - .global GLOBAL(movstrSI44) -+ FUNC(GLOBAL(movstrSI44)) - GLOBAL(movstrSI44): - mov.l @(40,r5),r0 - mov.l r0,@(40,r4) - .global GLOBAL(movstrSI40) -+ FUNC(GLOBAL(movstrSI40)) - GLOBAL(movstrSI40): - mov.l @(36,r5),r0 - mov.l r0,@(36,r4) - .global GLOBAL(movstrSI36) -+ FUNC(GLOBAL(movstrSI36)) - GLOBAL(movstrSI36): - mov.l @(32,r5),r0 - mov.l r0,@(32,r4) - .global GLOBAL(movstrSI32) -+ FUNC(GLOBAL(movstrSI32)) - GLOBAL(movstrSI32): - mov.l @(28,r5),r0 - mov.l r0,@(28,r4) - .global GLOBAL(movstrSI28) -+ FUNC(GLOBAL(movstrSI28)) - GLOBAL(movstrSI28): - mov.l @(24,r5),r0 - mov.l r0,@(24,r4) - .global GLOBAL(movstrSI24) -+ FUNC(GLOBAL(movstrSI24)) - GLOBAL(movstrSI24): - mov.l @(20,r5),r0 - mov.l r0,@(20,r4) - .global GLOBAL(movstrSI20) -+ FUNC(GLOBAL(movstrSI20)) - GLOBAL(movstrSI20): - mov.l @(16,r5),r0 - mov.l r0,@(16,r4) - .global GLOBAL(movstrSI16) -+ FUNC(GLOBAL(movstrSI16)) - GLOBAL(movstrSI16): - mov.l @(12,r5),r0 - mov.l r0,@(12,r4) - .global GLOBAL(movstrSI12) -+ FUNC(GLOBAL(movstrSI12)) - GLOBAL(movstrSI12): - mov.l @(8,r5),r0 - mov.l r0,@(8,r4) - .global GLOBAL(movstrSI8) -+ FUNC(GLOBAL(movstrSI8)) - GLOBAL(movstrSI8): - mov.l @(4,r5),r0 - mov.l r0,@(4,r4) - .global GLOBAL(movstrSI4) -+ FUNC(GLOBAL(movstrSI4)) - GLOBAL(movstrSI4): - mov.l @(0,r5),r0 - mov.l r0,@(0,r4) -+ .global GLOBAL(movstrSI0) -+ FUNC(GLOBAL(movstrSI0)) - GLOBAL(movstrSI0): - rts - nop - -+ ENDFUNC(GLOBAL(movstrSI64)) -+ ENDFUNC(GLOBAL(movstrSI60)) -+ ENDFUNC(GLOBAL(movstrSI56)) -+ ENDFUNC(GLOBAL(movstrSI52)) -+ ENDFUNC(GLOBAL(movstrSI48)) -+ ENDFUNC(GLOBAL(movstrSI44)) -+ ENDFUNC(GLOBAL(movstrSI40)) -+ ENDFUNC(GLOBAL(movstrSI36)) -+ ENDFUNC(GLOBAL(movstrSI32)) -+ ENDFUNC(GLOBAL(movstrSI28)) -+ ENDFUNC(GLOBAL(movstrSI24)) -+ ENDFUNC(GLOBAL(movstrSI20)) -+ ENDFUNC(GLOBAL(movstrSI16)) -+ ENDFUNC(GLOBAL(movstrSI12)) -+ ENDFUNC(GLOBAL(movstrSI8)) -+ ENDFUNC(GLOBAL(movstrSI4)) -+ ENDFUNC(GLOBAL(movstrSI0)) -+ - .align 4 - - .global GLOBAL(movstr) -+ FUNC(GLOBAL(movstr)) - GLOBAL(movstr): - mov.l @(60,r5),r0 - mov.l r0,@(60,r4) -@@ -775,6 +895,8 @@ - add #64,r5 - bra GLOBAL(movstr) - add #64,r4 -+ -+ FUNC(GLOBAL(movstr)) - #endif - - #ifdef L_movstr_i4 -@@ -783,6 +905,10 @@ - .global GLOBAL(movstr_i4_odd) - .global GLOBAL(movstrSI12_i4) - -+ FUNC(GLOBAL(movstr_i4_even)) -+ FUNC(GLOBAL(movstr_i4_odd)) -+ FUNC(GLOBAL(movstrSI12_i4)) -+ - .p2align 5 - L_movstr_2mod4_end: - mov.l r0,@(16,r4) -@@ -791,6 +917,11 @@ - - .p2align 2 - -+GLOBAL(movstr_i4_even): -+ mov.l @r5+,r0 -+ bra L_movstr_start_even -+ mov.l @r5+,r1 -+ - GLOBAL(movstr_i4_odd): - mov.l @r5+,r1 - add #-4,r4 -@@ -817,10 +948,8 @@ - rts - mov.l r3,@(12,r4) - --GLOBAL(movstr_i4_even): -- mov.l @r5+,r0 -- bra L_movstr_start_even -- mov.l @r5+,r1 -+ ENDFUNC(GLOBAL(movstr_i4_even)) -+ ENDFUNC(GLOBAL(movstr_i4_odd)) - - .p2align 4 - GLOBAL(movstrSI12_i4): -@@ -831,12 +960,16 @@ - mov.l r1,@(4,r4) - rts - mov.l r2,@(8,r4) -+ -+ ENDFUNC(GLOBAL(movstrSI12_i4)) -+ - #endif - - #ifdef L_mulsi3 - - - .global GLOBAL(mulsi3) -+ FUNC(GLOBAL(mulsi3)) - - ! r4 = aabb - ! r5 = ccdd -@@ -869,7 +1002,7 @@ - rts - add r2,r0 - -- -+ FUNC(GLOBAL(mulsi3)) - #endif - #endif /* ! __SH5__ */ - #ifdef L_sdivsi3_i4 -@@ -879,6 +1012,7 @@ - !! args in r4 and r5, result in fpul, clobber dr0, dr2 - - .global GLOBAL(sdivsi3_i4) -+ FUNC(GLOBAL(sdivsi3_i4)) - GLOBAL(sdivsi3_i4): - lds r4,fpul - float fpul,dr0 -@@ -888,6 +1022,8 @@ - rts - ftrc dr0,fpul - -+ ENDFUNC(GLOBAL(sdivsi3_i4)) -+ - #elif defined(__SH4_SINGLE__) || defined(__SH4_SINGLE_ONLY__) || (defined (__SH5__) && ! defined __SH4_NOFPU__) - !! args in r4 and r5, result in fpul, clobber r2, dr0, dr2 - -@@ -896,6 +1032,7 @@ - .mode SHcompact - #endif - .global GLOBAL(sdivsi3_i4) -+ FUNC(GLOBAL(sdivsi3_i4)) - GLOBAL(sdivsi3_i4): - sts.l fpscr,@-r15 - mov #8,r2 -@@ -910,6 +1047,8 @@ - rts - lds.l @r15+,fpscr - -+ ENDFUNC(GLOBAL(sdivsi3_i4)) -+ - #endif /* ! __SH5__ || __SH5__ == 32 */ - #endif /* ! __SH4__ */ - #endif -@@ -924,9 +1063,10 @@ - !! - !! - --!! args in r4 and r5, result in r0 clobber r1,r2,r3 -+!! args in r4 and r5, result in r0 clobber r1, r2, r3, and t bit - - .global GLOBAL(sdivsi3) -+ FUNC(GLOBAL(sdivsi3)) - #if __SHMEDIA__ - #if __SH5__ == 32 - .section .text..SHmedia32,"ax" -@@ -1076,6 +1216,7 @@ - div0: rts - mov #0,r0 - -+ ENDFUNC(GLOBAL(sdivsi3)) - #endif /* ! __SHMEDIA__ */ - #endif /* ! __SH4__ */ - #endif -@@ -1084,9 +1225,11 @@ - .title "SH DIVIDE" - !! 4 byte integer Divide code for the Hitachi SH - #ifdef __SH4__ --!! args in r4 and r5, result in fpul, clobber r0, r1, r4, r5, dr0, dr2, dr4 -+!! args in r4 and r5, result in fpul, clobber r0, r1, r4, r5, dr0, dr2, dr4, -+!! and t bit - - .global GLOBAL(udivsi3_i4) -+ FUNC(GLOBAL(udivsi3_i4)) - GLOBAL(udivsi3_i4): - mov #1,r1 - cmp/hi r1,r5 -@@ -1127,6 +1270,8 @@ - L1: - .double 2147483648 - -+ ENDFUNC(GLOBAL(udivsi3_i4)) -+ - #elif defined(__SH4_SINGLE__) || defined(__SH4_SINGLE_ONLY__) || (defined (__SH5__) && ! defined __SH4_NOFPU__) - !! args in r4 and r5, result in fpul, clobber r0, r1, r4, r5, dr0, dr2, dr4 - -@@ -1135,6 +1280,7 @@ - .mode SHcompact - #endif - .global GLOBAL(udivsi3_i4) -+ FUNC(GLOBAL(udivsi3_i4)) - GLOBAL(udivsi3_i4): - mov #1,r1 - cmp/hi r1,r5 -@@ -1183,6 +1329,8 @@ - #endif - .double 2147483648 - -+ ENDFUNC(GLOBAL(udivsi3_i4)) -+ - #endif /* ! __SH5__ || __SH5__ == 32 */ - #endif /* ! __SH4__ */ - #endif -@@ -1199,6 +1347,7 @@ - - !! args in r4 and r5, result in r0, clobbers r4, pr, and t bit - .global GLOBAL(udivsi3) -+ FUNC(GLOBAL(udivsi3)) - - #if __SHMEDIA__ - #if __SH5__ == 32 -@@ -1299,6 +1448,8 @@ - ret: rts - mov r4,r0 - -+ ENDFUNC(GLOBAL(udivsi3)) -+ - #endif /* ! __SHMEDIA__ */ - #endif /* __SH4__ */ - #endif -@@ -1308,6 +1459,7 @@ - .mode SHcompact - #endif - .global GLOBAL(set_fpscr) -+ FUNC(GLOBAL(set_fpscr)) - GLOBAL(set_fpscr): - lds r4,fpscr - mov.l LOCAL(set_fpscr_L1),r1 -@@ -1340,11 +1492,16 @@ - .align 2 - LOCAL(set_fpscr_L1): - .long GLOBAL(fpscr_values) -+ -+ ENDFUNC(GLOBAL(set_fpscr)) -+ -+#ifndef NO_FPSCR_VALUES - #ifdef __ELF__ - .comm GLOBAL(fpscr_values),8,4 - #else - .comm GLOBAL(fpscr_values),8 - #endif /* ELF */ -+#endif /* NO_FPSCR_VALUES */ - #endif /* SH3E / SH4 */ - #endif /* L_set_fpscr */ - #ifdef L_ic_invalidate -@@ -1360,6 +1517,7 @@ - blink tr0, r63 - #elif defined(__SH4_SINGLE__) || defined(__SH4__) || defined(__SH4_SINGLE_ONLY__) - .global GLOBAL(ic_invalidate) -+ FUNC(GLOBAL(ic_invalidate)) - GLOBAL(ic_invalidate): - ocbwb @r4 - mova 0f,r0 -@@ -1382,6 +1540,9 @@ - nop - .endr - .endr -+ -+ ENDFUNC(GLOBAL(ic_invalidate)) -+ - #endif /* SH4 */ - #endif /* L_ic_invalidate */ - -diff -ruN gcc-20030210.orig/gcc/config/sh/libgcc-glibc.ver gcc-20030210/gcc/config/sh/libgcc-glibc.ver ---- gcc-20030210.orig/gcc/config/sh/libgcc-glibc.ver Thu Jan 1 09:00:00 1970 -+++ gcc-20030210/gcc/config/sh/libgcc-glibc.ver Sat Feb 22 01:40:14 2003 -@@ -0,0 +1,21 @@ -+# In order to work around the very problems that force us to now generally -+# create a libgcc.so, glibc reexported a number of routines from libgcc.a. -+# By now choosing the same version tags for these specific routines, we -+# maintain enough binary compatibility to allow future versions of glibc -+# to defer implementation of these routines to libgcc.so via DT_AUXILIARY. -+ -+# Note that we cannot use the default libgcc-glibc.ver file on sh, -+# because GLIBC_2.0 does not exist on this architecture, as the first -+# ever glibc release on the platform was GLIBC_2.2. -+ -+%inherit GCC_3.0 GLIBC_2.2 -+GLIBC_2.2 { -+ __register_frame -+ __register_frame_table -+ __deregister_frame -+ __register_frame_info -+ __deregister_frame_info -+ __frame_state_for -+ __register_frame_info_table -+} -+ -diff -ruN gcc-20030210.orig/gcc/config/sh/linux.h gcc-20030210/gcc/config/sh/linux.h ---- gcc-20030210.orig/gcc/config/sh/linux.h Tue Apr 16 05:27:42 2002 -+++ gcc-20030210/gcc/config/sh/linux.h Sat Feb 22 01:40:14 2003 -@@ -19,6 +19,10 @@ - the Free Software Foundation, 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -+/* We're not SYSVR4, not having /usr/ccs */ -+#undef MD_EXEC_PREFIX -+#undef MD_STARTFILE_PREFIX -+ - /* Run-time Target Specification. */ - #undef TARGET_VERSION - #define TARGET_VERSION fputs (" (SH GNU/Linux with ELF)", stderr); -@@ -39,6 +43,28 @@ - #undef WCHAR_TYPE_SIZE - #define WCHAR_TYPE_SIZE BITS_PER_WORD - -+/* This was defined in linux.h. Define it here also. */ -+#undef DEFAULT_VTABLE_THUNKS -+#define DEFAULT_VTABLE_THUNKS 1 -+ -+/* Likewise. */ -+#define HANDLE_PRAGMA_PACK_PUSH_POP -+ -+/* Pick up the return address upon entry to a procedure. Used for -+ dwarf2 unwind information. This also enables the table driven -+ mechanism. */ -+ -+#define INCOMING_RETURN_ADDR_RTX gen_rtx_REG (Pmode, PR_REG) -+#define DWARF_FRAME_RETURN_COLUMN DWARF_FRAME_REGNUM (PR_REG) -+ -+#undef CPP_SPEC -+#define CPP_SPEC "\ -+ %{m4:-D__SH4__} \ -+ %{!m4:%(cpp_default_cpu_spec)} \ -+ %(subtarget_cpp_spec) \ -+ %(subtarget_cpp_ptr_spec) \ -+ %(subtarget_cpp_endian_spec) " -+ - #undef SUBTARGET_CPP_SPEC - #define SUBTARGET_CPP_SPEC "\ - %{fPIC:-D__PIC__ -D__pic__} \ -@@ -55,36 +81,45 @@ - #undef CPP_DEFAULT_CPU_SPEC - #define CPP_DEFAULT_CPU_SPEC "-D__SH3__ -D__sh3__" - -- - #undef CPP_PREDEFINES - #define CPP_PREDEFINES "-D__ELF__ -Dunix -D__sh__ -D__gnu_linux__ -Dlinux -Asystem=posix" - -+/* The GNU C++ standard library requires that these macros be defined. */ -+#undef CPLUSPLUS_CPP_SPEC -+#define CPLUSPLUS_CPP_SPEC "-D_GNU_SOURCE %(cpp)" -+ - #undef ASM_SPEC --#define ASM_SPEC "%{!mb:-little} %{mrelax:-relax}" -+#define ASM_SPEC "%{mb:-big} %{!mb:-little} %{mrelax:-relax}" - - #undef CC1_SPEC - #define CC1_SPEC \ -- "-musermode %{!mb:-ml} %{!m3e:%{!m4:-m3}}" -- --#undef CC1PLUS_SPEC --#define CC1PLUS_SPEC \ -- "-musermode %{!mb:-ml} %{!m3e:%{!m4:-m3}}" -+ "-musermode %{!mb:-ml} %{!m4:-m3} %{profile:-p}" - -+/* XXX: It's wrong if prefix != /usr */ - #undef LINK_SPEC - #define LINK_SPEC \ -- "%{!mb:-m shlelf_linux} %{mrelax:-relax} \ -+ "%{!mb:-m shlelf_linux -EL} %{mb:-m shelf_linux -EB} %{mrelax:-relax} \ - %{shared:-shared} \ - %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \ -- %{!rpath:-rpath /lib}} \ -+ %{!mb:%{!m4:-rpath-link /usr/sh-linux/lib }} \ -+ %{!mb:%{m4:-rpath-link /usr/sh-linux/lib/m4 }} \ -+ %{mb:%{!m4:-rpath-link /usr/sh-linux/lib/mb }} \ -+ %{mb:%{m4:-rpath-link /usr/sh-linux/lib/mb/m4 }}} \ - %{static:-static}" - - #undef LIB_SPEC -+#undef LIB_SPEC - #define LIB_SPEC \ - "%{shared: -lc} \ -- %{!shared: %{pthread:-lthread} \ -- %{profile:-lc_p} %{!profile: -lc}}" -+ %{!shared: %{mieee:-lieee} %{pthread:-lpthread} \ -+ %{profile:-lc_p} %{!profile: -lc}}" -+ -+#if defined(HAVE_LD_EH_FRAME_HDR) -+#undef LINK_EH_SPEC -+#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " -+#endif - - #undef STARTFILE_SPEC - #define STARTFILE_SPEC \ -@@ -92,4 +127,40 @@ - %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \ - %{!p:%{profile:gcrt1.o%s} \ - %{!profile:crt1.o%s}}}} \ -- crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}" -+ crti.o%s %{static:crtbeginT.o%s}\ -+ %{!static:%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}}" -+ -+#undef FUNCTION_PROFILER -+#define FUNCTION_PROFILER(STREAM,LABELNO) \ -+do \ -+{ \ -+ if (flag_pic) \ -+ { \ -+ fprintf (STREAM, " mov.l 3f,r1\n"); \ -+ fprintf (STREAM, " mova 3f,r0\n"); \ -+ fprintf (STREAM, " add r1,r0\n"); \ -+ fprintf (STREAM, " mov.l 1f,r1\n"); \ -+ fprintf (STREAM, " mov.l @(r0,r1),r1\n"); \ -+ } \ -+ else \ -+ { \ -+ fprintf (STREAM, " mov.l 1f,r1\n"); \ -+ } \ -+ fprintf (STREAM, " sts.l pr,@-r15\n"); \ -+ fprintf (STREAM, " mova 2f,r0\n"); \ -+ fprintf (STREAM, " jmp @r1\n"); \ -+ fprintf (STREAM, " lds r0,pr\n"); \ -+ fprintf (STREAM, " .align 2\n"); \ -+ if (flag_pic) \ -+ { \ -+ fprintf (STREAM, "1: .long mcount@GOT\n"); \ -+ fprintf (STREAM, "3: .long _GLOBAL_OFFSET_TABLE_\n"); \ -+ } \ -+ else \ -+ { \ -+ fprintf (STREAM, "1: .long mcount\n"); \ -+ } \ -+ fprintf (STREAM, "2: lds.l @r15+,pr\n"); \ -+} while (0) -+ -+#define NO_SHARED_LIBGCC_MULTILIB -diff -ruN gcc-20030210.orig/gcc/config/sh/sh-protos.h gcc-20030210/gcc/config/sh/sh-protos.h ---- gcc-20030210.orig/gcc/config/sh/sh-protos.h Fri Feb 22 01:42:28 2002 -+++ gcc-20030210/gcc/config/sh/sh-protos.h Sat Feb 22 01:40:14 2003 -@@ -74,6 +74,7 @@ - extern int shl_sext_length PARAMS ((rtx)); - extern int gen_shl_sext PARAMS ((rtx, rtx, rtx, rtx)); - extern rtx gen_datalabel_ref PARAMS ((rtx)); -+extern int shl_casesi_worker_length PARAMS ((rtx)); - extern int regs_used PARAMS ((rtx, int)); - extern void fixup_addr_diff_vecs PARAMS ((rtx)); - extern int get_dest_uid PARAMS ((rtx, int)); -diff -ruN gcc-20030210.orig/gcc/config/sh/sh.c gcc-20030210/gcc/config/sh/sh.c ---- gcc-20030210.orig/gcc/config/sh/sh.c Fri Feb 22 01:42:28 2002 -+++ gcc-20030210/gcc/config/sh/sh.c Sat Feb 22 01:40:14 2003 -@@ -2143,6 +2143,48 @@ - return sym; - } - -+ -+/* Function to be used in the length attribute of the casesi_worker -+ instruction. Returns number of instructions, which is half of the -+ length of bytes. */ -+ -+int -+shl_casesi_worker_length (insn) -+ rtx insn; -+{ -+ rtx set_src, label; -+ rtx diff_vec; -+ -+ set_src = SET_SRC (XVECEXP (PATTERN (insn), 0, 0)); -+ if (!(GET_CODE (set_src) == UNSPEC -+ && XINT (set_src, 1) == UNSPEC_CASESI)) -+ abort (); -+ -+ label = XVECEXP (set_src, 0, 2); -+ if (GET_CODE (label) != LABEL_REF) -+ abort (); -+ -+ diff_vec = PATTERN (next_real_insn (XEXP (label, 0))); -+ -+ if (GET_CODE (diff_vec) != ADDR_DIFF_VEC) -+ abort (); -+ -+ switch (GET_MODE (diff_vec)) -+ { -+ case SImode: -+ return 2; -+ case HImode: -+ if (ADDR_DIFF_VEC_FLAGS (diff_vec).offset_unsigned) -+ return 3; -+ return 2; -+ case QImode: -+ if (ADDR_DIFF_VEC_FLAGS (diff_vec).offset_unsigned) -+ return 2; -+ return 1; -+ default: -+ abort (); -+ } -+} - - /* The SH cannot load a large constant into a register, constants have to - come from a pc relative load. The reference of a pc relative load -@@ -3190,7 +3232,7 @@ - vec_lab = XEXP (XEXP (pat, 0), 0); - - /* Search the matching casesi_jump_2. */ -- for (prev = vec_lab; ; prev = PREV_INSN (prev)) -+ for (prev = vec_lab; prev; prev = PREV_INSN (prev)) - { - if (GET_CODE (prev) != JUMP_INSN) - continue; -@@ -3205,6 +3247,13 @@ - break; - } - -+ if (prev == NULL) -+ { /* Switch statement has been optimized out. */ -+ delete_insn (PREV_INSN (insn)); -+ delete_insn (insn); -+ continue; -+ } -+ - /* Emit the reference label of the braf where it belongs, right after - the casesi_jump_2 (i.e. braf). */ - braf_label = XEXP (XEXP (SET_SRC (XVECEXP (prevpat, 0, 0)), 1), 0); -@@ -3223,7 +3272,7 @@ - rtx barrier_or_label; - { - rtx next = next_real_insn (barrier_or_label), pat, prev; -- int slot, credit, jump_to_next; -+ int slot, credit, jump_to_next = 0; - - if (! next) - return 0; -@@ -4507,7 +4556,8 @@ - if (current_function_varargs || current_function_stdarg) - { - /* This is not used by the SH3E calling convention */ -- if (TARGET_SH1 && ! TARGET_SH3E && ! TARGET_SH5 && ! TARGET_HITACHI) -+ if (TARGET_SH1 && ! TARGET_SH3E && ! TARGET_SH5 && ! TARGET_HITACHI -+ || TARGET_NO_IMPLICIT_FP) - { - /* Push arg regs as if they'd been provided by caller in stack. */ - for (i = 0; i < NPARM_REGS(SImode); i++) -@@ -5149,7 +5199,8 @@ - tree f_next_o, f_next_o_limit, f_next_fp, f_next_fp_limit, f_next_stack; - tree record; - -- if (TARGET_SH5 || (! TARGET_SH3E && ! TARGET_SH4) || TARGET_HITACHI) -+ if (TARGET_SH5 || (! TARGET_SH3E && ! TARGET_SH4) || TARGET_HITACHI -+ || TARGET_NO_IMPLICIT_FP) - return ptr_type_node; - - record = make_node (RECORD_TYPE); -@@ -5211,7 +5262,8 @@ - return; - } - -- if ((! TARGET_SH3E && ! TARGET_SH4) || TARGET_HITACHI) -+ if ((! TARGET_SH3E && ! TARGET_SH4) -+ || TARGET_HITACHI || TARGET_NO_IMPLICIT_FP) - { - std_expand_builtin_va_start (stdarg_p, valist, nextarg); - return; -@@ -5289,7 +5341,8 @@ - rsize = (size + UNITS_PER_WORD - 1) & -UNITS_PER_WORD; - pptr_type_node = build_pointer_type (ptr_type_node); - -- if (! TARGET_SH5 && (TARGET_SH3E || TARGET_SH4) && ! TARGET_HITACHI) -+ if (! TARGET_SH5 && (TARGET_SH3E || TARGET_SH4) -+ && ! TARGET_HITACHI && ! TARGET_NO_IMPLICIT_FP) - { - tree f_next_o, f_next_o_limit, f_next_fp, f_next_fp_limit, f_next_stack; - tree next_o, next_o_limit, next_fp, next_fp_limit, next_stack; -diff -ruN gcc-20030210.orig/gcc/config/sh/sh.h gcc-20030210/gcc/config/sh/sh.h ---- gcc-20030210.orig/gcc/config/sh/sh.h Fri Feb 22 01:42:28 2002 -+++ gcc-20030210/gcc/config/sh/sh.h Sat Feb 22 01:40:14 2003 -@@ -147,10 +147,10 @@ - #define HARD_SH4_BIT (1<<5) - #define FPU_SINGLE_BIT (1<<7) - #define SH4_BIT (1<<12) -+#define NO_IMPLICIT_FP_BIT (1<<3) - #define FMOVD_BIT (1<<4) - #define SH5_BIT (1<<0) - #define SPACE_BIT (1<<13) --#define BIGTABLE_BIT (1<<14) - #define RELAX_BIT (1<<15) - #define USERMODE_BIT (1<<16) - #define HITACHI_BIT (1<<22) -@@ -205,6 +205,9 @@ - /* Nonzero if we should generate code for a SH5 CPU (either ISA). */ - #define TARGET_SH5 (target_flags & SH5_BIT) - -+/* Nonzero if we should not use FPU implicitly. */ -+#define TARGET_NO_IMPLICIT_FP (target_flags & NO_IMPLICIT_FP_BIT) -+ - /* Nonzero if we should generate code using the SHcompact instruction - set and 32-bit ABI. */ - #define TARGET_SHCOMPACT (TARGET_SH5 && TARGET_SH1) -@@ -225,6 +228,7 @@ - - /* Nonzero if we should generate code using SHmedia FPU instructions. */ - #define TARGET_SHMEDIA_FPU (TARGET_SHMEDIA && TARGET_FPU_DOUBLE) -+ - /* Nonzero if we should generate fmovd. */ - #define TARGET_FMOVD (target_flags & FMOVD_BIT) - -@@ -234,9 +238,6 @@ - /* Nonzero if we should generate smaller code rather than faster code. */ - #define TARGET_SMALLCODE (target_flags & SPACE_BIT) - --/* Nonzero to use long jump tables. */ --#define TARGET_BIGTABLE (target_flags & BIGTABLE_BIT) -- - /* Nonzero to generate pseudo-ops needed by the assembler and linker - to do function call relaxing. */ - #define TARGET_RELAX (target_flags & RELAX_BIT) -@@ -297,7 +298,6 @@ - {"5-compact-nofpu", TARGET_NONE, "" }, \ - {"5-compact-nofpu", SH5_BIT|SH3_BIT|SH2_BIT|SH1_BIT, "Generate FPU-less SHcompact code" }, \ - {"b", -LITTLE_ENDIAN_BIT, "" }, \ -- {"bigtable", BIGTABLE_BIT, "" }, \ - {"dalign", DALIGN_BIT, "" }, \ - {"fmovd", FMOVD_BIT, "" }, \ - {"hitachi", HITACHI_BIT, "" }, \ -@@ -306,6 +306,7 @@ - {"isize", ISIZE_BIT, "" }, \ - {"l", LITTLE_ENDIAN_BIT, "" }, \ - {"no-ieee", -IEEE_BIT, "" }, \ -+ {"no-implicit-fp", NO_IMPLICIT_FP_BIT, "" }, \ - {"padstruct", PADSTRUCT_BIT, "" }, \ - {"prefergot", PREFERGOT_BIT, "" }, \ - {"relax", RELAX_BIT, "" }, \ -@@ -2493,16 +2494,22 @@ - goto LABEL; \ - } - -+extern int optimize; /* needed for gen_casesi. */ -+extern int optimize_size; -+ - /* Specify the machine mode that this machine uses - for the index in the tablejump instruction. */ --#define CASE_VECTOR_MODE (TARGET_BIGTABLE ? SImode : HImode) -+#define CASE_VECTOR_MODE SImode - - #define CASE_VECTOR_SHORTEN_MODE(MIN_OFFSET, MAX_OFFSET, BODY) \ - ((MIN_OFFSET) >= 0 && (MAX_OFFSET) <= 127 \ - ? (ADDR_DIFF_VEC_FLAGS (BODY).offset_unsigned = 0, QImode) \ - : (MIN_OFFSET) >= 0 && (MAX_OFFSET) <= 255 \ - ? (ADDR_DIFF_VEC_FLAGS (BODY).offset_unsigned = 1, QImode) \ -- : (MIN_OFFSET) >= -32768 && (MAX_OFFSET) <= 32767 ? HImode \ -+ : (MIN_OFFSET) >= -32768 && (MAX_OFFSET) <= 32767 \ -+ ? (ADDR_DIFF_VEC_FLAGS (BODY).offset_unsigned = 0, HImode) \ -+ : optimize_size && (MIN_OFFSET) >= 0 && (MAX_OFFSET) <= 65535 \ -+ ? (ADDR_DIFF_VEC_FLAGS (BODY).offset_unsigned = 1, HImode) \ - : SImode) - - /* Define as C expression which evaluates to nonzero if the tablejump -@@ -3038,10 +3045,7 @@ - /* Output an absolute table element. */ - - #define ASM_OUTPUT_ADDR_VEC_ELT(STREAM,VALUE) \ -- if (TARGET_BIGTABLE) \ -- asm_fprintf ((STREAM), "\t.long\t%LL%d\n", (VALUE)); \ -- else \ -- asm_fprintf ((STREAM), "\t.word\t%LL%d\n", (VALUE)); \ -+ asm_fprintf ((STREAM), "\t.long\t%LL%d\n", (VALUE)) - - /* Output various types of constants. */ - -@@ -3167,8 +3171,6 @@ - #define sh_cpu_attr ((enum attr_cpu)sh_cpu) - extern enum processor_type sh_cpu; - --extern int optimize; /* needed for gen_casesi. */ -- - enum mdep_reorg_phase_e - { - SH_BEFORE_MDEP_REORG, -diff -ruN gcc-20030210.orig/gcc/config/sh/sh.md gcc-20030210/gcc/config/sh/sh.md ---- gcc-20030210.orig/gcc/config/sh/sh.md Sat Nov 23 04:58:06 2002 -+++ gcc-20030210/gcc/config/sh/sh.md Sat Feb 22 01:40:14 2003 -@@ -1242,7 +1242,7 @@ - (clobber (reg:SI PR_REG)) - (clobber (reg:SI R4_REG)) - (use (match_operand:SI 1 "arith_reg_operand" "r"))] -- "TARGET_SH1 && ! TARGET_SH4" -+ "TARGET_SH1 && ! TARGET_SH4 || TARGET_NO_IMPLICIT_FP" - "jsr @%1%#" - [(set_attr "type" "sfunc") - (set_attr "needs_delay_slot" "yes")]) -@@ -1336,7 +1336,7 @@ - - operands[3] = gen_reg_rtx (Pmode); - /* Emit the move of the address to a pseudo outside of the libcall. */ -- if (TARGET_HARD_SH4 && TARGET_SH3E) -+ if (TARGET_HARD_SH4 && TARGET_SH3E && !TARGET_NO_IMPLICIT_FP) - { - emit_move_insn (operands[3], - gen_rtx_SYMBOL_REF (SImode, \"__udivsi3_i4\")); -@@ -1391,7 +1391,7 @@ - (clobber (reg:SI R2_REG)) - (clobber (reg:SI R3_REG)) - (use (match_operand:SI 1 "arith_reg_operand" "r"))] -- "TARGET_SH1 && ! TARGET_SH4" -+ "TARGET_SH1 && ! TARGET_SH4 || TARGET_NO_IMPLICIT_FP" - "jsr @%1%#" - [(set_attr "type" "sfunc") - (set_attr "needs_delay_slot" "yes")]) -@@ -1476,7 +1476,7 @@ - - operands[3] = gen_reg_rtx (Pmode); - /* Emit the move of the address to a pseudo outside of the libcall. */ -- if (TARGET_HARD_SH4 && TARGET_SH3E) -+ if (TARGET_HARD_SH4 && TARGET_SH3E && !TARGET_NO_IMPLICIT_FP) - { - emit_move_insn (operands[3], - gen_rtx_SYMBOL_REF (SImode, \"__sdivsi3_i4\")); -@@ -6446,6 +6446,8 @@ - case SImode: - return \"shll2 %1\;mov.l @(r0,%1),%0\"; - case HImode: -+ if (ADDR_DIFF_VEC_FLAGS (diff_vec).offset_unsigned) -+ return \"add %1,%1\;mov.w @(r0,%1),%0\;extu.w %0,%0\"; - return \"add %1,%1\;mov.w @(r0,%1),%0\"; - case QImode: - if (ADDR_DIFF_VEC_FLAGS (diff_vec).offset_unsigned) -@@ -6455,7 +6457,15 @@ - abort (); - } - }" -- [(set_attr "length" "4")]) -+ [(set (attr "length") -+ (cond [(eq (symbol_ref "shl_casesi_worker_length (insn)") (const_int 1)) -+ (const_string "2") -+ (eq (symbol_ref "shl_casesi_worker_length (insn)") (const_int 2)) -+ (const_string "4") -+ ;; Put "match_dup" here so that insn_variable_length_p return 1. -+ (ne (match_dup 2) (match_dup 2)) -+ (const_string "4")] -+ (const_string "6")))]) - - (define_insn "casesi_shift_media" - [(set (match_operand 0 "arith_reg_operand" "=r") -diff -ruN gcc-20030210.orig/gcc/config/sh/sh3-linux.h gcc-20030210/gcc/config/sh/sh3-linux.h ---- gcc-20030210.orig/gcc/config/sh/sh3-linux.h Thu Jan 1 09:00:00 1970 -+++ gcc-20030210/gcc/config/sh/sh3-linux.h Sat Feb 22 01:40:14 2003 -@@ -0,0 +1,29 @@ -+#undef TARGET_VERSION -+#define TARGET_VERSION fputs (" (SH3 GNU/Linux with ELF)", stderr); -+ -+#undef CPP_SPEC -+#define CPP_SPEC \ -+ "-D__LITTLE_ENDIAN__ \ -+ -D__SH3__ -D__sh3__ \ -+ -D__SIZE_TYPE__=unsigned\\ int \ -+ -D__PTRDIFF_TYPE__=int \ -+ %{fPIC:-D__PIC__ -D__pic__} \ -+ %{fpic:-D__PIC__ -D__pic__} \ -+ %{posix:-D_POSIX_SOURCE} \ -+ %{pthread:-D_REENTRANT -D_PTHREADS}" -+ -+#undef ASM_SPEC -+#define ASM_SPEC "%{mrelax:-relax}" -+ -+#undef CC1_SPEC -+#define CC1_SPEC \ -+ "-musermode -ml -m3 %{profile:-p}" -+ -+#undef LINK_SPEC -+#define LINK_SPEC \ -+ "%{mrelax:-relax} \ -+ %{shared:-shared} \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{static:-static}" -diff -ruN gcc-20030210.orig/gcc/config/sh/sh3eb-linux.h gcc-20030210/gcc/config/sh/sh3eb-linux.h ---- gcc-20030210.orig/gcc/config/sh/sh3eb-linux.h Thu Jan 1 09:00:00 1970 -+++ gcc-20030210/gcc/config/sh/sh3eb-linux.h Sat Feb 22 01:40:14 2003 -@@ -0,0 +1,29 @@ -+#undef TARGET_VERSION -+#define TARGET_VERSION fputs (" (SH3EB GNU/Linux with ELF)", stderr); -+ -+#undef CPP_SPEC -+#define CPP_SPEC \ -+ "-D__BIG_ENDIAN__ \ -+ -D__SH3__ -D__sh3__ \ -+ -D__SIZE_TYPE__=unsigned\\ int \ -+ -D__PTRDIFF_TYPE__=int \ -+ %{fPIC:-D__PIC__ -D__pic__} \ -+ %{fpic:-D__PIC__ -D__pic__} \ -+ %{posix:-D_POSIX_SOURCE} \ -+ %{pthread:-D_REENTRANT -D_PTHREADS}" -+ -+#undef ASM_SPEC -+#define ASM_SPEC "%{mrelax:-relax}" -+ -+#undef CC1_SPEC -+#define CC1_SPEC \ -+ "-musermode -mb -m3 %{profile:-p}" -+ -+#undef LINK_SPEC -+#define LINK_SPEC \ -+ "%{mrelax:-relax} \ -+ %{shared:-shared} \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{static:-static}" -diff -ruN gcc-20030210.orig/gcc/config/sh/sh4-linux.h gcc-20030210/gcc/config/sh/sh4-linux.h ---- gcc-20030210.orig/gcc/config/sh/sh4-linux.h Thu Jan 1 09:00:00 1970 -+++ gcc-20030210/gcc/config/sh/sh4-linux.h Sat Feb 22 01:40:14 2003 -@@ -0,0 +1,29 @@ -+#undef TARGET_VERSION -+#define TARGET_VERSION fputs (" (SH4 GNU/Linux with ELF)", stderr); -+ -+#undef CPP_SPEC -+#define CPP_SPEC \ -+ "-D__LITTLE_ENDIAN__ \ -+ -D__SH4__ \ -+ -D__SIZE_TYPE__=unsigned\\ int \ -+ -D__PTRDIFF_TYPE__=int \ -+ %{fPIC:-D__PIC__ -D__pic__} \ -+ %{fpic:-D__PIC__ -D__pic__} \ -+ %{posix:-D_POSIX_SOURCE} \ -+ %{pthread:-D_REENTRANT -D_PTHREADS}" -+ -+#undef ASM_SPEC -+#define ASM_SPEC "%{mrelax:-relax}" -+ -+#undef CC1_SPEC -+#define CC1_SPEC \ -+ "-musermode -ml -m4 %{profile:-p}" -+ -+#undef LINK_SPEC -+#define LINK_SPEC \ -+ "%{mrelax:-relax} \ -+ %{shared:-shared} \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{static:-static}" -diff -ruN gcc-20030210.orig/gcc/config/sh/sh4eb-linux.h gcc-20030210/gcc/config/sh/sh4eb-linux.h ---- gcc-20030210.orig/gcc/config/sh/sh4eb-linux.h Thu Jan 1 09:00:00 1970 -+++ gcc-20030210/gcc/config/sh/sh4eb-linux.h Sat Feb 22 01:40:14 2003 -@@ -0,0 +1,29 @@ -+#undef TARGET_VERSION -+#define TARGET_VERSION fputs (" (SH4EB GNU/Linux with ELF)", stderr); -+ -+#undef CPP_SPEC -+#define CPP_SPEC \ -+ "-D__BIG_ENDIAN__ \ -+ -D__SH4__ \ -+ -D__SIZE_TYPE__=unsigned\\ int \ -+ -D__PTRDIFF_TYPE__=int \ -+ %{fPIC:-D__PIC__ -D__pic__} \ -+ %{fpic:-D__PIC__ -D__pic__} \ -+ %{posix:-D_POSIX_SOURCE} \ -+ %{pthread:-D_REENTRANT -D_PTHREADS}" -+ -+#undef ASM_SPEC -+#define ASM_SPEC "%{mrelax:-relax}" -+ -+#undef CC1_SPEC -+#define CC1_SPEC \ -+ "-musermode -mb -m4 %{profile:-p}" -+ -+#undef LINK_SPEC -+#define LINK_SPEC \ -+ "%{mrelax:-relax} \ -+ %{shared:-shared} \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{static:-static}" -diff -ruN gcc-20030210.orig/gcc/config/sh/t-linux gcc-20030210/gcc/config/sh/t-linux ---- gcc-20030210.orig/gcc/config/sh/t-linux Thu May 17 12:16:12 2001 -+++ gcc-20030210/gcc/config/sh/t-linux Sat Feb 22 01:40:14 2003 -@@ -1,10 +1,20 @@ --TARGET_LIBGCC2_CFLAGS = -fpic -+TARGET_LIBGCC2_CFLAGS = -fpic -DNO_FPSCR_VALUES -+LIBGCC1 = libgcc1-asm.a -+CROSS_LIBGCC1 = libgcc1-asm.a -+LIBGCC1_TEST = libgcc1-test - LIB1ASMFUNCS = _ashiftrt _ashiftrt_n _ashiftlt _lshiftrt _movstr \ - _movstr_i4 _mulsi3 _sdivsi3 _sdivsi3_i4 _udivsi3 _udivsi3_i4 _set_fpscr \ - _ic_invalidate -+LIB2ADDEH = $(srcdir)/unwind-sjlj.c -+LIB2ADDEHDEP = unwind.inc unwind-sjlj.c - --MULTILIB_OPTIONS= mb m3e/m4 -+MULTILIB_OPTIONS= mb m4 - MULTILIB_DIRNAMES= - MULTILIB_MATCHES = - --EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o crtbeginS.o crtendS.o -+EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o -+ -+# Override t-slibgcc-elf-ver to export some libgcc symbols with -+# the symbol versions that glibc used and SH specific. -+SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver \ -+ $(srcdir)/config/sh/libgcc-glibc.ver -diff -ruN gcc-20030210.orig/gcc/config/sh/t-linux-nomulti gcc-20030210/gcc/config/sh/t-linux-nomulti ---- gcc-20030210.orig/gcc/config/sh/t-linux-nomulti Thu Jan 1 09:00:00 1970 -+++ gcc-20030210/gcc/config/sh/t-linux-nomulti Sat Feb 22 01:40:14 2003 -@@ -0,0 +1,9 @@ -+LIBGCC = libgcc.a -+EXTRA_PARTS = crtbegin.o crtbeginS.o crtend.o crtendS.o crtbeginT.o -+ -+INSTALL_LIBGCC = install-libgcc -+ -+MULTILIB_OPTIONS= -+MULTILIB_DIRNAMES= -+MULTILIB_MATCHES = -+EXTRA_MULTILIB_PARTS= -diff -ruN gcc-20030210.orig/gcc/config.gcc gcc-20030210/gcc/config.gcc ---- gcc-20030210.orig/gcc/config.gcc Fri Jan 31 19:17:13 2003 -+++ gcc-20030210/gcc/config.gcc Sat Feb 22 01:40:14 2003 -@@ -337,9 +337,9 @@ - sparc*-*-*) - cpu_type=sparc - ;; --sh64-*-*) -- cpu_type=sh -- ;; -+sh*-*-*) -+ cpu_type=sh -+ ;; - esac - - tm_file=${cpu_type}/${cpu_type}.h -@@ -3018,9 +3018,31 @@ - thread_file='rtems' - fi - ;; --sh-*-linux*) -+sh*-*-linux*) - tm_file="${tm_file} sh/elf.h sh/linux.h" -- tmake_file="sh/t-sh sh/t-elf sh/t-linux" -+ tmake_file="sh/t-sh sh/t-elf t-slibgcc-elf-ver t-linux sh/t-linux" -+ extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o" -+ case $machine in -+ sh3eb-*) -+ tm_file="${tm_file} sh/sh3eb-linux.h" -+ tmake_file="${tmake_file} sh/t-linux-nomulti" -+ ;; -+ sh4eb-*) -+ tm_file="${tm_file} sh/sh4eb-linux.h" -+ tmake_file="${tmake_file} sh/t-linux-nomulti" -+ ;; -+ sh3-*) -+ tm_file="${tm_file} sh/sh3-linux.h" -+ tmake_file="${tmake_file} sh/t-linux-nomulti" -+ ;; -+ sh4-*) -+ tm_file="${tm_file} sh/sh4-linux.h" -+ tmake_file="${tmake_file} sh/t-linux-nomulti" -+ ;; -+ *) -+ ;; -+ esac -+ xmake_file=x-linux - gas=yes gnu_ld=yes - float_format=sh - ;; -diff -ruN gcc-20030210.orig/gcc/dwarf2out.c gcc-20030210/gcc/dwarf2out.c ---- gcc-20030210.orig/gcc/dwarf2out.c Mon Feb 10 19:36:25 2003 -+++ gcc-20030210/gcc/dwarf2out.c Sat Feb 22 01:40:14 2003 -@@ -10224,7 +10224,9 @@ - /* We can have a normal definition following an inline one in the - case of redefinition of GNU C extern inlines. - It seems reasonable to use AT_specification in this case. */ -- && !get_AT_unsigned (old_die, DW_AT_inline)) -+ && !get_AT_unsigned (old_die, DW_AT_inline) -+ /* Skip the nested function. */ -+ && !decl_function_context (decl)) - { - /* ??? This can happen if there is a bug in the program, for - instance, if it has duplicate function definitions. Ideally, -diff -ruN gcc-20030210.orig/gcc/final.c gcc-20030210/gcc/final.c ---- gcc-20030210.orig/gcc/final.c Fri Jan 31 19:17:20 2003 -+++ gcc-20030210/gcc/final.c Sat Feb 22 01:40:14 2003 -@@ -1128,7 +1128,7 @@ - } - } - -- INSN_ADDRESSES (uid) = insn_current_address; -+ INSN_ADDRESSES (uid) = insn_current_address + insn_lengths[uid]; - - if (GET_CODE (insn) == NOTE || GET_CODE (insn) == BARRIER - || GET_CODE (insn) == CODE_LABEL) -diff -ruN gcc-20030210.orig/gcc/mkmap-symver.awk gcc-20030210/gcc/mkmap-symver.awk ---- gcc-20030210.orig/gcc/mkmap-symver.awk Fri Jan 31 19:17:26 2003 -+++ gcc-20030210/gcc/mkmap-symver.awk Sat Feb 22 01:40:14 2003 -@@ -89,7 +89,11 @@ - output(inherit[lib]); - - printf("%s {\n", lib); -- printf(" global:\n"); -+ for (sym in ver) -+ if ((ver[sym] == lib) && (sym in def)) -+ count++; -+ if (count > 0) -+ printf(" global:\n"); - for (sym in ver) - if ((ver[sym] == lib) && (sym in def)) - { -diff -ruN gcc-20030210.orig/gcc/reload1.c gcc-20030210/gcc/reload1.c ---- gcc-20030210.orig/gcc/reload1.c Fri Jan 31 19:17:29 2003 -+++ gcc-20030210/gcc/reload1.c Sat Feb 22 01:40:14 2003 -@@ -6103,6 +6103,7 @@ - for (j = 0; j < n_reloads; j++) - if (rld[j].in != 0 - && rld[j].when_needed != RELOAD_OTHER -+ && rld[j].when_needed != RELOAD_FOR_OUTPUT_ADDRESS - && reg_overlap_mentioned_for_reload_p (rld[j].in, - rld[i].in)) - rld[j].when_needed -diff -ruN gcc-20030210.orig/gcc/reorg.c gcc-20030210/gcc/reorg.c ---- gcc-20030210.orig/gcc/reorg.c Fri Jan 31 19:17:30 2003 -+++ gcc-20030210/gcc/reorg.c Sat Feb 22 01:40:14 2003 -@@ -3265,6 +3265,14 @@ - || condjump_in_parallel_p (XVECEXP (PATTERN (insn), 0, 0)))) - continue; - -+#ifdef MD_CAN_REDIRECT_BRANCH -+ /* On some targets, branches with delay slots can have a limited -+ displacement. Give the back end a chance to tell us we can't do -+ this. */ -+ if (! MD_CAN_REDIRECT_BRANCH (insn, delay_insn)) -+ continue; -+#endif -+ - target_label = JUMP_LABEL (delay_insn); - - if (target_label) -diff -ruN gcc-20030210.orig/gcc/tree-inline.c gcc-20030210/gcc/tree-inline.c ---- gcc-20030210.orig/gcc/tree-inline.c Fri Jan 31 19:17:33 2003 -+++ gcc-20030210/gcc/tree-inline.c Sat Feb 22 01:40:14 2003 -@@ -836,11 +836,17 @@ - - /* Don't try to inline functions that are not well-suited to - inlining. */ -- if (!inlinable_function_p (fn, id)) -- return NULL_TREE; -+ if (! inlinable_function_p (fn, id) -+ || ! (*lang_hooks.tree_inlining.start_inlining) (fn)) -+ { -+ if (DECL_INLINE (fn) && warn_inline && ! flag_really_no_inline) -+ { -+ warning_with_decl (fn, "inlining failed in call to `%s'"); -+ warning ("called from here"); -+ } - -- if (! (*lang_hooks.tree_inlining.start_inlining) (fn)) -- return NULL_TREE; -+ return NULL_TREE; -+ } - - /* Set the current filename and line number to the function we are - inlining so that when we create new _STMT nodes here they get -diff -ruN gcc-20030210.orig/libjava/Makefile.in gcc-20030210/libjava/Makefile.in ---- gcc-20030210.orig/libjava/Makefile.in Tue Jan 28 10:44:37 2003 -+++ gcc-20030210/libjava/Makefile.in Sat Feb 22 01:40:14 2003 -@@ -1637,6 +1637,7 @@ - "AS=$(AS)" \ - "CC=$(CC)" \ - "CXX=$(CXX)" \ -+ "GCJ=$(GCJ)" \ - "LD=$(LD)" \ - "LIBCFLAGS=$(LIBCFLAGS)" \ - "NM=$(NM)" \ -diff -ruN gcc-20030210.orig/libjava/configure gcc-20030210/libjava/configure ---- gcc-20030210.orig/libjava/configure Tue Jan 28 10:44:37 2003 -+++ gcc-20030210/libjava/configure Sat Feb 22 01:42:11 2003 -@@ -2031,7 +2031,7 @@ - # This must be Linux ELF. - linux-gnu*) - case $host_cpu in -- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* ) -+ alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh* ) - lt_cv_deplibs_check_method=pass_all ;; - *) - # glibc up to 2.1.1 does not perform some relocations on ARM -diff -ruN gcc-20030210.orig/libjava/java/net/natInetAddress.cc gcc-20030210/libjava/java/net/natInetAddress.cc ---- gcc-20030210.orig/libjava/java/net/natInetAddress.cc Tue Mar 5 05:02:19 2002 -+++ gcc-20030210/libjava/java/net/natInetAddress.cc Sat Feb 22 01:40:14 2003 -@@ -56,7 +56,7 @@ - #endif - - #ifndef HAVE_GETHOSTNAME_DECL --extern "C" int gethostname (char *name, int namelen); -+extern "C" int gethostname (char *name, unsigned int namelen); - #endif - - #ifdef DISABLE_JAVA_NET -diff -ruN gcc-20030210.orig/libjava/libltdl/aclocal.m4 gcc-20030210/libjava/libltdl/aclocal.m4 ---- gcc-20030210.orig/libjava/libltdl/aclocal.m4 Sun Sep 10 17:04:40 2000 -+++ gcc-20030210/libjava/libltdl/aclocal.m4 Sat Feb 22 01:40:14 2003 -@@ -573,7 +573,7 @@ - # This must be Linux ELF. - linux-gnu*) - case "$host_cpu" in -- alpha* | i*86 | powerpc* | sparc* | ia64* ) -+ alpha* | i*86 | powerpc* | sparc* | ia64* | sh*) - lt_cv_deplibs_check_method=pass_all ;; - *) - # glibc up to 2.1.1 does not perform some relocations on ARM -diff -ruN gcc-20030210.orig/libjava/sysdep/sh/locks.h gcc-20030210/libjava/sysdep/sh/locks.h ---- gcc-20030210.orig/libjava/sysdep/sh/locks.h Thu Jan 1 09:00:00 1970 -+++ gcc-20030210/libjava/sysdep/sh/locks.h Sat Feb 22 01:40:14 2003 -@@ -0,0 +1,72 @@ -+// locks.h - Thread synchronization primitives. SuperH implementation. -+ -+/* Copyright (C) 2002 Free Software Foundation -+ -+ This file is part of libgcj. -+ -+This software is copyrighted work licensed under the terms of the -+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for -+details. */ -+ -+#ifndef __SYSDEP_LOCKS_H__ -+#define __SYSDEP_LOCKS_H__ -+ -+typedef size_t obj_addr_t; /* Integer type big enough for object */ -+ /* address. */ -+ -+static unsigned char __cas_lock = 0; -+ -+inline static void -+__cas_start_atomic (void) -+{ -+ unsigned int val; -+ -+ do -+ __asm__ __volatile__ ("tas.b @%1; movt %0" -+ : "=r" (val) -+ : "r" (&__cas_lock) -+ : "memory"); -+ while (val == 0); -+} -+ -+inline static void -+__cas_end_atomic (void) -+{ -+ __asm__ __volatile__ (" " : : : "memory"); -+ __cas_lock = 0; -+} -+ -+inline static bool -+compare_and_swap (volatile obj_addr_t *addr, obj_addr_t old, -+ obj_addr_t new_val) -+{ -+ bool ret; -+ -+ __cas_start_atomic (); -+ if (*addr != old) -+ ret = false; -+ else -+ { -+ *addr = new_val; -+ ret = true; -+ } -+ __cas_end_atomic (); -+ -+ return ret; -+} -+ -+inline static void -+release_set (volatile obj_addr_t *addr, obj_addr_t new_val) -+{ -+ __asm__ __volatile__ (" " : : : "memory"); -+ *(addr) = new_val; -+} -+ -+inline static bool -+compare_and_swap_release (volatile obj_addr_t *addr, obj_addr_t old, -+ obj_addr_t new_val) -+{ -+ return compare_and_swap (addr, old, new_val); -+} -+ -+#endif /* ! __SYSDEP_LOCKS_H__ */ -diff -ruN gcc-20030210.orig/libstdc++-v3/acinclude.m4 gcc-20030210/libstdc++-v3/acinclude.m4 ---- gcc-20030210.orig/libstdc++-v3/acinclude.m4 Tue Jan 28 02:30:41 2003 -+++ gcc-20030210/libstdc++-v3/acinclude.m4 Sat Feb 22 01:40:14 2003 -@@ -1828,9 +1828,10 @@ - GLIBCPP_INCLUDES="-I${glibcpp_builddir}/include/${target_alias} -I${glibcpp_builddir}/include" - - # Passed down for canadian crosses. -- if test x"$CANADIAN" = xyes; then -- TOPLEVEL_INCLUDES='-I$(includedir)' -- fi -+ #if test x"$CANADIAN" = xyes; then -+ # TOPLEVEL_INCLUDES='-I$(includedir)' -+ #fi -+ TOPLEVEL_INCLUDES='' - - LIBMATH_INCLUDES='-I$(top_srcdir)/libmath' - -diff -ruN gcc-20030210.orig/libstdc++-v3/aclocal.m4 gcc-20030210/libstdc++-v3/aclocal.m4 ---- gcc-20030210.orig/libstdc++-v3/aclocal.m4 Mon Feb 10 19:36:47 2003 -+++ gcc-20030210/libstdc++-v3/aclocal.m4 Sat Feb 22 01:40:14 2003 -@@ -1840,9 +1840,10 @@ - GLIBCPP_INCLUDES="-I${glibcpp_builddir}/include/${target_alias} -I${glibcpp_builddir}/include" - - # Passed down for canadian crosses. -- if test x"$CANADIAN" = xyes; then -- TOPLEVEL_INCLUDES='-I$(includedir)' -- fi -+ #if test x"$CANADIAN" = xyes; then -+ # TOPLEVEL_INCLUDES='-I$(includedir)' -+ #fi -+ TOPLEVEL_INCLUDES='' - - LIBMATH_INCLUDES='-I$(top_srcdir)/libmath' - -diff -ruN gcc-20030210.orig/libstdc++-v3/configure gcc-20030210/libstdc++-v3/configure ---- gcc-20030210.orig/libstdc++-v3/configure Mon Feb 10 19:37:17 2003 -+++ gcc-20030210/libstdc++-v3/configure Sat Feb 22 01:40:14 2003 -@@ -1982,7 +1982,7 @@ - # This must be Linux ELF. - linux-gnu*) - case $host_cpu in -- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* ) -+ alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh*) - lt_cv_deplibs_check_method=pass_all ;; - *) - # glibc up to 2.1.1 does not perform some relocations on ARM -@@ -22340,9 +22340,10 @@ - GLIBCPP_INCLUDES="-I${glibcpp_builddir}/include/${target_alias} -I${glibcpp_builddir}/include" - - # Passed down for canadian crosses. -- if test x"$CANADIAN" = xyes; then -- TOPLEVEL_INCLUDES='-I$(includedir)' -- fi -+ #if test x"$CANADIAN" = xyes; then -+ # TOPLEVEL_INCLUDES='-I$(includedir)' -+ #fi -+ TOPLEVEL_INCLUDES='' - - LIBMATH_INCLUDES='-I$(top_srcdir)/libmath' - -diff -ruN gcc-20030210.orig/libtool.m4 gcc-20030210/libtool.m4 ---- gcc-20030210.orig/libtool.m4 Fri Jan 31 19:16:59 2003 -+++ gcc-20030210/libtool.m4 Sat Feb 22 01:40:14 2003 -@@ -597,7 +597,7 @@ - # This must be Linux ELF. - linux-gnu*) - case $host_cpu in -- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* ) -+ alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh* ) - lt_cv_deplibs_check_method=pass_all ;; - *) - # glibc up to 2.1.1 does not perform some relocations on ARM -diff -ruN gcc-20030210.orig/zlib/configure gcc-20030210/zlib/configure ---- gcc-20030210.orig/zlib/configure Tue Jan 28 10:44:15 2003 -+++ gcc-20030210/zlib/configure Sat Feb 22 01:40:14 2003 -@@ -1571,7 +1571,7 @@ - # This must be Linux ELF. - linux-gnu*) - case $host_cpu in -- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* ) -+ alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh* ) - lt_cv_deplibs_check_method=pass_all ;; - *) - # glibc up to 2.1.1 does not perform some relocations on ARM