patches/gcc/3.2.3/gcc-20030210-sh-linux-1.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat Feb 24 11:00:05 2007 +0000 (2007-02-24)
changeset 1 eeea35fbf182
permissions -rw-r--r--
Add the full crosstool-NG sources to the new repository of its own.
You might just say: 'Yeah! crosstool-NG's got its own repo!".
Unfortunately, that's because the previous repo got damaged beyond repair and I had no backup.
That means I'm putting backups in place in the afternoon.
That also means we've lost history... :-(
yann@1
     1
diff -ruN gcc-20030210.orig/boehm-gc/configure gcc-20030210/boehm-gc/configure
yann@1
     2
--- gcc-20030210.orig/boehm-gc/configure	Fri Jan 31 19:17:00 2003
yann@1
     3
+++ gcc-20030210/boehm-gc/configure	Sat Feb 22 01:40:14 2003
yann@1
     4
@@ -1922,7 +1922,7 @@
yann@1
     5
 # This must be Linux ELF.
yann@1
     6
 linux-gnu*)
yann@1
     7
   case $host_cpu in
yann@1
     8
-  alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* )
yann@1
     9
+  alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh* )
yann@1
    10
     lt_cv_deplibs_check_method=pass_all ;;
yann@1
    11
   *)
yann@1
    12
     # glibc up to 2.1.1 does not perform some relocations on ARM
yann@1
    13
diff -ruN gcc-20030210.orig/config-ml.in gcc-20030210/config-ml.in
yann@1
    14
--- gcc-20030210.orig/config-ml.in	Fri Jan 31 19:16:59 2003
yann@1
    15
+++ gcc-20030210/config-ml.in	Sat Feb 22 01:40:14 2003
yann@1
    16
@@ -545,6 +545,7 @@
yann@1
    17
 	      if [ -d ../$${dir}/$${lib} ]; then \
yann@1
    18
 		flags=`echo $$i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \
yann@1
    19
 		if (cd ../$${dir}/$${lib}; $(MAKE) $(FLAGS_TO_PASS) \
yann@1
    20
+				DESTDIR="$(DESTDIR)" \
yann@1
    21
 				CFLAGS="$(CFLAGS) $${flags}" \
yann@1
    22
 				prefix="$(prefix)" \
yann@1
    23
 				exec_prefix="$(exec_prefix)" \
yann@1
    24
diff -ruN gcc-20030210.orig/debian/edit-specs.in gcc-20030210/debian/edit-specs.in
yann@1
    25
--- gcc-20030210.orig/debian/edit-specs.in	Thu Jan  1 09:00:00 1970
yann@1
    26
+++ gcc-20030210/debian/edit-specs.in	Sat Feb 22 01:40:14 2003
yann@1
    27
@@ -0,0 +1,45 @@
yann@1
    28
+/^*asm:$/ {
yann@1
    29
+n
yann@1
    30
+c\
yann@1
    31
+@AS_ENDIAN_FLAG@ %{mrelax:-relax}
yann@1
    32
+}
yann@1
    33
+/^*cpp:$/ {
yann@1
    34
+n
yann@1
    35
+c\
yann@1
    36
+%(cpp_default_cpu_spec)    %(subtarget_cpp_spec)    %(subtarget_cpp_ptr_spec)    %(subtarget_cpp_endian_spec)
yann@1
    37
+}
yann@1
    38
+/^*cc1:$/ {
yann@1
    39
+n
yann@1
    40
+c\
yann@1
    41
+-musermode @CC1_CPU_ENDIAN_FLAGS@  %{profile:-p}
yann@1
    42
+}
yann@1
    43
+/^*link:$/ {
yann@1
    44
+n
yann@1
    45
+c\
yann@1
    46
+%{!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}
yann@1
    47
+}
yann@1
    48
+/^*multilib:$/ {
yann@1
    49
+n
yann@1
    50
+c\
yann@1
    51
+. ;
yann@1
    52
+}
yann@1
    53
+/^*multilib_matches:$/ {
yann@1
    54
+n
yann@1
    55
+c\
yann@1
    56
+
yann@1
    57
+}
yann@1
    58
+/^*multilib_options:$/ {
yann@1
    59
+n
yann@1
    60
+c\
yann@1
    61
+
yann@1
    62
+}
yann@1
    63
+/^*subtarget_cpp_endian_spec:$/ {
yann@1
    64
+n
yann@1
    65
+c\
yann@1
    66
+@CPP_ENDIAN_DEF@
yann@1
    67
+}
yann@1
    68
+/^*cpp_default_cpu_spec:$/ {
yann@1
    69
+n
yann@1
    70
+c\
yann@1
    71
+@CPP_CPU_DEFS@
yann@1
    72
+}
yann@1
    73
diff -ruN gcc-20030210.orig/debian/install-CPU-linux gcc-20030210/debian/install-CPU-linux
yann@1
    74
--- gcc-20030210.orig/debian/install-CPU-linux	Thu Jan  1 09:00:00 1970
yann@1
    75
+++ gcc-20030210/debian/install-CPU-linux	Sat Feb 22 01:40:14 2003
yann@1
    76
@@ -0,0 +1,111 @@
yann@1
    77
+#! /bin/sh
yann@1
    78
+
yann@1
    79
+VERSION=$1; shift
yann@1
    80
+CPU=$1
yann@1
    81
+
yann@1
    82
+# literally (binary-ly) same
yann@1
    83
+PROGS_C="cpp gcc"
yann@1
    84
+PROGS_ADDITIONAL="c++ g++ g77 gcj"
yann@1
    85
+
yann@1
    86
+DRIVERS_C="cc1 cpp0 tradcpp0"
yann@1
    87
+DRIVERS_ADDITIONAL="cc1obj cc1plus collect2 f771 jc1 jvgenmain"
yann@1
    88
+if [ -z "$STEP1_COMPILER_BUILD" ]; then
yann@1
    89
+  PROGS="$PROGS_C $PROGS_ADDITIONAL"
yann@1
    90
+  DRIVERS="$DRIVERS_C $DRIVERSADDITIONAL"
yann@1
    91
+  INITIAL=""
yann@1
    92
+else
yann@1
    93
+  PROGS=$PROGS_C
yann@1
    94
+  DRIVERS=$DRIVERS_C
yann@1
    95
+  INITIAL="-initial"
yann@1
    96
+fi
yann@1
    97
+
yann@1
    98
+OBJS="crtbegin.o crtbeginS.o crtend.o crtendS.o"
yann@1
    99
+LIBS_C="libgcc.a"
yann@1
   100
+LIBS_1="libgcc_s.so libgcc_s.so.1 libstdc++.so libstdc++.so.3 libstdc++.so.3.0.2"
yann@1
   101
+LIBS_2="libobjc.a libstdc++.a libsupc++.a"
yann@1
   102
+INCLUDE="include"
yann@1
   103
+
yann@1
   104
+cd debian/gcc-sh-linux-others${INITIAL} || exit 1
yann@1
   105
+
yann@1
   106
+# Make directories.
yann@1
   107
+mkdir -p usr/bin usr/share usr/share/man usr/share/man/man1 usr/lib \
yann@1
   108
+	 usr/lib/gcc-lib usr/lib/gcc-lib/${CPU}-linux \
yann@1
   109
+	 usr/lib/gcc-lib/${CPU}-linux/${VERSION} \
yann@1
   110
+	 usr/${CPU}-linux usr/${CPU}-linux/lib
yann@1
   111
+
yann@1
   112
+# Make symbolic links for include dir.
yann@1
   113
+(cd usr/${CPU}-linux; ln -s ../sh-linux/include .)
yann@1
   114
+
yann@1
   115
+# Make symbolic links for executables.
yann@1
   116
+(cd usr/bin;
yann@1
   117
+  for p in ${PROGS}; do
yann@1
   118
+    ln -s shCPU-linux-GCC ${CPU}-linux-$p
yann@1
   119
+  done)
yann@1
   120
+
yann@1
   121
+case "${CPU}" in
yann@1
   122
+    sh3)
yann@1
   123
+	MULTILIBDIR=
yann@1
   124
+	AS_ENDIAN_FLAG="-little"
yann@1
   125
+	CPP_ENDIAN_DEF="-D__LITTLE_ENDIAN__"
yann@1
   126
+	CPP_CPU_DEFS="-D__SH3__ -D__sh3__"
yann@1
   127
+	CC1_CPU_ENDIAN_FLAGS="-ml -m3"
yann@1
   128
+	LINKER_CPU_ENDIAN_FLAGS="-m shlelf_linux -EL --architecture sh3"
yann@1
   129
+	LINKER_RPATH_LINK_FLAG="-rpath-link /usr/sh3-linux/lib"
yann@1
   130
+    ;;
yann@1
   131
+    sh3eb)
yann@1
   132
+	MULTILIBDIR=/mb
yann@1
   133
+	AS_ENDIAN_FLAG="-big"
yann@1
   134
+	CPP_ENDIAN_DEF="-D__BIG_ENDIAN__"
yann@1
   135
+	CPP_CPU_DEFS="-D__SH3__ -D__sh3__"
yann@1
   136
+	CC1_CPU_ENDIAN_FLAGS="-mb -m3"
yann@1
   137
+	LINKER_CPU_ENDIAN_FLAGS="-m shelf_linux -EB --architecture sh3"
yann@1
   138
+	LINKER_RPATH_LINK_FLAG="-rpath-link /usr/sh3eb-linux/lib"
yann@1
   139
+    ;;
yann@1
   140
+    sh4)
yann@1
   141
+	MULTILIBDIR=/m4
yann@1
   142
+	AS_ENDIAN_FLAG="-little"
yann@1
   143
+	CPP_ENDIAN_DEF="-D__LITTLE_ENDIAN__"
yann@1
   144
+	CPP_CPU_DEFS="-D__SH4__"
yann@1
   145
+	CC1_CPU_ENDIAN_FLAGS="-ml -m4"
yann@1
   146
+	LINKER_CPU_ENDIAN_FLAGS="-m shlelf_linux -EL --architecture sh4"
yann@1
   147
+	LINKER_RPATH_LINK_FLAG="-rpath-link /usr/sh4-linux/lib"
yann@1
   148
+    ;;
yann@1
   149
+    sh4eb)
yann@1
   150
+	MULTILIBDIR=/mb/m4
yann@1
   151
+	AS_ENDIAN_FLAG="-big"
yann@1
   152
+	CPP_ENDIAN_DEF="-D__BIG_ENDIAN__"
yann@1
   153
+	CPP_CPU_DEFS="-D__SH4__"
yann@1
   154
+	CC1_CPU_ENDIAN_FLAGS="-mb -m4"
yann@1
   155
+	LINKER_CPU_ENDIAN_FLAGS="-m shelf_linux -EB --architecture sh4"
yann@1
   156
+	LINKER_RPATH_LINK_FLAG="-rpath-link /usr/sh4eb-linux/lib"
yann@1
   157
+    ;;
yann@1
   158
+esac
yann@1
   159
+
yann@1
   160
+# Make symbolic links for GCC drivers, objects, libraries, and include dir.
yann@1
   161
+(cd usr/lib/gcc-lib/${CPU}-linux/${VERSION};
yann@1
   162
+ for f in ${DRIVERS} ${INCLUDE}; do
yann@1
   163
+    ln -s ../../sh-linux/${VERSION}/$f $f;
yann@1
   164
+ done
yann@1
   165
+ for f in ${OBJS} ${LIBS_C}; do
yann@1
   166
+    ln -s ../../sh-linux/${VERSION}${MULTILIBDIR}/$f $f;
yann@1
   167
+ done)
yann@1
   168
+
yann@1
   169
+if [ -z "$STEP1_COMPILER_BUILD" ]; then
yann@1
   170
+  for f in ${LIBS_1} ${LIBS_2}; do
yann@1
   171
+    mv ../gcc-sh-linux/usr/sh-linux/lib${MULTILIBDIR}/$f usr/${CPU}-linux/lib/;
yann@1
   172
+  done
yann@1
   173
+fi
yann@1
   174
+
yann@1
   175
+sed -e "s+@AS_ENDIAN_FLAG@+${AS_ENDIAN_FLAG}+" \
yann@1
   176
+    -e "s+@CPP_ENDIAN_DEF@+${CPP_ENDIAN_DEF}+" \
yann@1
   177
+    -e "s+@CPP_CPU_DEFS@+${CPP_CPU_DEFS}+" \
yann@1
   178
+    -e "s+@CC1_CPU_ENDIAN_FLAGS@+${CC1_CPU_ENDIAN_FLAGS}+" \
yann@1
   179
+    -e "s+@LINKER_CPU_ENDIAN_FLAGS@+${LINKER_CPU_ENDIAN_FLAGS}+" \
yann@1
   180
+    -e "s+@LINKER_RPATH_LINK_FLAG@+${LINKER_RPATH_LINK_FLAG}+" \
yann@1
   181
+    ../edit-specs.in >../edit-specs-${CPU}.sed
yann@1
   182
+
yann@1
   183
+sed -f ../edit-specs-${CPU}.sed \
yann@1
   184
+    ../gcc-sh-linux${INITIAL}/usr/lib/gcc-lib/sh-linux/${VERSION}/specs \
yann@1
   185
+    > usr/lib/gcc-lib/${CPU}-linux/${VERSION}/specs
yann@1
   186
+
yann@1
   187
+exit 0
yann@1
   188
diff -ruN gcc-20030210.orig/debian/multilib-symlink gcc-20030210/debian/multilib-symlink
yann@1
   189
--- gcc-20030210.orig/debian/multilib-symlink	Thu Jan  1 09:00:00 1970
yann@1
   190
+++ gcc-20030210/debian/multilib-symlink	Sat Feb 22 01:40:14 2003
yann@1
   191
@@ -0,0 +1,10 @@
yann@1
   192
+#! /bin/sh
yann@1
   193
+
yann@1
   194
+cd /usr/sh-linux/lib
yann@1
   195
+ln -s ../../sh3-linux/lib/{*.a,*.so*,*.o} .
yann@1
   196
+cd m4
yann@1
   197
+ln -s ../../../sh4-linux/lib/{*.a,*.so*,*.o} .
yann@1
   198
+cd ../mb
yann@1
   199
+ln -s ../../../sh3eb-linux/lib/{*.a,*.so*,*.o} .
yann@1
   200
+cd m4
yann@1
   201
+ln -s ../../../../sh4eb-linux/lib/{*.a,*.so*,*.o} .
yann@1
   202
diff -ruN gcc-20030210.orig/debian/shCPU-linux-GCC gcc-20030210/debian/shCPU-linux-GCC
yann@1
   203
--- gcc-20030210.orig/debian/shCPU-linux-GCC	Thu Jan  1 09:00:00 1970
yann@1
   204
+++ gcc-20030210/debian/shCPU-linux-GCC	Sat Feb 22 01:40:14 2003
yann@1
   205
@@ -0,0 +1,59 @@
yann@1
   206
+#! /bin/bash
yann@1
   207
+
yann@1
   208
+BASENAME=${0##*/}
yann@1
   209
+PROG=${BASENAME##*-}
yann@1
   210
+CPU=${BASENAME%%-*}
yann@1
   211
+
yann@1
   212
+if [ "$PROG" = gcc ]; then
yann@1
   213
+    if [ "$1" = "-b" -a "$2" = "i386-linux" ]; then
yann@1
   214
+	shift 2
yann@1
   215
+	exec /usr/bin/gcc "$@"
yann@1
   216
+    elif [ "$1" = "-print-multi-lib" -o "$1" = "--print-multi-lib" ]; then
yann@1
   217
+	echo ".;"
yann@1
   218
+	exit 0
yann@1
   219
+    elif [ "$1" = "-print-multi-os-directory" -o "$1" = "--print-multi-os-directory" ]; then
yann@1
   220
+	echo "."
yann@1
   221
+	exit 0
yann@1
   222
+    elif [ "$1" = "-dumpspecs" ]; then
yann@1
   223
+	cat /usr/lib/gcc-lib/${CPU}-linux/@@VERSION@@/specs
yann@1
   224
+	exit 0
yann@1
   225
+    fi
yann@1
   226
+fi
yann@1
   227
+
yann@1
   228
+case "${CPU}" in
yann@1
   229
+    sh3)
yann@1
   230
+	ARCH=m3
yann@1
   231
+	DEFINES="-D__sh3__ -D__SH3__ -D__LITTLE_ENDIAN__"
yann@1
   232
+	ENDIAN=ml
yann@1
   233
+    ;;
yann@1
   234
+    sh3eb)
yann@1
   235
+	ARCH=m3
yann@1
   236
+	DEFINES="-D__sh3__ -D__SH3__ -D__BIG_ENDIAN__"
yann@1
   237
+	ENDIAN=mb
yann@1
   238
+    ;;
yann@1
   239
+    sh4)
yann@1
   240
+	ARCH=m4
yann@1
   241
+	DEFINES="-D__SH4__ -D__LITTLE_ENDIAN__"
yann@1
   242
+	ENDIAN=ml
yann@1
   243
+    ;;
yann@1
   244
+    sh4eb)
yann@1
   245
+	ARCH=m4
yann@1
   246
+	DEFINES="-D__SH4__ -D__BIG_ENDIAN__"
yann@1
   247
+	ENDIAN=mb
yann@1
   248
+    ;;
yann@1
   249
+esac
yann@1
   250
+
yann@1
   251
+# Prepend the appropriate options
yann@1
   252
+# If user specifies some options, it will be overridden
yann@1
   253
+
yann@1
   254
+case "${PROG}" in
yann@1
   255
+    cpp)
yann@1
   256
+	exec sh-linux-${PROG} $DEFINES "$@"
yann@1
   257
+    ;;
yann@1
   258
+    c++|g++|g77|gcc|gcj)
yann@1
   259
+	exec sh-linux-${PROG} -$ARCH -$ENDIAN "$@"
yann@1
   260
+    ;;
yann@1
   261
+esac
yann@1
   262
+
yann@1
   263
+echo "Something wrong..."
yann@1
   264
+exit 1
yann@1
   265
diff -ruN gcc-20030210.orig/gcc/config/sh/elf.h gcc-20030210/gcc/config/sh/elf.h
yann@1
   266
--- gcc-20030210.orig/gcc/config/sh/elf.h	Fri Feb 22 01:42:28 2002
yann@1
   267
+++ gcc-20030210/gcc/config/sh/elf.h	Sat Feb 22 01:40:14 2003
yann@1
   268
@@ -170,3 +170,7 @@
yann@1
   269
 #undef ENDFILE_SPEC
yann@1
   270
 #define ENDFILE_SPEC \
yann@1
   271
   "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
yann@1
   272
+
yann@1
   273
+/* ASM_OUTPUT_CASE_LABEL is defined in elfos.h.  With it, 
yann@1
   274
+   redundant .align will be generated.  */
yann@1
   275
+#undef  ASM_OUTPUT_CASE_LABEL
yann@1
   276
diff -ruN gcc-20030210.orig/gcc/config/sh/lib1funcs.asm gcc-20030210/gcc/config/sh/lib1funcs.asm
yann@1
   277
--- gcc-20030210.orig/gcc/config/sh/lib1funcs.asm	Fri Feb 22 01:42:28 2002
yann@1
   278
+++ gcc-20030210/gcc/config/sh/lib1funcs.asm	Sat Feb 22 01:40:14 2003
yann@1
   279
@@ -39,8 +39,13 @@
yann@1
   280
 
yann@1
   281
 #ifdef __ELF__
yann@1
   282
 #define LOCAL(X) .L_##X
yann@1
   283
+#define FUNC(X) .type X,@function; .hidden X
yann@1
   284
+#define _ENDFUNC(X) .Lfe_##X: .size X,.Lfe_##X-X
yann@1
   285
+#define ENDFUNC(X) _ENDFUNC(X)
yann@1
   286
 #else
yann@1
   287
 #define LOCAL(X) L_##X
yann@1
   288
+#define FUNC(X)
yann@1
   289
+#define ENDFUNC(X)
yann@1
   290
 #endif
yann@1
   291
 
yann@1
   292
 #ifdef __linux__
yann@1
   293
@@ -91,6 +96,40 @@
yann@1
   294
 	.global	GLOBAL(ashiftrt_r4_31)
yann@1
   295
 	.global	GLOBAL(ashiftrt_r4_32)
yann@1
   296
 
yann@1
   297
+	FUNC(GLOBAL(ashiftrt_r4_0))
yann@1
   298
+	FUNC(GLOBAL(ashiftrt_r4_1))
yann@1
   299
+	FUNC(GLOBAL(ashiftrt_r4_2))
yann@1
   300
+	FUNC(GLOBAL(ashiftrt_r4_3))
yann@1
   301
+	FUNC(GLOBAL(ashiftrt_r4_4))
yann@1
   302
+	FUNC(GLOBAL(ashiftrt_r4_5))
yann@1
   303
+	FUNC(GLOBAL(ashiftrt_r4_6))
yann@1
   304
+	FUNC(GLOBAL(ashiftrt_r4_7))
yann@1
   305
+	FUNC(GLOBAL(ashiftrt_r4_8))
yann@1
   306
+	FUNC(GLOBAL(ashiftrt_r4_9))
yann@1
   307
+	FUNC(GLOBAL(ashiftrt_r4_10))
yann@1
   308
+	FUNC(GLOBAL(ashiftrt_r4_11))
yann@1
   309
+	FUNC(GLOBAL(ashiftrt_r4_12))
yann@1
   310
+	FUNC(GLOBAL(ashiftrt_r4_13))
yann@1
   311
+	FUNC(GLOBAL(ashiftrt_r4_14))
yann@1
   312
+	FUNC(GLOBAL(ashiftrt_r4_15))
yann@1
   313
+	FUNC(GLOBAL(ashiftrt_r4_16))
yann@1
   314
+	FUNC(GLOBAL(ashiftrt_r4_17))
yann@1
   315
+	FUNC(GLOBAL(ashiftrt_r4_18))
yann@1
   316
+	FUNC(GLOBAL(ashiftrt_r4_19))
yann@1
   317
+	FUNC(GLOBAL(ashiftrt_r4_20))
yann@1
   318
+	FUNC(GLOBAL(ashiftrt_r4_21))
yann@1
   319
+	FUNC(GLOBAL(ashiftrt_r4_22))
yann@1
   320
+	FUNC(GLOBAL(ashiftrt_r4_23))
yann@1
   321
+	FUNC(GLOBAL(ashiftrt_r4_24))
yann@1
   322
+	FUNC(GLOBAL(ashiftrt_r4_25))
yann@1
   323
+	FUNC(GLOBAL(ashiftrt_r4_26))
yann@1
   324
+	FUNC(GLOBAL(ashiftrt_r4_27))
yann@1
   325
+	FUNC(GLOBAL(ashiftrt_r4_28))
yann@1
   326
+	FUNC(GLOBAL(ashiftrt_r4_29))
yann@1
   327
+	FUNC(GLOBAL(ashiftrt_r4_30))
yann@1
   328
+	FUNC(GLOBAL(ashiftrt_r4_31))
yann@1
   329
+	FUNC(GLOBAL(ashiftrt_r4_32))
yann@1
   330
+
yann@1
   331
 	.align	1
yann@1
   332
 GLOBAL(ashiftrt_r4_32):
yann@1
   333
 GLOBAL(ashiftrt_r4_31):
yann@1
   334
@@ -170,6 +209,41 @@
yann@1
   335
 GLOBAL(ashiftrt_r4_0):
yann@1
   336
 	rts
yann@1
   337
 	nop
yann@1
   338
+
yann@1
   339
+	ENDFUNC(GLOBAL(ashiftrt_r4_0))
yann@1
   340
+	ENDFUNC(GLOBAL(ashiftrt_r4_1))
yann@1
   341
+	ENDFUNC(GLOBAL(ashiftrt_r4_2))
yann@1
   342
+	ENDFUNC(GLOBAL(ashiftrt_r4_3))
yann@1
   343
+	ENDFUNC(GLOBAL(ashiftrt_r4_4))
yann@1
   344
+	ENDFUNC(GLOBAL(ashiftrt_r4_5))
yann@1
   345
+	ENDFUNC(GLOBAL(ashiftrt_r4_6))
yann@1
   346
+	ENDFUNC(GLOBAL(ashiftrt_r4_7))
yann@1
   347
+	ENDFUNC(GLOBAL(ashiftrt_r4_8))
yann@1
   348
+	ENDFUNC(GLOBAL(ashiftrt_r4_9))
yann@1
   349
+	ENDFUNC(GLOBAL(ashiftrt_r4_10))
yann@1
   350
+	ENDFUNC(GLOBAL(ashiftrt_r4_11))
yann@1
   351
+	ENDFUNC(GLOBAL(ashiftrt_r4_12))
yann@1
   352
+	ENDFUNC(GLOBAL(ashiftrt_r4_13))
yann@1
   353
+	ENDFUNC(GLOBAL(ashiftrt_r4_14))
yann@1
   354
+	ENDFUNC(GLOBAL(ashiftrt_r4_15))
yann@1
   355
+	ENDFUNC(GLOBAL(ashiftrt_r4_16))
yann@1
   356
+	ENDFUNC(GLOBAL(ashiftrt_r4_17))
yann@1
   357
+	ENDFUNC(GLOBAL(ashiftrt_r4_18))
yann@1
   358
+	ENDFUNC(GLOBAL(ashiftrt_r4_19))
yann@1
   359
+	ENDFUNC(GLOBAL(ashiftrt_r4_20))
yann@1
   360
+	ENDFUNC(GLOBAL(ashiftrt_r4_21))
yann@1
   361
+	ENDFUNC(GLOBAL(ashiftrt_r4_22))
yann@1
   362
+	ENDFUNC(GLOBAL(ashiftrt_r4_23))
yann@1
   363
+	ENDFUNC(GLOBAL(ashiftrt_r4_24))
yann@1
   364
+	ENDFUNC(GLOBAL(ashiftrt_r4_25))
yann@1
   365
+	ENDFUNC(GLOBAL(ashiftrt_r4_26))
yann@1
   366
+	ENDFUNC(GLOBAL(ashiftrt_r4_27))
yann@1
   367
+	ENDFUNC(GLOBAL(ashiftrt_r4_28))
yann@1
   368
+	ENDFUNC(GLOBAL(ashiftrt_r4_29))
yann@1
   369
+	ENDFUNC(GLOBAL(ashiftrt_r4_30))
yann@1
   370
+	ENDFUNC(GLOBAL(ashiftrt_r4_31))
yann@1
   371
+	ENDFUNC(GLOBAL(ashiftrt_r4_32))
yann@1
   372
+
yann@1
   373
 #endif
yann@1
   374
 
yann@1
   375
 #ifdef L_ashiftrt_n
yann@1
   376
@@ -192,6 +266,7 @@
yann@1
   377
 !
yann@1
   378
 
yann@1
   379
 	.global	GLOBAL(ashrsi3)
yann@1
   380
+	FUNC(GLOBAL(ashrsi3))
yann@1
   381
 	.align	2
yann@1
   382
 GLOBAL(ashrsi3):
yann@1
   383
 	mov	#31,r0
yann@1
   384
@@ -319,6 +394,8 @@
yann@1
   385
 	rts
yann@1
   386
 	nop
yann@1
   387
 
yann@1
   388
+	ENDFUNC(GLOBAL(ashrsi3))
yann@1
   389
+
yann@1
   390
 #endif
yann@1
   391
 
yann@1
   392
 #ifdef L_ashiftlt
yann@1
   393
@@ -340,6 +417,7 @@
yann@1
   394
 ! (none)
yann@1
   395
 !
yann@1
   396
 	.global	GLOBAL(ashlsi3)
yann@1
   397
+	FUNC(GLOBAL(ashlsi3))
yann@1
   398
 	.align	2
yann@1
   399
 GLOBAL(ashlsi3):
yann@1
   400
 	mov	#31,r0
yann@1
   401
@@ -476,6 +554,8 @@
yann@1
   402
 	rts
yann@1
   403
 	nop
yann@1
   404
 
yann@1
   405
+	ENDFUNC(GLOBAL(ashlsi3))
yann@1
   406
+
yann@1
   407
 #endif
yann@1
   408
 
yann@1
   409
 #ifdef L_lshiftrt
yann@1
   410
@@ -497,6 +577,7 @@
yann@1
   411
 ! (none)
yann@1
   412
 !
yann@1
   413
 	.global	GLOBAL(lshrsi3)
yann@1
   414
+	FUNC(GLOBAL(lshrsi3))
yann@1
   415
 	.align	2
yann@1
   416
 GLOBAL(lshrsi3):
yann@1
   417
 	mov	#31,r0
yann@1
   418
@@ -633,6 +714,8 @@
yann@1
   419
 	rts
yann@1
   420
 	nop
yann@1
   421
 
yann@1
   422
+	ENDFUNC(GLOBAL(lshrsi3))
yann@1
   423
+
yann@1
   424
 #endif
yann@1
   425
 
yann@1
   426
 #ifdef L_movstr
yann@1
   427
@@ -649,76 +732,113 @@
yann@1
   428
 	add	#64,r4
yann@1
   429
 	.align	4
yann@1
   430
 	.global	GLOBAL(movstrSI64)
yann@1
   431
+	FUNC(GLOBAL(movstrSI64))
yann@1
   432
 GLOBAL(movstrSI64):
yann@1
   433
 	mov.l	@(60,r5),r0
yann@1
   434
 	mov.l	r0,@(60,r4)
yann@1
   435
 	.global	GLOBAL(movstrSI60)
yann@1
   436
+	FUNC(GLOBAL(movstrSI60))
yann@1
   437
 GLOBAL(movstrSI60):
yann@1
   438
 	mov.l	@(56,r5),r0
yann@1
   439
 	mov.l	r0,@(56,r4)
yann@1
   440
 	.global	GLOBAL(movstrSI56)
yann@1
   441
+	FUNC(GLOBAL(movstrSI56))
yann@1
   442
 GLOBAL(movstrSI56):
yann@1
   443
 	mov.l	@(52,r5),r0
yann@1
   444
 	mov.l	r0,@(52,r4)
yann@1
   445
 	.global	GLOBAL(movstrSI52)
yann@1
   446
+	FUNC(GLOBAL(movstrSI52))
yann@1
   447
 GLOBAL(movstrSI52):
yann@1
   448
 	mov.l	@(48,r5),r0
yann@1
   449
 	mov.l	r0,@(48,r4)
yann@1
   450
 	.global	GLOBAL(movstrSI48)
yann@1
   451
+	FUNC(GLOBAL(movstrSI48))
yann@1
   452
 GLOBAL(movstrSI48):
yann@1
   453
 	mov.l	@(44,r5),r0
yann@1
   454
 	mov.l	r0,@(44,r4)
yann@1
   455
 	.global	GLOBAL(movstrSI44)
yann@1
   456
+	FUNC(GLOBAL(movstrSI44))
yann@1
   457
 GLOBAL(movstrSI44):
yann@1
   458
 	mov.l	@(40,r5),r0
yann@1
   459
 	mov.l	r0,@(40,r4)
yann@1
   460
 	.global	GLOBAL(movstrSI40)
yann@1
   461
+	FUNC(GLOBAL(movstrSI40))
yann@1
   462
 GLOBAL(movstrSI40):
yann@1
   463
 	mov.l	@(36,r5),r0
yann@1
   464
 	mov.l	r0,@(36,r4)
yann@1
   465
 	.global	GLOBAL(movstrSI36)
yann@1
   466
+	FUNC(GLOBAL(movstrSI36))
yann@1
   467
 GLOBAL(movstrSI36):
yann@1
   468
 	mov.l	@(32,r5),r0
yann@1
   469
 	mov.l	r0,@(32,r4)
yann@1
   470
 	.global	GLOBAL(movstrSI32)
yann@1
   471
+	FUNC(GLOBAL(movstrSI32))
yann@1
   472
 GLOBAL(movstrSI32):
yann@1
   473
 	mov.l	@(28,r5),r0
yann@1
   474
 	mov.l	r0,@(28,r4)
yann@1
   475
 	.global	GLOBAL(movstrSI28)
yann@1
   476
+	FUNC(GLOBAL(movstrSI28))
yann@1
   477
 GLOBAL(movstrSI28):
yann@1
   478
 	mov.l	@(24,r5),r0
yann@1
   479
 	mov.l	r0,@(24,r4)
yann@1
   480
 	.global	GLOBAL(movstrSI24)
yann@1
   481
+	FUNC(GLOBAL(movstrSI24))
yann@1
   482
 GLOBAL(movstrSI24):
yann@1
   483
 	mov.l	@(20,r5),r0
yann@1
   484
 	mov.l	r0,@(20,r4)
yann@1
   485
 	.global	GLOBAL(movstrSI20)
yann@1
   486
+	FUNC(GLOBAL(movstrSI20))
yann@1
   487
 GLOBAL(movstrSI20):
yann@1
   488
 	mov.l	@(16,r5),r0
yann@1
   489
 	mov.l	r0,@(16,r4)
yann@1
   490
 	.global	GLOBAL(movstrSI16)
yann@1
   491
+	FUNC(GLOBAL(movstrSI16))
yann@1
   492
 GLOBAL(movstrSI16):
yann@1
   493
 	mov.l	@(12,r5),r0
yann@1
   494
 	mov.l	r0,@(12,r4)
yann@1
   495
 	.global	GLOBAL(movstrSI12)
yann@1
   496
+	FUNC(GLOBAL(movstrSI12))
yann@1
   497
 GLOBAL(movstrSI12):
yann@1
   498
 	mov.l	@(8,r5),r0
yann@1
   499
 	mov.l	r0,@(8,r4)
yann@1
   500
 	.global	GLOBAL(movstrSI8)
yann@1
   501
+	FUNC(GLOBAL(movstrSI8))
yann@1
   502
 GLOBAL(movstrSI8):
yann@1
   503
 	mov.l	@(4,r5),r0
yann@1
   504
 	mov.l	r0,@(4,r4)
yann@1
   505
 	.global	GLOBAL(movstrSI4)
yann@1
   506
+	FUNC(GLOBAL(movstrSI4))
yann@1
   507
 GLOBAL(movstrSI4):
yann@1
   508
 	mov.l	@(0,r5),r0
yann@1
   509
 	mov.l	r0,@(0,r4)
yann@1
   510
+	.global	GLOBAL(movstrSI0)
yann@1
   511
+	FUNC(GLOBAL(movstrSI0))
yann@1
   512
 GLOBAL(movstrSI0):
yann@1
   513
 	rts
yann@1
   514
 	nop
yann@1
   515
 
yann@1
   516
+	ENDFUNC(GLOBAL(movstrSI64))
yann@1
   517
+	ENDFUNC(GLOBAL(movstrSI60))
yann@1
   518
+	ENDFUNC(GLOBAL(movstrSI56))
yann@1
   519
+	ENDFUNC(GLOBAL(movstrSI52))
yann@1
   520
+	ENDFUNC(GLOBAL(movstrSI48))
yann@1
   521
+	ENDFUNC(GLOBAL(movstrSI44))
yann@1
   522
+	ENDFUNC(GLOBAL(movstrSI40))
yann@1
   523
+	ENDFUNC(GLOBAL(movstrSI36))
yann@1
   524
+	ENDFUNC(GLOBAL(movstrSI32))
yann@1
   525
+	ENDFUNC(GLOBAL(movstrSI28))
yann@1
   526
+	ENDFUNC(GLOBAL(movstrSI24))
yann@1
   527
+	ENDFUNC(GLOBAL(movstrSI20))
yann@1
   528
+	ENDFUNC(GLOBAL(movstrSI16))
yann@1
   529
+	ENDFUNC(GLOBAL(movstrSI12))
yann@1
   530
+	ENDFUNC(GLOBAL(movstrSI8))
yann@1
   531
+	ENDFUNC(GLOBAL(movstrSI4))
yann@1
   532
+	ENDFUNC(GLOBAL(movstrSI0))
yann@1
   533
+
yann@1
   534
 	.align	4
yann@1
   535
 
yann@1
   536
 	.global	GLOBAL(movstr)
yann@1
   537
+	FUNC(GLOBAL(movstr))
yann@1
   538
 GLOBAL(movstr):
yann@1
   539
 	mov.l	@(60,r5),r0
yann@1
   540
 	mov.l	r0,@(60,r4)
yann@1
   541
@@ -775,6 +895,8 @@
yann@1
   542
 	add	#64,r5
yann@1
   543
 	bra	GLOBAL(movstr)
yann@1
   544
 	add	#64,r4
yann@1
   545
+
yann@1
   546
+	FUNC(GLOBAL(movstr))
yann@1
   547
 #endif
yann@1
   548
 
yann@1
   549
 #ifdef L_movstr_i4
yann@1
   550
@@ -783,6 +905,10 @@
yann@1
   551
 	.global	GLOBAL(movstr_i4_odd)
yann@1
   552
 	.global	GLOBAL(movstrSI12_i4)
yann@1
   553
 
yann@1
   554
+	FUNC(GLOBAL(movstr_i4_even))
yann@1
   555
+	FUNC(GLOBAL(movstr_i4_odd))
yann@1
   556
+	FUNC(GLOBAL(movstrSI12_i4))
yann@1
   557
+
yann@1
   558
 	.p2align	5
yann@1
   559
 L_movstr_2mod4_end:
yann@1
   560
 	mov.l	r0,@(16,r4)
yann@1
   561
@@ -791,6 +917,11 @@
yann@1
   562
 
yann@1
   563
 	.p2align	2
yann@1
   564
 
yann@1
   565
+GLOBAL(movstr_i4_even):
yann@1
   566
+	mov.l	@r5+,r0
yann@1
   567
+	bra	L_movstr_start_even
yann@1
   568
+	mov.l	@r5+,r1
yann@1
   569
+
yann@1
   570
 GLOBAL(movstr_i4_odd):
yann@1
   571
 	mov.l	@r5+,r1
yann@1
   572
 	add	#-4,r4
yann@1
   573
@@ -817,10 +948,8 @@
yann@1
   574
 	rts
yann@1
   575
 	mov.l	r3,@(12,r4)
yann@1
   576
 
yann@1
   577
-GLOBAL(movstr_i4_even):
yann@1
   578
-	mov.l	@r5+,r0
yann@1
   579
-	bra	L_movstr_start_even
yann@1
   580
-	mov.l	@r5+,r1
yann@1
   581
+	ENDFUNC(GLOBAL(movstr_i4_even))
yann@1
   582
+	ENDFUNC(GLOBAL(movstr_i4_odd))
yann@1
   583
 
yann@1
   584
 	.p2align	4
yann@1
   585
 GLOBAL(movstrSI12_i4):
yann@1
   586
@@ -831,12 +960,16 @@
yann@1
   587
 	mov.l	r1,@(4,r4)
yann@1
   588
 	rts
yann@1
   589
 	mov.l	r2,@(8,r4)
yann@1
   590
+
yann@1
   591
+	ENDFUNC(GLOBAL(movstrSI12_i4))
yann@1
   592
+
yann@1
   593
 #endif
yann@1
   594
 
yann@1
   595
 #ifdef L_mulsi3
yann@1
   596
 
yann@1
   597
 
yann@1
   598
 	.global	GLOBAL(mulsi3)
yann@1
   599
+	FUNC(GLOBAL(mulsi3))
yann@1
   600
 
yann@1
   601
 ! r4 =       aabb
yann@1
   602
 ! r5 =       ccdd
yann@1
   603
@@ -869,7 +1002,7 @@
yann@1
   604
 	rts
yann@1
   605
 	add	r2,r0
yann@1
   606
 
yann@1
   607
-
yann@1
   608
+	FUNC(GLOBAL(mulsi3))
yann@1
   609
 #endif
yann@1
   610
 #endif /* ! __SH5__ */
yann@1
   611
 #ifdef L_sdivsi3_i4
yann@1
   612
@@ -879,6 +1012,7 @@
yann@1
   613
 !! args in r4 and r5, result in fpul, clobber dr0, dr2
yann@1
   614
 
yann@1
   615
 	.global	GLOBAL(sdivsi3_i4)
yann@1
   616
+	FUNC(GLOBAL(sdivsi3_i4))
yann@1
   617
 GLOBAL(sdivsi3_i4):
yann@1
   618
 	lds r4,fpul
yann@1
   619
 	float fpul,dr0
yann@1
   620
@@ -888,6 +1022,8 @@
yann@1
   621
 	rts
yann@1
   622
 	ftrc dr0,fpul
yann@1
   623
 
yann@1
   624
+	ENDFUNC(GLOBAL(sdivsi3_i4))
yann@1
   625
+
yann@1
   626
 #elif defined(__SH4_SINGLE__) || defined(__SH4_SINGLE_ONLY__) || (defined (__SH5__) && ! defined __SH4_NOFPU__)
yann@1
   627
 !! args in r4 and r5, result in fpul, clobber r2, dr0, dr2
yann@1
   628
 
yann@1
   629
@@ -896,6 +1032,7 @@
yann@1
   630
 	.mode	SHcompact
yann@1
   631
 #endif
yann@1
   632
 	.global	GLOBAL(sdivsi3_i4)
yann@1
   633
+	FUNC(GLOBAL(sdivsi3_i4))
yann@1
   634
 GLOBAL(sdivsi3_i4):
yann@1
   635
 	sts.l fpscr,@-r15
yann@1
   636
 	mov #8,r2
yann@1
   637
@@ -910,6 +1047,8 @@
yann@1
   638
 	rts
yann@1
   639
 	lds.l @r15+,fpscr
yann@1
   640
 
yann@1
   641
+	ENDFUNC(GLOBAL(sdivsi3_i4))
yann@1
   642
+
yann@1
   643
 #endif /* ! __SH5__ || __SH5__ == 32 */
yann@1
   644
 #endif /* ! __SH4__ */
yann@1
   645
 #endif
yann@1
   646
@@ -924,9 +1063,10 @@
yann@1
   647
 !!
yann@1
   648
 !!
yann@1
   649
 
yann@1
   650
-!! args in r4 and r5, result in r0 clobber r1,r2,r3
yann@1
   651
+!! args in r4 and r5, result in r0 clobber r1, r2, r3, and t bit
yann@1
   652
 
yann@1
   653
 	.global	GLOBAL(sdivsi3)
yann@1
   654
+	FUNC(GLOBAL(sdivsi3))
yann@1
   655
 #if __SHMEDIA__
yann@1
   656
 #if __SH5__ == 32
yann@1
   657
 	.section	.text..SHmedia32,"ax"
yann@1
   658
@@ -1076,6 +1216,7 @@
yann@1
   659
 div0:	rts
yann@1
   660
 	mov	#0,r0
yann@1
   661
 
yann@1
   662
+	ENDFUNC(GLOBAL(sdivsi3))
yann@1
   663
 #endif /* ! __SHMEDIA__ */
yann@1
   664
 #endif /* ! __SH4__ */
yann@1
   665
 #endif
yann@1
   666
@@ -1084,9 +1225,11 @@
yann@1
   667
 	.title "SH DIVIDE"
yann@1
   668
 !! 4 byte integer Divide code for the Hitachi SH
yann@1
   669
 #ifdef __SH4__
yann@1
   670
-!! args in r4 and r5, result in fpul, clobber r0, r1, r4, r5, dr0, dr2, dr4
yann@1
   671
+!! args in r4 and r5, result in fpul, clobber r0, r1, r4, r5, dr0, dr2, dr4,
yann@1
   672
+!! and t bit
yann@1
   673
 
yann@1
   674
 	.global	GLOBAL(udivsi3_i4)
yann@1
   675
+	FUNC(GLOBAL(udivsi3_i4))
yann@1
   676
 GLOBAL(udivsi3_i4):
yann@1
   677
 	mov #1,r1
yann@1
   678
 	cmp/hi r1,r5
yann@1
   679
@@ -1127,6 +1270,8 @@
yann@1
   680
 L1:
yann@1
   681
 	.double 2147483648
yann@1
   682
 
yann@1
   683
+	ENDFUNC(GLOBAL(udivsi3_i4))
yann@1
   684
+
yann@1
   685
 #elif defined(__SH4_SINGLE__) || defined(__SH4_SINGLE_ONLY__) || (defined (__SH5__) && ! defined __SH4_NOFPU__)
yann@1
   686
 !! args in r4 and r5, result in fpul, clobber r0, r1, r4, r5, dr0, dr2, dr4
yann@1
   687
 
yann@1
   688
@@ -1135,6 +1280,7 @@
yann@1
   689
 	.mode	SHcompact
yann@1
   690
 #endif
yann@1
   691
 	.global	GLOBAL(udivsi3_i4)
yann@1
   692
+	FUNC(GLOBAL(udivsi3_i4))
yann@1
   693
 GLOBAL(udivsi3_i4):
yann@1
   694
 	mov #1,r1
yann@1
   695
 	cmp/hi r1,r5
yann@1
   696
@@ -1183,6 +1329,8 @@
yann@1
   697
 #endif
yann@1
   698
 	.double 2147483648
yann@1
   699
 
yann@1
   700
+	ENDFUNC(GLOBAL(udivsi3_i4))
yann@1
   701
+
yann@1
   702
 #endif /* ! __SH5__ || __SH5__ == 32 */
yann@1
   703
 #endif /* ! __SH4__ */
yann@1
   704
 #endif
yann@1
   705
@@ -1199,6 +1347,7 @@
yann@1
   706
 
yann@1
   707
 !! args in r4 and r5, result in r0, clobbers r4, pr, and t bit
yann@1
   708
 	.global	GLOBAL(udivsi3)
yann@1
   709
+	FUNC(GLOBAL(udivsi3))
yann@1
   710
 
yann@1
   711
 #if __SHMEDIA__
yann@1
   712
 #if __SH5__ == 32
yann@1
   713
@@ -1299,6 +1448,8 @@
yann@1
   714
 ret:	rts
yann@1
   715
 	mov	r4,r0
yann@1
   716
 
yann@1
   717
+	ENDFUNC(GLOBAL(udivsi3))
yann@1
   718
+
yann@1
   719
 #endif /* ! __SHMEDIA__ */
yann@1
   720
 #endif /* __SH4__ */
yann@1
   721
 #endif
yann@1
   722
@@ -1308,6 +1459,7 @@
yann@1
   723
 	.mode	SHcompact
yann@1
   724
 #endif
yann@1
   725
 	.global GLOBAL(set_fpscr)
yann@1
   726
+	FUNC(GLOBAL(set_fpscr))
yann@1
   727
 GLOBAL(set_fpscr):
yann@1
   728
 	lds r4,fpscr
yann@1
   729
 	mov.l LOCAL(set_fpscr_L1),r1
yann@1
   730
@@ -1340,11 +1492,16 @@
yann@1
   731
 	.align 2
yann@1
   732
 LOCAL(set_fpscr_L1):
yann@1
   733
 	.long GLOBAL(fpscr_values)
yann@1
   734
+
yann@1
   735
+	ENDFUNC(GLOBAL(set_fpscr))
yann@1
   736
+
yann@1
   737
+#ifndef NO_FPSCR_VALUES
yann@1
   738
 #ifdef __ELF__
yann@1
   739
         .comm   GLOBAL(fpscr_values),8,4
yann@1
   740
 #else
yann@1
   741
         .comm   GLOBAL(fpscr_values),8
yann@1
   742
 #endif /* ELF */
yann@1
   743
+#endif /* NO_FPSCR_VALUES */
yann@1
   744
 #endif /* SH3E / SH4 */
yann@1
   745
 #endif /* L_set_fpscr */
yann@1
   746
 #ifdef L_ic_invalidate
yann@1
   747
@@ -1360,6 +1517,7 @@
yann@1
   748
 	blink	tr0, r63
yann@1
   749
 #elif defined(__SH4_SINGLE__) || defined(__SH4__) || defined(__SH4_SINGLE_ONLY__)
yann@1
   750
 	.global GLOBAL(ic_invalidate)
yann@1
   751
+	FUNC(GLOBAL(ic_invalidate))
yann@1
   752
 GLOBAL(ic_invalidate):
yann@1
   753
 	ocbwb	@r4
yann@1
   754
 	mova	0f,r0
yann@1
   755
@@ -1382,6 +1540,9 @@
yann@1
   756
 	nop
yann@1
   757
 	.endr
yann@1
   758
 	.endr
yann@1
   759
+
yann@1
   760
+	ENDFUNC(GLOBAL(ic_invalidate))
yann@1
   761
+
yann@1
   762
 #endif /* SH4 */
yann@1
   763
 #endif /* L_ic_invalidate */
yann@1
   764
 
yann@1
   765
diff -ruN gcc-20030210.orig/gcc/config/sh/libgcc-glibc.ver gcc-20030210/gcc/config/sh/libgcc-glibc.ver
yann@1
   766
--- gcc-20030210.orig/gcc/config/sh/libgcc-glibc.ver	Thu Jan  1 09:00:00 1970
yann@1
   767
+++ gcc-20030210/gcc/config/sh/libgcc-glibc.ver	Sat Feb 22 01:40:14 2003
yann@1
   768
@@ -0,0 +1,21 @@
yann@1
   769
+# In order to work around the very problems that force us to now generally
yann@1
   770
+# create a libgcc.so, glibc reexported a number of routines from libgcc.a.
yann@1
   771
+# By now choosing the same version tags for these specific routines, we
yann@1
   772
+# maintain enough binary compatibility to allow future versions of glibc
yann@1
   773
+# to defer implementation of these routines to libgcc.so via DT_AUXILIARY.
yann@1
   774
+
yann@1
   775
+# Note that we cannot use the default libgcc-glibc.ver file on sh,
yann@1
   776
+# because GLIBC_2.0 does not exist on this architecture, as the first 
yann@1
   777
+# ever glibc release on the platform was GLIBC_2.2.
yann@1
   778
+
yann@1
   779
+%inherit GCC_3.0 GLIBC_2.2
yann@1
   780
+GLIBC_2.2 {
yann@1
   781
+  __register_frame
yann@1
   782
+  __register_frame_table
yann@1
   783
+  __deregister_frame
yann@1
   784
+  __register_frame_info
yann@1
   785
+  __deregister_frame_info
yann@1
   786
+  __frame_state_for
yann@1
   787
+  __register_frame_info_table
yann@1
   788
+}
yann@1
   789
+
yann@1
   790
diff -ruN gcc-20030210.orig/gcc/config/sh/linux.h gcc-20030210/gcc/config/sh/linux.h
yann@1
   791
--- gcc-20030210.orig/gcc/config/sh/linux.h	Tue Apr 16 05:27:42 2002
yann@1
   792
+++ gcc-20030210/gcc/config/sh/linux.h	Sat Feb 22 01:40:14 2003
yann@1
   793
@@ -19,6 +19,10 @@
yann@1
   794
 the Free Software Foundation, 59 Temple Place - Suite 330,
yann@1
   795
 Boston, MA 02111-1307, USA.  */
yann@1
   796
 
yann@1
   797
+/* We're not SYSVR4, not having /usr/ccs */
yann@1
   798
+#undef MD_EXEC_PREFIX
yann@1
   799
+#undef MD_STARTFILE_PREFIX
yann@1
   800
+
yann@1
   801
 /* Run-time Target Specification.  */
yann@1
   802
 #undef TARGET_VERSION
yann@1
   803
 #define TARGET_VERSION  fputs (" (SH GNU/Linux with ELF)", stderr);
yann@1
   804
@@ -39,6 +43,28 @@
yann@1
   805
 #undef WCHAR_TYPE_SIZE
yann@1
   806
 #define WCHAR_TYPE_SIZE BITS_PER_WORD
yann@1
   807
 
yann@1
   808
+/* This was defined in linux.h.  Define it here also. */
yann@1
   809
+#undef  DEFAULT_VTABLE_THUNKS
yann@1
   810
+#define DEFAULT_VTABLE_THUNKS   1
yann@1
   811
+
yann@1
   812
+/* Likewise.  */
yann@1
   813
+#define HANDLE_PRAGMA_PACK_PUSH_POP
yann@1
   814
+
yann@1
   815
+/* Pick up the return address upon entry to a procedure. Used for
yann@1
   816
+   dwarf2 unwind information.  This also enables the table driven
yann@1
   817
+   mechanism.  */
yann@1
   818
+
yann@1
   819
+#define INCOMING_RETURN_ADDR_RTX	gen_rtx_REG (Pmode, PR_REG)
yann@1
   820
+#define DWARF_FRAME_RETURN_COLUMN	DWARF_FRAME_REGNUM (PR_REG)
yann@1
   821
+
yann@1
   822
+#undef CPP_SPEC
yann@1
   823
+#define CPP_SPEC "\
yann@1
   824
+   %{m4:-D__SH4__} \
yann@1
   825
+   %{!m4:%(cpp_default_cpu_spec)} \
yann@1
   826
+   %(subtarget_cpp_spec) \
yann@1
   827
+   %(subtarget_cpp_ptr_spec) \
yann@1
   828
+   %(subtarget_cpp_endian_spec) "
yann@1
   829
+
yann@1
   830
 #undef SUBTARGET_CPP_SPEC
yann@1
   831
 #define SUBTARGET_CPP_SPEC "\
yann@1
   832
    %{fPIC:-D__PIC__ -D__pic__} \
yann@1
   833
@@ -55,36 +81,45 @@
yann@1
   834
 #undef CPP_DEFAULT_CPU_SPEC
yann@1
   835
 #define CPP_DEFAULT_CPU_SPEC "-D__SH3__ -D__sh3__"
yann@1
   836
 
yann@1
   837
-
yann@1
   838
 #undef CPP_PREDEFINES
yann@1
   839
 #define CPP_PREDEFINES "-D__ELF__ -Dunix -D__sh__ -D__gnu_linux__ -Dlinux -Asystem=posix"
yann@1
   840
 
yann@1
   841
+/* The GNU C++ standard library requires that these macros be defined.  */
yann@1
   842
+#undef CPLUSPLUS_CPP_SPEC
yann@1
   843
+#define CPLUSPLUS_CPP_SPEC "-D_GNU_SOURCE %(cpp)"
yann@1
   844
+
yann@1
   845
 #undef ASM_SPEC
yann@1
   846
-#define ASM_SPEC  "%{!mb:-little} %{mrelax:-relax}"
yann@1
   847
+#define ASM_SPEC  "%{mb:-big} %{!mb:-little} %{mrelax:-relax}"
yann@1
   848
 
yann@1
   849
 #undef CC1_SPEC
yann@1
   850
 #define CC1_SPEC \
yann@1
   851
-  "-musermode %{!mb:-ml} %{!m3e:%{!m4:-m3}}"
yann@1
   852
-
yann@1
   853
-#undef CC1PLUS_SPEC
yann@1
   854
-#define CC1PLUS_SPEC \
yann@1
   855
-  "-musermode %{!mb:-ml} %{!m3e:%{!m4:-m3}}"
yann@1
   856
+  "-musermode %{!mb:-ml} %{!m4:-m3} %{profile:-p}"
yann@1
   857
 
yann@1
   858
+/* XXX: It's wrong if prefix != /usr */
yann@1
   859
 #undef LINK_SPEC
yann@1
   860
 #define LINK_SPEC \
yann@1
   861
-  "%{!mb:-m shlelf_linux} %{mrelax:-relax} \
yann@1
   862
+  "%{!mb:-m shlelf_linux -EL} %{mb:-m shelf_linux -EB} %{mrelax:-relax} \
yann@1
   863
    %{shared:-shared} \
yann@1
   864
    %{!static: \
yann@1
   865
      %{rdynamic:-export-dynamic} \
yann@1
   866
      %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \
yann@1
   867
-     %{!rpath:-rpath /lib}} \
yann@1
   868
+     %{!mb:%{!m4:-rpath-link /usr/sh-linux/lib }} \
yann@1
   869
+     %{!mb:%{m4:-rpath-link /usr/sh-linux/lib/m4 }} \
yann@1
   870
+     %{mb:%{!m4:-rpath-link /usr/sh-linux/lib/mb }} \
yann@1
   871
+     %{mb:%{m4:-rpath-link /usr/sh-linux/lib/mb/m4 }}} \
yann@1
   872
    %{static:-static}"
yann@1
   873
 
yann@1
   874
 #undef LIB_SPEC
yann@1
   875
+#undef LIB_SPEC
yann@1
   876
 #define LIB_SPEC \
yann@1
   877
   "%{shared: -lc} \
yann@1
   878
-   %{!shared: %{pthread:-lthread} \
yann@1
   879
-     %{profile:-lc_p} %{!profile: -lc}}"
yann@1
   880
+   %{!shared: %{mieee:-lieee} %{pthread:-lpthread} \
yann@1
   881
+	%{profile:-lc_p} %{!profile: -lc}}"
yann@1
   882
+
yann@1
   883
+#if defined(HAVE_LD_EH_FRAME_HDR)
yann@1
   884
+#undef LINK_EH_SPEC
yann@1
   885
+#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
yann@1
   886
+#endif
yann@1
   887
 
yann@1
   888
 #undef STARTFILE_SPEC
yann@1
   889
 #define STARTFILE_SPEC \
yann@1
   890
@@ -92,4 +127,40 @@
yann@1
   891
      %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \
yann@1
   892
 		       %{!p:%{profile:gcrt1.o%s} \
yann@1
   893
 			 %{!profile:crt1.o%s}}}} \
yann@1
   894
-   crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"
yann@1
   895
+   crti.o%s %{static:crtbeginT.o%s}\
yann@1
   896
+   %{!static:%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}}"
yann@1
   897
+
yann@1
   898
+#undef FUNCTION_PROFILER
yann@1
   899
+#define FUNCTION_PROFILER(STREAM,LABELNO)				\
yann@1
   900
+do									\
yann@1
   901
+{									\
yann@1
   902
+  if (flag_pic)								\
yann@1
   903
+    {									\
yann@1
   904
+      fprintf (STREAM, "	mov.l	3f,r1\n");			\
yann@1
   905
+      fprintf (STREAM, "	mova	3f,r0\n");			\
yann@1
   906
+      fprintf (STREAM, "	add	r1,r0\n");			\
yann@1
   907
+      fprintf (STREAM, "	mov.l	1f,r1\n");			\
yann@1
   908
+      fprintf (STREAM, "	mov.l	@(r0,r1),r1\n");		\
yann@1
   909
+    }									\
yann@1
   910
+  else									\
yann@1
   911
+    {									\
yann@1
   912
+      fprintf (STREAM, "	mov.l	1f,r1\n");			\
yann@1
   913
+    }									\
yann@1
   914
+  fprintf (STREAM, "	sts.l	pr,@-r15\n");				\
yann@1
   915
+  fprintf (STREAM, "	mova	2f,r0\n");				\
yann@1
   916
+  fprintf (STREAM, "	jmp	@r1\n");				\
yann@1
   917
+  fprintf (STREAM, "	lds	r0,pr\n");				\
yann@1
   918
+  fprintf (STREAM, "	.align	2\n");					\
yann@1
   919
+  if (flag_pic)								\
yann@1
   920
+    {									\
yann@1
   921
+      fprintf (STREAM, "1:	.long	mcount@GOT\n");			\
yann@1
   922
+      fprintf (STREAM, "3:	.long	_GLOBAL_OFFSET_TABLE_\n");	\
yann@1
   923
+    }									\
yann@1
   924
+  else									\
yann@1
   925
+    {									\
yann@1
   926
+      fprintf (STREAM, "1:	.long	mcount\n");			\
yann@1
   927
+    }									\
yann@1
   928
+  fprintf (STREAM, "2:	lds.l	@r15+,pr\n");				\
yann@1
   929
+} while (0)
yann@1
   930
+
yann@1
   931
+#define NO_SHARED_LIBGCC_MULTILIB
yann@1
   932
diff -ruN gcc-20030210.orig/gcc/config/sh/sh-protos.h gcc-20030210/gcc/config/sh/sh-protos.h
yann@1
   933
--- gcc-20030210.orig/gcc/config/sh/sh-protos.h	Fri Feb 22 01:42:28 2002
yann@1
   934
+++ gcc-20030210/gcc/config/sh/sh-protos.h	Sat Feb 22 01:40:14 2003
yann@1
   935
@@ -74,6 +74,7 @@
yann@1
   936
 extern int shl_sext_length PARAMS ((rtx));
yann@1
   937
 extern int gen_shl_sext PARAMS ((rtx, rtx, rtx, rtx));
yann@1
   938
 extern rtx gen_datalabel_ref PARAMS ((rtx));
yann@1
   939
+extern int shl_casesi_worker_length PARAMS ((rtx));
yann@1
   940
 extern int regs_used PARAMS ((rtx, int));
yann@1
   941
 extern void fixup_addr_diff_vecs PARAMS ((rtx));
yann@1
   942
 extern int get_dest_uid PARAMS ((rtx, int));
yann@1
   943
diff -ruN gcc-20030210.orig/gcc/config/sh/sh.c gcc-20030210/gcc/config/sh/sh.c
yann@1
   944
--- gcc-20030210.orig/gcc/config/sh/sh.c	Fri Feb 22 01:42:28 2002
yann@1
   945
+++ gcc-20030210/gcc/config/sh/sh.c	Sat Feb 22 01:40:14 2003
yann@1
   946
@@ -2143,6 +2143,48 @@
yann@1
   947
   return sym;
yann@1
   948
 }
yann@1
   949
 
yann@1
   950
+
yann@1
   951
+/* Function to be used in the length attribute of the casesi_worker
yann@1
   952
+   instruction.  Returns number of instructions, which is half of the
yann@1
   953
+   length of bytes. */
yann@1
   954
+
yann@1
   955
+int
yann@1
   956
+shl_casesi_worker_length (insn)
yann@1
   957
+     rtx insn;
yann@1
   958
+{
yann@1
   959
+  rtx set_src, label;
yann@1
   960
+  rtx diff_vec;
yann@1
   961
+
yann@1
   962
+  set_src = SET_SRC (XVECEXP (PATTERN (insn), 0, 0));
yann@1
   963
+  if (!(GET_CODE (set_src) == UNSPEC
yann@1
   964
+	&& XINT (set_src, 1) == UNSPEC_CASESI))
yann@1
   965
+    abort ();
yann@1
   966
+
yann@1
   967
+  label = XVECEXP (set_src, 0, 2);
yann@1
   968
+  if (GET_CODE (label) != LABEL_REF)
yann@1
   969
+    abort ();
yann@1
   970
+
yann@1
   971
+  diff_vec = PATTERN (next_real_insn (XEXP (label, 0)));
yann@1
   972
+
yann@1
   973
+  if (GET_CODE (diff_vec) != ADDR_DIFF_VEC)
yann@1
   974
+    abort ();
yann@1
   975
+
yann@1
   976
+  switch (GET_MODE (diff_vec))
yann@1
   977
+    {
yann@1
   978
+    case SImode:
yann@1
   979
+      return 2;
yann@1
   980
+    case HImode:
yann@1
   981
+      if (ADDR_DIFF_VEC_FLAGS (diff_vec).offset_unsigned)
yann@1
   982
+	return 3;
yann@1
   983
+      return 2;
yann@1
   984
+    case QImode:
yann@1
   985
+      if (ADDR_DIFF_VEC_FLAGS (diff_vec).offset_unsigned)
yann@1
   986
+	return 2;
yann@1
   987
+      return 1;
yann@1
   988
+    default:
yann@1
   989
+      abort ();
yann@1
   990
+    }
yann@1
   991
+}
yann@1
   992
 
yann@1
   993
 /* The SH cannot load a large constant into a register, constants have to
yann@1
   994
    come from a pc relative load.  The reference of a pc relative load
yann@1
   995
@@ -3190,7 +3232,7 @@
yann@1
   996
       vec_lab = XEXP (XEXP (pat, 0), 0);
yann@1
   997
 
yann@1
   998
       /* Search the matching casesi_jump_2.  */
yann@1
   999
-      for (prev = vec_lab; ; prev = PREV_INSN (prev))
yann@1
  1000
+      for (prev = vec_lab; prev; prev = PREV_INSN (prev))
yann@1
  1001
 	{
yann@1
  1002
 	  if (GET_CODE (prev) != JUMP_INSN)
yann@1
  1003
 	    continue;
yann@1
  1004
@@ -3205,6 +3247,13 @@
yann@1
  1005
 	    break;
yann@1
  1006
 	}
yann@1
  1007
 
yann@1
  1008
+      if (prev == NULL)
yann@1
  1009
+	{			/* Switch statement has been optimized out.  */
yann@1
  1010
+	  delete_insn (PREV_INSN (insn));
yann@1
  1011
+	  delete_insn (insn);
yann@1
  1012
+	  continue;
yann@1
  1013
+	}
yann@1
  1014
+
yann@1
  1015
       /* Emit the reference label of the braf where it belongs, right after
yann@1
  1016
 	 the casesi_jump_2 (i.e. braf).  */
yann@1
  1017
       braf_label = XEXP (XEXP (SET_SRC (XVECEXP (prevpat, 0, 0)), 1), 0);
yann@1
  1018
@@ -3223,7 +3272,7 @@
yann@1
  1019
      rtx barrier_or_label;
yann@1
  1020
 {
yann@1
  1021
   rtx next = next_real_insn (barrier_or_label), pat, prev;
yann@1
  1022
-  int slot, credit, jump_to_next;
yann@1
  1023
+  int slot, credit, jump_to_next = 0;
yann@1
  1024
  
yann@1
  1025
   if (! next)
yann@1
  1026
     return 0;
yann@1
  1027
@@ -4507,7 +4556,8 @@
yann@1
  1028
   if (current_function_varargs || current_function_stdarg)
yann@1
  1029
     {
yann@1
  1030
       /* This is not used by the SH3E calling convention  */
yann@1
  1031
-      if (TARGET_SH1 && ! TARGET_SH3E && ! TARGET_SH5 && ! TARGET_HITACHI)
yann@1
  1032
+      if (TARGET_SH1 && ! TARGET_SH3E && ! TARGET_SH5 && ! TARGET_HITACHI
yann@1
  1033
+	  || TARGET_NO_IMPLICIT_FP)
yann@1
  1034
 	{
yann@1
  1035
 	  /* Push arg regs as if they'd been provided by caller in stack.  */
yann@1
  1036
 	  for (i = 0; i < NPARM_REGS(SImode); i++)
yann@1
  1037
@@ -5149,7 +5199,8 @@
yann@1
  1038
   tree f_next_o, f_next_o_limit, f_next_fp, f_next_fp_limit, f_next_stack;
yann@1
  1039
   tree record;
yann@1
  1040
 
yann@1
  1041
-  if (TARGET_SH5 || (! TARGET_SH3E && ! TARGET_SH4) || TARGET_HITACHI)
yann@1
  1042
+  if (TARGET_SH5 || (! TARGET_SH3E && ! TARGET_SH4) || TARGET_HITACHI
yann@1
  1043
+      || TARGET_NO_IMPLICIT_FP)
yann@1
  1044
     return ptr_type_node;
yann@1
  1045
 
yann@1
  1046
   record = make_node (RECORD_TYPE);
yann@1
  1047
@@ -5211,7 +5262,8 @@
yann@1
  1048
       return;
yann@1
  1049
     }
yann@1
  1050
 
yann@1
  1051
-  if ((! TARGET_SH3E && ! TARGET_SH4) || TARGET_HITACHI)
yann@1
  1052
+  if ((! TARGET_SH3E && ! TARGET_SH4)
yann@1
  1053
+      || TARGET_HITACHI || TARGET_NO_IMPLICIT_FP)
yann@1
  1054
     {
yann@1
  1055
       std_expand_builtin_va_start (stdarg_p, valist, nextarg);
yann@1
  1056
       return;
yann@1
  1057
@@ -5289,7 +5341,8 @@
yann@1
  1058
   rsize = (size + UNITS_PER_WORD - 1) & -UNITS_PER_WORD;
yann@1
  1059
   pptr_type_node = build_pointer_type (ptr_type_node);
yann@1
  1060
 
yann@1
  1061
-  if (! TARGET_SH5 && (TARGET_SH3E || TARGET_SH4) && ! TARGET_HITACHI)
yann@1
  1062
+  if (! TARGET_SH5 && (TARGET_SH3E || TARGET_SH4)
yann@1
  1063
+      && ! TARGET_HITACHI && ! TARGET_NO_IMPLICIT_FP)
yann@1
  1064
     {
yann@1
  1065
       tree f_next_o, f_next_o_limit, f_next_fp, f_next_fp_limit, f_next_stack;
yann@1
  1066
       tree next_o, next_o_limit, next_fp, next_fp_limit, next_stack;
yann@1
  1067
diff -ruN gcc-20030210.orig/gcc/config/sh/sh.h gcc-20030210/gcc/config/sh/sh.h
yann@1
  1068
--- gcc-20030210.orig/gcc/config/sh/sh.h	Fri Feb 22 01:42:28 2002
yann@1
  1069
+++ gcc-20030210/gcc/config/sh/sh.h	Sat Feb 22 01:40:14 2003
yann@1
  1070
@@ -147,10 +147,10 @@
yann@1
  1071
 #define HARD_SH4_BIT	(1<<5)
yann@1
  1072
 #define FPU_SINGLE_BIT	(1<<7)
yann@1
  1073
 #define SH4_BIT	       	(1<<12)
yann@1
  1074
+#define NO_IMPLICIT_FP_BIT	(1<<3)
yann@1
  1075
 #define FMOVD_BIT	(1<<4)
yann@1
  1076
 #define SH5_BIT		(1<<0)
yann@1
  1077
 #define SPACE_BIT 	(1<<13)
yann@1
  1078
-#define BIGTABLE_BIT  	(1<<14)
yann@1
  1079
 #define RELAX_BIT	(1<<15)
yann@1
  1080
 #define USERMODE_BIT	(1<<16)
yann@1
  1081
 #define HITACHI_BIT     (1<<22)
yann@1
  1082
@@ -205,6 +205,9 @@
yann@1
  1083
 /* Nonzero if we should generate code for a SH5 CPU (either ISA).  */
yann@1
  1084
 #define TARGET_SH5 (target_flags & SH5_BIT)
yann@1
  1085
 
yann@1
  1086
+/* Nonzero if we should not use FPU implicitly.  */
yann@1
  1087
+#define TARGET_NO_IMPLICIT_FP (target_flags & NO_IMPLICIT_FP_BIT)
yann@1
  1088
+
yann@1
  1089
 /* Nonzero if we should generate code using the SHcompact instruction
yann@1
  1090
    set and 32-bit ABI.  */
yann@1
  1091
 #define TARGET_SHCOMPACT (TARGET_SH5 && TARGET_SH1)
yann@1
  1092
@@ -225,6 +228,7 @@
yann@1
  1093
 
yann@1
  1094
 /* Nonzero if we should generate code using SHmedia FPU instructions.  */
yann@1
  1095
 #define TARGET_SHMEDIA_FPU (TARGET_SHMEDIA && TARGET_FPU_DOUBLE)
yann@1
  1096
+
yann@1
  1097
 /* Nonzero if we should generate fmovd.  */
yann@1
  1098
 #define TARGET_FMOVD (target_flags & FMOVD_BIT)
yann@1
  1099
 
yann@1
  1100
@@ -234,9 +238,6 @@
yann@1
  1101
 /* Nonzero if we should generate smaller code rather than faster code.  */
yann@1
  1102
 #define TARGET_SMALLCODE   (target_flags & SPACE_BIT)
yann@1
  1103
 
yann@1
  1104
-/* Nonzero to use long jump tables.  */
yann@1
  1105
-#define TARGET_BIGTABLE     (target_flags & BIGTABLE_BIT)
yann@1
  1106
-
yann@1
  1107
 /* Nonzero to generate pseudo-ops needed by the assembler and linker
yann@1
  1108
    to do function call relaxing.  */
yann@1
  1109
 #define TARGET_RELAX (target_flags & RELAX_BIT)
yann@1
  1110
@@ -297,7 +298,6 @@
yann@1
  1111
   {"5-compact-nofpu", TARGET_NONE, "" },	\
yann@1
  1112
   {"5-compact-nofpu", SH5_BIT|SH3_BIT|SH2_BIT|SH1_BIT, "Generate FPU-less SHcompact code" }, \
yann@1
  1113
   {"b",		-LITTLE_ENDIAN_BIT, "" },  	\
yann@1
  1114
-  {"bigtable", 	BIGTABLE_BIT, "" },		\
yann@1
  1115
   {"dalign",  	DALIGN_BIT, "" },		\
yann@1
  1116
   {"fmovd",  	FMOVD_BIT, "" },		\
yann@1
  1117
   {"hitachi",	HITACHI_BIT, "" },		\
yann@1
  1118
@@ -306,6 +306,7 @@
yann@1
  1119
   {"isize", 	ISIZE_BIT, "" },		\
yann@1
  1120
   {"l",		LITTLE_ENDIAN_BIT, "" },  	\
yann@1
  1121
   {"no-ieee",  	-IEEE_BIT, "" },		\
yann@1
  1122
+  {"no-implicit-fp", NO_IMPLICIT_FP_BIT, "" },	\
yann@1
  1123
   {"padstruct", PADSTRUCT_BIT, "" },    	\
yann@1
  1124
   {"prefergot",	PREFERGOT_BIT, "" },		\
yann@1
  1125
   {"relax",	RELAX_BIT, "" },		\
yann@1
  1126
@@ -2493,16 +2494,22 @@
yann@1
  1127
     goto LABEL;								\
yann@1
  1128
 }
yann@1
  1129
 
yann@1
  1130
+extern int optimize; /* needed for gen_casesi.  */
yann@1
  1131
+extern int optimize_size;
yann@1
  1132
+
yann@1
  1133
 /* Specify the machine mode that this machine uses
yann@1
  1134
    for the index in the tablejump instruction.  */
yann@1
  1135
-#define CASE_VECTOR_MODE (TARGET_BIGTABLE ? SImode : HImode)
yann@1
  1136
+#define CASE_VECTOR_MODE SImode
yann@1
  1137
 
yann@1
  1138
 #define CASE_VECTOR_SHORTEN_MODE(MIN_OFFSET, MAX_OFFSET, BODY) \
yann@1
  1139
 ((MIN_OFFSET) >= 0 && (MAX_OFFSET) <= 127 \
yann@1
  1140
  ? (ADDR_DIFF_VEC_FLAGS (BODY).offset_unsigned = 0, QImode) \
yann@1
  1141
  : (MIN_OFFSET) >= 0 && (MAX_OFFSET) <= 255 \
yann@1
  1142
  ? (ADDR_DIFF_VEC_FLAGS (BODY).offset_unsigned = 1, QImode) \
yann@1
  1143
- : (MIN_OFFSET) >= -32768 && (MAX_OFFSET) <= 32767 ? HImode \
yann@1
  1144
+ : (MIN_OFFSET) >= -32768 && (MAX_OFFSET) <= 32767 \
yann@1
  1145
+ ? (ADDR_DIFF_VEC_FLAGS (BODY).offset_unsigned = 0, HImode) \
yann@1
  1146
+ : optimize_size && (MIN_OFFSET) >= 0 && (MAX_OFFSET) <= 65535 \
yann@1
  1147
+ ? (ADDR_DIFF_VEC_FLAGS (BODY).offset_unsigned = 1, HImode) \
yann@1
  1148
  : SImode)
yann@1
  1149
 
yann@1
  1150
 /* Define as C expression which evaluates to nonzero if the tablejump
yann@1
  1151
@@ -3038,10 +3045,7 @@
yann@1
  1152
 /* Output an absolute table element.  */
yann@1
  1153
 
yann@1
  1154
 #define ASM_OUTPUT_ADDR_VEC_ELT(STREAM,VALUE)  				\
yann@1
  1155
-  if (TARGET_BIGTABLE) 							\
yann@1
  1156
-    asm_fprintf ((STREAM), "\t.long\t%LL%d\n", (VALUE)); 			\
yann@1
  1157
-  else									\
yann@1
  1158
-    asm_fprintf ((STREAM), "\t.word\t%LL%d\n", (VALUE)); 			\
yann@1
  1159
+    asm_fprintf ((STREAM), "\t.long\t%LL%d\n", (VALUE))
yann@1
  1160
 
yann@1
  1161
 /* Output various types of constants.  */
yann@1
  1162
 
yann@1
  1163
@@ -3167,8 +3171,6 @@
yann@1
  1164
 #define sh_cpu_attr ((enum attr_cpu)sh_cpu)
yann@1
  1165
 extern enum processor_type sh_cpu;
yann@1
  1166
 
yann@1
  1167
-extern int optimize; /* needed for gen_casesi.  */
yann@1
  1168
-
yann@1
  1169
 enum mdep_reorg_phase_e
yann@1
  1170
 {
yann@1
  1171
   SH_BEFORE_MDEP_REORG,
yann@1
  1172
diff -ruN gcc-20030210.orig/gcc/config/sh/sh.md gcc-20030210/gcc/config/sh/sh.md
yann@1
  1173
--- gcc-20030210.orig/gcc/config/sh/sh.md	Sat Nov 23 04:58:06 2002
yann@1
  1174
+++ gcc-20030210/gcc/config/sh/sh.md	Sat Feb 22 01:40:14 2003
yann@1
  1175
@@ -1242,7 +1242,7 @@
yann@1
  1176
    (clobber (reg:SI PR_REG))
yann@1
  1177
    (clobber (reg:SI R4_REG))
yann@1
  1178
    (use (match_operand:SI 1 "arith_reg_operand" "r"))]
yann@1
  1179
-  "TARGET_SH1 && ! TARGET_SH4"
yann@1
  1180
+  "TARGET_SH1 && ! TARGET_SH4 || TARGET_NO_IMPLICIT_FP"
yann@1
  1181
   "jsr	@%1%#"
yann@1
  1182
   [(set_attr "type" "sfunc")
yann@1
  1183
    (set_attr "needs_delay_slot" "yes")])
yann@1
  1184
@@ -1336,7 +1336,7 @@
yann@1
  1185
 
yann@1
  1186
   operands[3] = gen_reg_rtx (Pmode);
yann@1
  1187
   /* Emit the move of the address to a pseudo outside of the libcall.  */
yann@1
  1188
-  if (TARGET_HARD_SH4 && TARGET_SH3E)
yann@1
  1189
+  if (TARGET_HARD_SH4 && TARGET_SH3E && !TARGET_NO_IMPLICIT_FP)
yann@1
  1190
     {
yann@1
  1191
       emit_move_insn (operands[3],
yann@1
  1192
 		      gen_rtx_SYMBOL_REF (SImode, \"__udivsi3_i4\"));
yann@1
  1193
@@ -1391,7 +1391,7 @@
yann@1
  1194
    (clobber (reg:SI R2_REG))
yann@1
  1195
    (clobber (reg:SI R3_REG))
yann@1
  1196
    (use (match_operand:SI 1 "arith_reg_operand" "r"))]
yann@1
  1197
-  "TARGET_SH1 && ! TARGET_SH4"
yann@1
  1198
+  "TARGET_SH1 && ! TARGET_SH4 || TARGET_NO_IMPLICIT_FP"
yann@1
  1199
   "jsr	@%1%#"
yann@1
  1200
   [(set_attr "type" "sfunc")
yann@1
  1201
    (set_attr "needs_delay_slot" "yes")])
yann@1
  1202
@@ -1476,7 +1476,7 @@
yann@1
  1203
 
yann@1
  1204
   operands[3] = gen_reg_rtx (Pmode);
yann@1
  1205
   /* Emit the move of the address to a pseudo outside of the libcall.  */
yann@1
  1206
-  if (TARGET_HARD_SH4 && TARGET_SH3E)
yann@1
  1207
+  if (TARGET_HARD_SH4 && TARGET_SH3E && !TARGET_NO_IMPLICIT_FP)
yann@1
  1208
     {
yann@1
  1209
       emit_move_insn (operands[3],
yann@1
  1210
 		      gen_rtx_SYMBOL_REF (SImode, \"__sdivsi3_i4\"));
yann@1
  1211
@@ -6446,6 +6446,8 @@
yann@1
  1212
     case SImode:
yann@1
  1213
       return \"shll2	%1\;mov.l	@(r0,%1),%0\";
yann@1
  1214
     case HImode:
yann@1
  1215
+      if (ADDR_DIFF_VEC_FLAGS (diff_vec).offset_unsigned)
yann@1
  1216
+	return \"add	%1,%1\;mov.w	@(r0,%1),%0\;extu.w	%0,%0\";
yann@1
  1217
       return \"add	%1,%1\;mov.w	@(r0,%1),%0\";
yann@1
  1218
     case QImode:
yann@1
  1219
       if (ADDR_DIFF_VEC_FLAGS (diff_vec).offset_unsigned)
yann@1
  1220
@@ -6455,7 +6457,15 @@
yann@1
  1221
       abort ();
yann@1
  1222
     }
yann@1
  1223
 }"
yann@1
  1224
-  [(set_attr "length" "4")])
yann@1
  1225
+  [(set (attr "length")
yann@1
  1226
+	(cond [(eq (symbol_ref "shl_casesi_worker_length (insn)") (const_int 1))
yann@1
  1227
+	       (const_string "2")
yann@1
  1228
+	       (eq (symbol_ref "shl_casesi_worker_length (insn)") (const_int 2))
yann@1
  1229
+	       (const_string "4")
yann@1
  1230
+	       ;; Put "match_dup" here so that insn_variable_length_p return 1.
yann@1
  1231
+	       (ne (match_dup 2) (match_dup 2))
yann@1
  1232
+	       (const_string "4")]
yann@1
  1233
+	      (const_string "6")))])
yann@1
  1234
 
yann@1
  1235
 (define_insn "casesi_shift_media"
yann@1
  1236
   [(set (match_operand 0 "arith_reg_operand" "=r")
yann@1
  1237
diff -ruN gcc-20030210.orig/gcc/config/sh/sh3-linux.h gcc-20030210/gcc/config/sh/sh3-linux.h
yann@1
  1238
--- gcc-20030210.orig/gcc/config/sh/sh3-linux.h	Thu Jan  1 09:00:00 1970
yann@1
  1239
+++ gcc-20030210/gcc/config/sh/sh3-linux.h	Sat Feb 22 01:40:14 2003
yann@1
  1240
@@ -0,0 +1,29 @@
yann@1
  1241
+#undef TARGET_VERSION
yann@1
  1242
+#define TARGET_VERSION  fputs (" (SH3 GNU/Linux with ELF)", stderr);
yann@1
  1243
+
yann@1
  1244
+#undef CPP_SPEC
yann@1
  1245
+#define CPP_SPEC \
yann@1
  1246
+  "-D__LITTLE_ENDIAN__ \
yann@1
  1247
+   -D__SH3__ -D__sh3__ \
yann@1
  1248
+   -D__SIZE_TYPE__=unsigned\\ int \
yann@1
  1249
+   -D__PTRDIFF_TYPE__=int \
yann@1
  1250
+   %{fPIC:-D__PIC__ -D__pic__} \
yann@1
  1251
+   %{fpic:-D__PIC__ -D__pic__} \
yann@1
  1252
+   %{posix:-D_POSIX_SOURCE} \
yann@1
  1253
+   %{pthread:-D_REENTRANT -D_PTHREADS}"
yann@1
  1254
+
yann@1
  1255
+#undef ASM_SPEC
yann@1
  1256
+#define ASM_SPEC  "%{mrelax:-relax}"
yann@1
  1257
+
yann@1
  1258
+#undef CC1_SPEC
yann@1
  1259
+#define CC1_SPEC \
yann@1
  1260
+  "-musermode -ml -m3 %{profile:-p}"
yann@1
  1261
+
yann@1
  1262
+#undef LINK_SPEC
yann@1
  1263
+#define LINK_SPEC \
yann@1
  1264
+  "%{mrelax:-relax} \
yann@1
  1265
+   %{shared:-shared} \
yann@1
  1266
+   %{!static: \
yann@1
  1267
+     %{rdynamic:-export-dynamic} \
yann@1
  1268
+     %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
yann@1
  1269
+    %{static:-static}"
yann@1
  1270
diff -ruN gcc-20030210.orig/gcc/config/sh/sh3eb-linux.h gcc-20030210/gcc/config/sh/sh3eb-linux.h
yann@1
  1271
--- gcc-20030210.orig/gcc/config/sh/sh3eb-linux.h	Thu Jan  1 09:00:00 1970
yann@1
  1272
+++ gcc-20030210/gcc/config/sh/sh3eb-linux.h	Sat Feb 22 01:40:14 2003
yann@1
  1273
@@ -0,0 +1,29 @@
yann@1
  1274
+#undef TARGET_VERSION
yann@1
  1275
+#define TARGET_VERSION  fputs (" (SH3EB GNU/Linux with ELF)", stderr);
yann@1
  1276
+
yann@1
  1277
+#undef CPP_SPEC
yann@1
  1278
+#define CPP_SPEC \
yann@1
  1279
+  "-D__BIG_ENDIAN__ \
yann@1
  1280
+   -D__SH3__ -D__sh3__ \
yann@1
  1281
+   -D__SIZE_TYPE__=unsigned\\ int \
yann@1
  1282
+   -D__PTRDIFF_TYPE__=int \
yann@1
  1283
+   %{fPIC:-D__PIC__ -D__pic__} \
yann@1
  1284
+   %{fpic:-D__PIC__ -D__pic__} \
yann@1
  1285
+   %{posix:-D_POSIX_SOURCE} \
yann@1
  1286
+   %{pthread:-D_REENTRANT -D_PTHREADS}"
yann@1
  1287
+
yann@1
  1288
+#undef ASM_SPEC
yann@1
  1289
+#define ASM_SPEC  "%{mrelax:-relax}"
yann@1
  1290
+
yann@1
  1291
+#undef CC1_SPEC
yann@1
  1292
+#define CC1_SPEC \
yann@1
  1293
+  "-musermode -mb -m3 %{profile:-p}"
yann@1
  1294
+
yann@1
  1295
+#undef LINK_SPEC
yann@1
  1296
+#define LINK_SPEC \
yann@1
  1297
+  "%{mrelax:-relax} \
yann@1
  1298
+   %{shared:-shared} \
yann@1
  1299
+   %{!static: \
yann@1
  1300
+     %{rdynamic:-export-dynamic} \
yann@1
  1301
+     %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
yann@1
  1302
+    %{static:-static}"
yann@1
  1303
diff -ruN gcc-20030210.orig/gcc/config/sh/sh4-linux.h gcc-20030210/gcc/config/sh/sh4-linux.h
yann@1
  1304
--- gcc-20030210.orig/gcc/config/sh/sh4-linux.h	Thu Jan  1 09:00:00 1970
yann@1
  1305
+++ gcc-20030210/gcc/config/sh/sh4-linux.h	Sat Feb 22 01:40:14 2003
yann@1
  1306
@@ -0,0 +1,29 @@
yann@1
  1307
+#undef TARGET_VERSION
yann@1
  1308
+#define TARGET_VERSION  fputs (" (SH4 GNU/Linux with ELF)", stderr);
yann@1
  1309
+
yann@1
  1310
+#undef CPP_SPEC
yann@1
  1311
+#define CPP_SPEC \
yann@1
  1312
+  "-D__LITTLE_ENDIAN__ \
yann@1
  1313
+   -D__SH4__ \
yann@1
  1314
+   -D__SIZE_TYPE__=unsigned\\ int \
yann@1
  1315
+   -D__PTRDIFF_TYPE__=int \
yann@1
  1316
+   %{fPIC:-D__PIC__ -D__pic__} \
yann@1
  1317
+   %{fpic:-D__PIC__ -D__pic__} \
yann@1
  1318
+   %{posix:-D_POSIX_SOURCE} \
yann@1
  1319
+   %{pthread:-D_REENTRANT -D_PTHREADS}"
yann@1
  1320
+
yann@1
  1321
+#undef ASM_SPEC
yann@1
  1322
+#define ASM_SPEC  "%{mrelax:-relax}"
yann@1
  1323
+
yann@1
  1324
+#undef CC1_SPEC
yann@1
  1325
+#define CC1_SPEC \
yann@1
  1326
+  "-musermode -ml -m4 %{profile:-p}"
yann@1
  1327
+
yann@1
  1328
+#undef LINK_SPEC
yann@1
  1329
+#define LINK_SPEC \
yann@1
  1330
+  "%{mrelax:-relax} \
yann@1
  1331
+   %{shared:-shared} \
yann@1
  1332
+   %{!static: \
yann@1
  1333
+     %{rdynamic:-export-dynamic} \
yann@1
  1334
+     %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
yann@1
  1335
+    %{static:-static}"
yann@1
  1336
diff -ruN gcc-20030210.orig/gcc/config/sh/sh4eb-linux.h gcc-20030210/gcc/config/sh/sh4eb-linux.h
yann@1
  1337
--- gcc-20030210.orig/gcc/config/sh/sh4eb-linux.h	Thu Jan  1 09:00:00 1970
yann@1
  1338
+++ gcc-20030210/gcc/config/sh/sh4eb-linux.h	Sat Feb 22 01:40:14 2003
yann@1
  1339
@@ -0,0 +1,29 @@
yann@1
  1340
+#undef TARGET_VERSION
yann@1
  1341
+#define TARGET_VERSION  fputs (" (SH4EB GNU/Linux with ELF)", stderr);
yann@1
  1342
+
yann@1
  1343
+#undef CPP_SPEC
yann@1
  1344
+#define CPP_SPEC \
yann@1
  1345
+  "-D__BIG_ENDIAN__ \
yann@1
  1346
+   -D__SH4__ \
yann@1
  1347
+   -D__SIZE_TYPE__=unsigned\\ int \
yann@1
  1348
+   -D__PTRDIFF_TYPE__=int \
yann@1
  1349
+   %{fPIC:-D__PIC__ -D__pic__} \
yann@1
  1350
+   %{fpic:-D__PIC__ -D__pic__} \
yann@1
  1351
+   %{posix:-D_POSIX_SOURCE} \
yann@1
  1352
+   %{pthread:-D_REENTRANT -D_PTHREADS}"
yann@1
  1353
+
yann@1
  1354
+#undef ASM_SPEC
yann@1
  1355
+#define ASM_SPEC  "%{mrelax:-relax}"
yann@1
  1356
+
yann@1
  1357
+#undef CC1_SPEC
yann@1
  1358
+#define CC1_SPEC \
yann@1
  1359
+  "-musermode -mb -m4 %{profile:-p}"
yann@1
  1360
+
yann@1
  1361
+#undef LINK_SPEC
yann@1
  1362
+#define LINK_SPEC \
yann@1
  1363
+  "%{mrelax:-relax} \
yann@1
  1364
+   %{shared:-shared} \
yann@1
  1365
+   %{!static: \
yann@1
  1366
+     %{rdynamic:-export-dynamic} \
yann@1
  1367
+     %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
yann@1
  1368
+    %{static:-static}"
yann@1
  1369
diff -ruN gcc-20030210.orig/gcc/config/sh/t-linux gcc-20030210/gcc/config/sh/t-linux
yann@1
  1370
--- gcc-20030210.orig/gcc/config/sh/t-linux	Thu May 17 12:16:12 2001
yann@1
  1371
+++ gcc-20030210/gcc/config/sh/t-linux	Sat Feb 22 01:40:14 2003
yann@1
  1372
@@ -1,10 +1,20 @@
yann@1
  1373
-TARGET_LIBGCC2_CFLAGS = -fpic
yann@1
  1374
+TARGET_LIBGCC2_CFLAGS = -fpic -DNO_FPSCR_VALUES
yann@1
  1375
+LIBGCC1 = libgcc1-asm.a
yann@1
  1376
+CROSS_LIBGCC1 = libgcc1-asm.a
yann@1
  1377
+LIBGCC1_TEST = libgcc1-test
yann@1
  1378
 LIB1ASMFUNCS = _ashiftrt _ashiftrt_n _ashiftlt _lshiftrt _movstr \
yann@1
  1379
   _movstr_i4 _mulsi3 _sdivsi3 _sdivsi3_i4 _udivsi3 _udivsi3_i4 _set_fpscr \
yann@1
  1380
   _ic_invalidate
yann@1
  1381
+LIB2ADDEH = $(srcdir)/unwind-sjlj.c
yann@1
  1382
+LIB2ADDEHDEP = unwind.inc unwind-sjlj.c
yann@1
  1383
 
yann@1
  1384
-MULTILIB_OPTIONS= mb m3e/m4
yann@1
  1385
+MULTILIB_OPTIONS= mb m4
yann@1
  1386
 MULTILIB_DIRNAMES= 
yann@1
  1387
 MULTILIB_MATCHES = 
yann@1
  1388
 
yann@1
  1389
-EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o crtbeginS.o crtendS.o
yann@1
  1390
+EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
yann@1
  1391
+
yann@1
  1392
+# Override t-slibgcc-elf-ver to export some libgcc symbols with
yann@1
  1393
+# the symbol versions that glibc used and SH specific.
yann@1
  1394
+SHLIB_MAPFILES =  $(srcdir)/libgcc-std.ver \
yann@1
  1395
+		  $(srcdir)/config/sh/libgcc-glibc.ver
yann@1
  1396
diff -ruN gcc-20030210.orig/gcc/config/sh/t-linux-nomulti gcc-20030210/gcc/config/sh/t-linux-nomulti
yann@1
  1397
--- gcc-20030210.orig/gcc/config/sh/t-linux-nomulti	Thu Jan  1 09:00:00 1970
yann@1
  1398
+++ gcc-20030210/gcc/config/sh/t-linux-nomulti	Sat Feb 22 01:40:14 2003
yann@1
  1399
@@ -0,0 +1,9 @@
yann@1
  1400
+LIBGCC = libgcc.a
yann@1
  1401
+EXTRA_PARTS = crtbegin.o crtbeginS.o crtend.o crtendS.o crtbeginT.o
yann@1
  1402
+
yann@1
  1403
+INSTALL_LIBGCC = install-libgcc
yann@1
  1404
+
yann@1
  1405
+MULTILIB_OPTIONS=
yann@1
  1406
+MULTILIB_DIRNAMES= 
yann@1
  1407
+MULTILIB_MATCHES = 
yann@1
  1408
+EXTRA_MULTILIB_PARTS=
yann@1
  1409
diff -ruN gcc-20030210.orig/gcc/config.gcc gcc-20030210/gcc/config.gcc
yann@1
  1410
--- gcc-20030210.orig/gcc/config.gcc	Fri Jan 31 19:17:13 2003
yann@1
  1411
+++ gcc-20030210/gcc/config.gcc	Sat Feb 22 01:40:14 2003
yann@1
  1412
@@ -337,9 +337,9 @@
yann@1
  1413
 sparc*-*-*)
yann@1
  1414
 	cpu_type=sparc
yann@1
  1415
 	;;
yann@1
  1416
-sh64-*-*)
yann@1
  1417
-	cpu_type=sh
yann@1
  1418
-	;;
yann@1
  1419
+sh*-*-*)
yann@1
  1420
+ 	cpu_type=sh
yann@1
  1421
+ 	;;
yann@1
  1422
 esac
yann@1
  1423
 
yann@1
  1424
 tm_file=${cpu_type}/${cpu_type}.h
yann@1
  1425
@@ -3018,9 +3018,31 @@
yann@1
  1426
 	  thread_file='rtems'
yann@1
  1427
 	fi
yann@1
  1428
 	;;
yann@1
  1429
-sh-*-linux*)
yann@1
  1430
+sh*-*-linux*)
yann@1
  1431
 	tm_file="${tm_file} sh/elf.h sh/linux.h"
yann@1
  1432
-	tmake_file="sh/t-sh sh/t-elf sh/t-linux"
yann@1
  1433
+	tmake_file="sh/t-sh sh/t-elf t-slibgcc-elf-ver t-linux sh/t-linux"
yann@1
  1434
+	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
yann@1
  1435
+	case $machine in
yann@1
  1436
+		sh3eb-*)
yann@1
  1437
+			tm_file="${tm_file} sh/sh3eb-linux.h"
yann@1
  1438
+			tmake_file="${tmake_file} sh/t-linux-nomulti"
yann@1
  1439
+			;;
yann@1
  1440
+		sh4eb-*)
yann@1
  1441
+			tm_file="${tm_file} sh/sh4eb-linux.h"
yann@1
  1442
+			tmake_file="${tmake_file} sh/t-linux-nomulti"
yann@1
  1443
+			;;
yann@1
  1444
+		sh3-*)
yann@1
  1445
+			tm_file="${tm_file} sh/sh3-linux.h"
yann@1
  1446
+			tmake_file="${tmake_file} sh/t-linux-nomulti"
yann@1
  1447
+			;;
yann@1
  1448
+		sh4-*)
yann@1
  1449
+			tm_file="${tm_file} sh/sh4-linux.h"
yann@1
  1450
+			tmake_file="${tmake_file} sh/t-linux-nomulti"
yann@1
  1451
+			;;
yann@1
  1452
+		*)
yann@1
  1453
+			;;
yann@1
  1454
+	esac
yann@1
  1455
+	xmake_file=x-linux
yann@1
  1456
 	gas=yes gnu_ld=yes
yann@1
  1457
 	float_format=sh
yann@1
  1458
 	;;
yann@1
  1459
diff -ruN gcc-20030210.orig/gcc/dwarf2out.c gcc-20030210/gcc/dwarf2out.c
yann@1
  1460
--- gcc-20030210.orig/gcc/dwarf2out.c	Mon Feb 10 19:36:25 2003
yann@1
  1461
+++ gcc-20030210/gcc/dwarf2out.c	Sat Feb 22 01:40:14 2003
yann@1
  1462
@@ -10224,7 +10224,9 @@
yann@1
  1463
 	  /* We can have a normal definition following an inline one in the
yann@1
  1464
 	     case of redefinition of GNU C extern inlines.
yann@1
  1465
 	     It seems reasonable to use AT_specification in this case.  */
yann@1
  1466
-	  && !get_AT_unsigned (old_die, DW_AT_inline))
yann@1
  1467
+	  && !get_AT_unsigned (old_die, DW_AT_inline)
yann@1
  1468
+	  /* Skip the nested function.  */
yann@1
  1469
+	  && !decl_function_context (decl))
yann@1
  1470
 	{
yann@1
  1471
 	  /* ??? This can happen if there is a bug in the program, for
yann@1
  1472
 	     instance, if it has duplicate function definitions.  Ideally,
yann@1
  1473
diff -ruN gcc-20030210.orig/gcc/final.c gcc-20030210/gcc/final.c
yann@1
  1474
--- gcc-20030210.orig/gcc/final.c	Fri Jan 31 19:17:20 2003
yann@1
  1475
+++ gcc-20030210/gcc/final.c	Sat Feb 22 01:40:14 2003
yann@1
  1476
@@ -1128,7 +1128,7 @@
yann@1
  1477
 	    }
yann@1
  1478
 	}
yann@1
  1479
 
yann@1
  1480
-      INSN_ADDRESSES (uid) = insn_current_address;
yann@1
  1481
+      INSN_ADDRESSES (uid) = insn_current_address + insn_lengths[uid];
yann@1
  1482
 
yann@1
  1483
       if (GET_CODE (insn) == NOTE || GET_CODE (insn) == BARRIER
yann@1
  1484
 	  || GET_CODE (insn) == CODE_LABEL)
yann@1
  1485
diff -ruN gcc-20030210.orig/gcc/mkmap-symver.awk gcc-20030210/gcc/mkmap-symver.awk
yann@1
  1486
--- gcc-20030210.orig/gcc/mkmap-symver.awk	Fri Jan 31 19:17:26 2003
yann@1
  1487
+++ gcc-20030210/gcc/mkmap-symver.awk	Sat Feb 22 01:40:14 2003
yann@1
  1488
@@ -89,7 +89,11 @@
yann@1
  1489
     output(inherit[lib]);
yann@1
  1490
 
yann@1
  1491
   printf("%s {\n", lib);
yann@1
  1492
-  printf("  global:\n");
yann@1
  1493
+  for (sym in ver)
yann@1
  1494
+    if ((ver[sym] == lib) && (sym in def))
yann@1
  1495
+      count++;
yann@1
  1496
+  if (count > 0)
yann@1
  1497
+    printf("  global:\n");
yann@1
  1498
   for (sym in ver)
yann@1
  1499
     if ((ver[sym] == lib) && (sym in def))
yann@1
  1500
       {
yann@1
  1501
diff -ruN gcc-20030210.orig/gcc/reload1.c gcc-20030210/gcc/reload1.c
yann@1
  1502
--- gcc-20030210.orig/gcc/reload1.c	Fri Jan 31 19:17:29 2003
yann@1
  1503
+++ gcc-20030210/gcc/reload1.c	Sat Feb 22 01:40:14 2003
yann@1
  1504
@@ -6103,6 +6103,7 @@
yann@1
  1505
 	    for (j = 0; j < n_reloads; j++)
yann@1
  1506
 	      if (rld[j].in != 0
yann@1
  1507
 		  && rld[j].when_needed != RELOAD_OTHER
yann@1
  1508
+		  && rld[j].when_needed != RELOAD_FOR_OUTPUT_ADDRESS
yann@1
  1509
 		  && reg_overlap_mentioned_for_reload_p (rld[j].in,
yann@1
  1510
 							 rld[i].in))
yann@1
  1511
 		rld[j].when_needed
yann@1
  1512
diff -ruN gcc-20030210.orig/gcc/reorg.c gcc-20030210/gcc/reorg.c
yann@1
  1513
--- gcc-20030210.orig/gcc/reorg.c	Fri Jan 31 19:17:30 2003
yann@1
  1514
+++ gcc-20030210/gcc/reorg.c	Sat Feb 22 01:40:14 2003
yann@1
  1515
@@ -3265,6 +3265,14 @@
yann@1
  1516
 		|| condjump_in_parallel_p (XVECEXP (PATTERN (insn), 0, 0))))
yann@1
  1517
 	continue;
yann@1
  1518
 
yann@1
  1519
+#ifdef MD_CAN_REDIRECT_BRANCH
yann@1
  1520
+      /* On some targets, branches with delay slots can have a limited
yann@1
  1521
+	 displacement.  Give the back end a chance to tell us we can't do
yann@1
  1522
+	 this.  */
yann@1
  1523
+      if (! MD_CAN_REDIRECT_BRANCH (insn, delay_insn))
yann@1
  1524
+	continue;
yann@1
  1525
+#endif
yann@1
  1526
+
yann@1
  1527
       target_label = JUMP_LABEL (delay_insn);
yann@1
  1528
 
yann@1
  1529
       if (target_label)
yann@1
  1530
diff -ruN gcc-20030210.orig/gcc/tree-inline.c gcc-20030210/gcc/tree-inline.c
yann@1
  1531
--- gcc-20030210.orig/gcc/tree-inline.c	Fri Jan 31 19:17:33 2003
yann@1
  1532
+++ gcc-20030210/gcc/tree-inline.c	Sat Feb 22 01:40:14 2003
yann@1
  1533
@@ -836,11 +836,17 @@
yann@1
  1534
 
yann@1
  1535
   /* Don't try to inline functions that are not well-suited to
yann@1
  1536
      inlining.  */
yann@1
  1537
-  if (!inlinable_function_p (fn, id))
yann@1
  1538
-    return NULL_TREE;
yann@1
  1539
+  if (! inlinable_function_p (fn, id)
yann@1
  1540
+      || ! (*lang_hooks.tree_inlining.start_inlining) (fn))
yann@1
  1541
+    {
yann@1
  1542
+      if (DECL_INLINE (fn) && warn_inline && ! flag_really_no_inline)
yann@1
  1543
+	{
yann@1
  1544
+	  warning_with_decl (fn, "inlining failed in call to `%s'");
yann@1
  1545
+	  warning ("called from here");
yann@1
  1546
+	}
yann@1
  1547
 
yann@1
  1548
-  if (! (*lang_hooks.tree_inlining.start_inlining) (fn))
yann@1
  1549
-    return NULL_TREE;
yann@1
  1550
+      return NULL_TREE;
yann@1
  1551
+    }
yann@1
  1552
 
yann@1
  1553
   /* Set the current filename and line number to the function we are
yann@1
  1554
      inlining so that when we create new _STMT nodes here they get
yann@1
  1555
diff -ruN gcc-20030210.orig/libjava/Makefile.in gcc-20030210/libjava/Makefile.in
yann@1
  1556
--- gcc-20030210.orig/libjava/Makefile.in	Tue Jan 28 10:44:37 2003
yann@1
  1557
+++ gcc-20030210/libjava/Makefile.in	Sat Feb 22 01:40:14 2003
yann@1
  1558
@@ -1637,6 +1637,7 @@
yann@1
  1559
 	"AS=$(AS)" \
yann@1
  1560
 	"CC=$(CC)" \
yann@1
  1561
 	"CXX=$(CXX)" \
yann@1
  1562
+	"GCJ=$(GCJ)" \
yann@1
  1563
 	"LD=$(LD)" \
yann@1
  1564
 	"LIBCFLAGS=$(LIBCFLAGS)" \
yann@1
  1565
 	"NM=$(NM)" \
yann@1
  1566
diff -ruN gcc-20030210.orig/libjava/configure gcc-20030210/libjava/configure
yann@1
  1567
--- gcc-20030210.orig/libjava/configure	Tue Jan 28 10:44:37 2003
yann@1
  1568
+++ gcc-20030210/libjava/configure	Sat Feb 22 01:42:11 2003
yann@1
  1569
@@ -2031,7 +2031,7 @@
yann@1
  1570
 # This must be Linux ELF.
yann@1
  1571
 linux-gnu*)
yann@1
  1572
   case $host_cpu in
yann@1
  1573
-  alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* )
yann@1
  1574
+  alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh* )
yann@1
  1575
     lt_cv_deplibs_check_method=pass_all ;;
yann@1
  1576
   *)
yann@1
  1577
     # glibc up to 2.1.1 does not perform some relocations on ARM
yann@1
  1578
diff -ruN gcc-20030210.orig/libjava/java/net/natInetAddress.cc gcc-20030210/libjava/java/net/natInetAddress.cc
yann@1
  1579
--- gcc-20030210.orig/libjava/java/net/natInetAddress.cc	Tue Mar  5 05:02:19 2002
yann@1
  1580
+++ gcc-20030210/libjava/java/net/natInetAddress.cc	Sat Feb 22 01:40:14 2003
yann@1
  1581
@@ -56,7 +56,7 @@
yann@1
  1582
 #endif
yann@1
  1583
 
yann@1
  1584
 #ifndef HAVE_GETHOSTNAME_DECL
yann@1
  1585
-extern "C" int gethostname (char *name, int namelen);
yann@1
  1586
+extern "C" int gethostname (char *name, unsigned int namelen);
yann@1
  1587
 #endif
yann@1
  1588
 
yann@1
  1589
 #ifdef DISABLE_JAVA_NET
yann@1
  1590
diff -ruN gcc-20030210.orig/libjava/libltdl/aclocal.m4 gcc-20030210/libjava/libltdl/aclocal.m4
yann@1
  1591
--- gcc-20030210.orig/libjava/libltdl/aclocal.m4	Sun Sep 10 17:04:40 2000
yann@1
  1592
+++ gcc-20030210/libjava/libltdl/aclocal.m4	Sat Feb 22 01:40:14 2003
yann@1
  1593
@@ -573,7 +573,7 @@
yann@1
  1594
 # This must be Linux ELF.
yann@1
  1595
 linux-gnu*)
yann@1
  1596
   case "$host_cpu" in
yann@1
  1597
-  alpha* | i*86 | powerpc* | sparc* | ia64* )
yann@1
  1598
+  alpha* | i*86 | powerpc* | sparc* | ia64* | sh*)
yann@1
  1599
     lt_cv_deplibs_check_method=pass_all ;;
yann@1
  1600
   *)
yann@1
  1601
     # glibc up to 2.1.1 does not perform some relocations on ARM
yann@1
  1602
diff -ruN gcc-20030210.orig/libjava/sysdep/sh/locks.h gcc-20030210/libjava/sysdep/sh/locks.h
yann@1
  1603
--- gcc-20030210.orig/libjava/sysdep/sh/locks.h	Thu Jan  1 09:00:00 1970
yann@1
  1604
+++ gcc-20030210/libjava/sysdep/sh/locks.h	Sat Feb 22 01:40:14 2003
yann@1
  1605
@@ -0,0 +1,72 @@
yann@1
  1606
+// locks.h - Thread synchronization primitives. SuperH implementation.
yann@1
  1607
+
yann@1
  1608
+/* Copyright (C) 2002  Free Software Foundation
yann@1
  1609
+
yann@1
  1610
+   This file is part of libgcj.
yann@1
  1611
+
yann@1
  1612
+This software is copyrighted work licensed under the terms of the
yann@1
  1613
+Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
yann@1
  1614
+details.  */
yann@1
  1615
+
yann@1
  1616
+#ifndef __SYSDEP_LOCKS_H__
yann@1
  1617
+#define __SYSDEP_LOCKS_H__
yann@1
  1618
+
yann@1
  1619
+typedef size_t obj_addr_t;	/* Integer type big enough for object	*/
yann@1
  1620
+				/* address.				*/
yann@1
  1621
+
yann@1
  1622
+static unsigned char __cas_lock = 0;
yann@1
  1623
+
yann@1
  1624
+inline static void
yann@1
  1625
+__cas_start_atomic (void)
yann@1
  1626
+{
yann@1
  1627
+  unsigned int val;
yann@1
  1628
+
yann@1
  1629
+  do
yann@1
  1630
+    __asm__ __volatile__ ("tas.b @%1; movt %0"
yann@1
  1631
+			  : "=r" (val)
yann@1
  1632
+			  : "r" (&__cas_lock)
yann@1
  1633
+			  : "memory");
yann@1
  1634
+  while (val == 0);
yann@1
  1635
+}
yann@1
  1636
+
yann@1
  1637
+inline static void
yann@1
  1638
+__cas_end_atomic (void)
yann@1
  1639
+{
yann@1
  1640
+  __asm__ __volatile__ (" " : : : "memory");
yann@1
  1641
+  __cas_lock = 0;
yann@1
  1642
+}
yann@1
  1643
+
yann@1
  1644
+inline static bool
yann@1
  1645
+compare_and_swap (volatile obj_addr_t *addr, obj_addr_t old,
yann@1
  1646
+		  obj_addr_t new_val)
yann@1
  1647
+{
yann@1
  1648
+  bool ret;
yann@1
  1649
+
yann@1
  1650
+  __cas_start_atomic ();
yann@1
  1651
+  if (*addr != old)
yann@1
  1652
+    ret = false;
yann@1
  1653
+  else
yann@1
  1654
+    {
yann@1
  1655
+      *addr = new_val;
yann@1
  1656
+      ret = true;
yann@1
  1657
+    }
yann@1
  1658
+  __cas_end_atomic ();
yann@1
  1659
+
yann@1
  1660
+  return ret;
yann@1
  1661
+}
yann@1
  1662
+
yann@1
  1663
+inline static void
yann@1
  1664
+release_set (volatile obj_addr_t *addr, obj_addr_t new_val)
yann@1
  1665
+{
yann@1
  1666
+  __asm__ __volatile__ (" " : : : "memory");
yann@1
  1667
+  *(addr) = new_val;
yann@1
  1668
+}
yann@1
  1669
+
yann@1
  1670
+inline static bool
yann@1
  1671
+compare_and_swap_release (volatile obj_addr_t *addr, obj_addr_t old,
yann@1
  1672
+			  obj_addr_t new_val)
yann@1
  1673
+{
yann@1
  1674
+  return compare_and_swap (addr, old, new_val);
yann@1
  1675
+}
yann@1
  1676
+
yann@1
  1677
+#endif /* ! __SYSDEP_LOCKS_H__ */
yann@1
  1678
diff -ruN gcc-20030210.orig/libstdc++-v3/acinclude.m4 gcc-20030210/libstdc++-v3/acinclude.m4
yann@1
  1679
--- gcc-20030210.orig/libstdc++-v3/acinclude.m4	Tue Jan 28 02:30:41 2003
yann@1
  1680
+++ gcc-20030210/libstdc++-v3/acinclude.m4	Sat Feb 22 01:40:14 2003
yann@1
  1681
@@ -1828,9 +1828,10 @@
yann@1
  1682
   GLIBCPP_INCLUDES="-I${glibcpp_builddir}/include/${target_alias} -I${glibcpp_builddir}/include"
yann@1
  1683
 
yann@1
  1684
   # Passed down for canadian crosses.
yann@1
  1685
-  if test x"$CANADIAN" = xyes; then
yann@1
  1686
-    TOPLEVEL_INCLUDES='-I$(includedir)'
yann@1
  1687
-  fi
yann@1
  1688
+  #if test x"$CANADIAN" = xyes; then
yann@1
  1689
+  #  TOPLEVEL_INCLUDES='-I$(includedir)'
yann@1
  1690
+  #fi
yann@1
  1691
+  TOPLEVEL_INCLUDES=''
yann@1
  1692
 
yann@1
  1693
   LIBMATH_INCLUDES='-I$(top_srcdir)/libmath'
yann@1
  1694
 
yann@1
  1695
diff -ruN gcc-20030210.orig/libstdc++-v3/aclocal.m4 gcc-20030210/libstdc++-v3/aclocal.m4
yann@1
  1696
--- gcc-20030210.orig/libstdc++-v3/aclocal.m4	Mon Feb 10 19:36:47 2003
yann@1
  1697
+++ gcc-20030210/libstdc++-v3/aclocal.m4	Sat Feb 22 01:40:14 2003
yann@1
  1698
@@ -1840,9 +1840,10 @@
yann@1
  1699
   GLIBCPP_INCLUDES="-I${glibcpp_builddir}/include/${target_alias} -I${glibcpp_builddir}/include"
yann@1
  1700
 
yann@1
  1701
   # Passed down for canadian crosses.
yann@1
  1702
-  if test x"$CANADIAN" = xyes; then
yann@1
  1703
-    TOPLEVEL_INCLUDES='-I$(includedir)'
yann@1
  1704
-  fi
yann@1
  1705
+  #if test x"$CANADIAN" = xyes; then
yann@1
  1706
+  #  TOPLEVEL_INCLUDES='-I$(includedir)'
yann@1
  1707
+  #fi
yann@1
  1708
+  TOPLEVEL_INCLUDES=''
yann@1
  1709
 
yann@1
  1710
   LIBMATH_INCLUDES='-I$(top_srcdir)/libmath'
yann@1
  1711
 
yann@1
  1712
diff -ruN gcc-20030210.orig/libstdc++-v3/configure gcc-20030210/libstdc++-v3/configure
yann@1
  1713
--- gcc-20030210.orig/libstdc++-v3/configure	Mon Feb 10 19:37:17 2003
yann@1
  1714
+++ gcc-20030210/libstdc++-v3/configure	Sat Feb 22 01:40:14 2003
yann@1
  1715
@@ -1982,7 +1982,7 @@
yann@1
  1716
 # This must be Linux ELF.
yann@1
  1717
 linux-gnu*)
yann@1
  1718
   case $host_cpu in
yann@1
  1719
-  alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* )
yann@1
  1720
+  alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh*)
yann@1
  1721
     lt_cv_deplibs_check_method=pass_all ;;
yann@1
  1722
   *)
yann@1
  1723
     # glibc up to 2.1.1 does not perform some relocations on ARM
yann@1
  1724
@@ -22340,9 +22340,10 @@
yann@1
  1725
   GLIBCPP_INCLUDES="-I${glibcpp_builddir}/include/${target_alias} -I${glibcpp_builddir}/include"
yann@1
  1726
 
yann@1
  1727
   # Passed down for canadian crosses.
yann@1
  1728
-  if test x"$CANADIAN" = xyes; then
yann@1
  1729
-    TOPLEVEL_INCLUDES='-I$(includedir)'
yann@1
  1730
-  fi
yann@1
  1731
+  #if test x"$CANADIAN" = xyes; then
yann@1
  1732
+  #  TOPLEVEL_INCLUDES='-I$(includedir)'
yann@1
  1733
+  #fi
yann@1
  1734
+  TOPLEVEL_INCLUDES=''
yann@1
  1735
 
yann@1
  1736
   LIBMATH_INCLUDES='-I$(top_srcdir)/libmath'
yann@1
  1737
 
yann@1
  1738
diff -ruN gcc-20030210.orig/libtool.m4 gcc-20030210/libtool.m4
yann@1
  1739
--- gcc-20030210.orig/libtool.m4	Fri Jan 31 19:16:59 2003
yann@1
  1740
+++ gcc-20030210/libtool.m4	Sat Feb 22 01:40:14 2003
yann@1
  1741
@@ -597,7 +597,7 @@
yann@1
  1742
 # This must be Linux ELF.
yann@1
  1743
 linux-gnu*)
yann@1
  1744
   case $host_cpu in
yann@1
  1745
-  alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* )
yann@1
  1746
+  alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh* )
yann@1
  1747
     lt_cv_deplibs_check_method=pass_all ;;
yann@1
  1748
   *)
yann@1
  1749
     # glibc up to 2.1.1 does not perform some relocations on ARM
yann@1
  1750
diff -ruN gcc-20030210.orig/zlib/configure gcc-20030210/zlib/configure
yann@1
  1751
--- gcc-20030210.orig/zlib/configure	Tue Jan 28 10:44:15 2003
yann@1
  1752
+++ gcc-20030210/zlib/configure	Sat Feb 22 01:40:14 2003
yann@1
  1753
@@ -1571,7 +1571,7 @@
yann@1
  1754
 # This must be Linux ELF.
yann@1
  1755
 linux-gnu*)
yann@1
  1756
   case $host_cpu in
yann@1
  1757
-  alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* )
yann@1
  1758
+  alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh* )
yann@1
  1759
     lt_cv_deplibs_check_method=pass_all ;;
yann@1
  1760
   *)
yann@1
  1761
     # glibc up to 2.1.1 does not perform some relocations on ARM