Commit 50b47fad authored by Paul Mundt's avatar Paul Mundt
Browse files

Add proper target support for newfangled sh targets.

GCC folk in their infinite wisdom have added half-assed target support
for newer sh cores. The support is there, but of course we have no
way to actually enable the thing, so we do that with this patch.

Likewise, binutils has no idea about any of these new targets either (not
even a half-assed attempt, sadly), so we fix that up too.. now we're able
to actually build a real toolchain for sh2a_nofpu- and other more ineptly
named toolchains (and yes, there are more inept targets than that one,
really. Go look, I promise).
parent 306f002a
Loading
Loading
Loading
Loading
+76 −0
Original line number Diff line number Diff line
@@ -40,6 +40,24 @@ diff -urN binutils-2.16.90.0.2-dist/configure binutils-2.16.90.0.2/configure
         # Enable libmudflap by default in GNU and friends.
 	;;
     *-*-freebsd*)
@@ -1207,7 +1207,7 @@
   am33_2.0-*-linux*)
     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
     ;;
-  sh-*-linux*)
+  sh*-*-linux*)
     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
     ;;    
   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
@@ -1495,7 +1495,7 @@
   romp-*-*)
     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
     ;;
-  sh-*-* | sh64-*-*)
+  sh*-*-* | sh64-*-*)
     case "${host}" in
       i[3456789]86-*-vsta) ;; # don't add gprof back in
       i[3456789]86-*-go32*) ;; # don't add gprof back in
diff -urN binutils-2.16.90.0.2-dist/configure.in binutils-2.16.90.0.2/configure.in
--- binutils-2.16.90.0.2-dist/configure.in	2005-04-29 12:50:23.000000000 -0500
+++ binutils-2.16.90.0.2/configure.in	2005-04-30 11:29:51.643139832 -0500
@@ -52,6 +70,24 @@ diff -urN binutils-2.16.90.0.2-dist/configure.in binutils-2.16.90.0.2/configure.
         # Enable libmudflap by default in GNU and friends.
 	;;
     *-*-freebsd*)
@@ -424,7 +424,7 @@
   am33_2.0-*-linux*)
     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
     ;;
-  sh-*-linux*)
+  sh*-*-linux*)
     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
     ;;    
   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
@@ -712,7 +712,7 @@
   romp-*-*)
     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
     ;;
-  sh-*-* | sh64-*-*)
+  sh*-*-* | sh64-*-*)
     case "${host}" in
       i[[3456789]]86-*-vsta) ;; # don't add gprof back in
       i[[3456789]]86-*-go32*) ;; # don't add gprof back in
diff -urN binutils-2.16.90.0.2-dist/gas/configure binutils-2.16.90.0.2/gas/configure
--- binutils-2.16.90.0.2-dist/gas/configure	2005-04-29 12:50:27.000000000 -0500
+++ binutils-2.16.90.0.2/gas/configure	2005-04-30 11:35:21.097055224 -0500
@@ -216,3 +252,43 @@ diff -urN binutils-2.16.90.0.2-dist/opcodes/configure binutils-2.16.90.0.2/opcod
 netbsd* | knetbsd*-gnu)
   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
diff -urN binutils-2.16.90.0.2.orig/config.sub binutils-2.16.90.0.2/config.sub
--- binutils-2.16.90.0.2.orig/config.sub	2005-04-29 20:50:23.000000000 +0300
+++ binutils-2.16.90.0.2/config.sub	2005-05-02 13:34:38.400457452 +0300
@@ -265,7 +265,7 @@
 	| pdp10 | pdp11 | pj | pjl \
 	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
 	| pyramid \
-	| sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+	| sh | sh[1234]* | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
 	| sh64 | sh64le \
 	| sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \
 	| sparcv8 | sparcv9 | sparcv9b \
@@ -340,7 +340,7 @@
 	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
 	| pyramid-* \
 	| romp-* | rs6000-* \
-	| sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
+	| sh-* | sh[1234]*-* | sh[23]e-* | sh[34]eb-* | shbe-* \
 	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
 	| sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \
 	| sparclite-* \
@@ -891,9 +891,6 @@
 		basic_machine=sh-hitachi
 		os=-hms
 		;;
-	sh64)
-		basic_machine=sh64-unknown
-		;;
 	sparclite-wrs | simso-wrs)
 		basic_machine=sparclite-wrs
 		os=-vxworks
@@ -1093,7 +1090,7 @@
 	we32k)
 		basic_machine=we32k-att
 		;;
-	sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
+	sh2* | sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
 		basic_machine=sh-unknown
 		;;
 	sh64)
+49 −0
Original line number Diff line number Diff line
@@ -338,6 +338,15 @@ diff -urN gcc-4.0.0-dist/gcc/config.gcc gcc-4.0.0/gcc/config.gcc
 cris-*-linux*)
 	tm_file="dbxelf.h elfos.h svr4.h ${tm_file} linux.h cris/linux.h"
 	# We need to avoid using t-linux, so override default tmake_file
@@ -1759,7 +1759,7 @@
 	;;
 sh-*-elf* | sh[12346l]*-*-elf* | sh*-*-kaos* | \
 sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \
-  sh-*-linux* | sh[346lbe]*-*-linux* | \
+  sh*-*-linux* | sh[346lbe]*-*-linux* | \
   sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \
    sh64-*-netbsd* | sh64l*-*-netbsd*)
 	tmake_file="${tmake_file} sh/t-sh sh/t-elf"
@@ -1780,6 +1789,8 @@
 	esac
 	tm_file="${tm_file} sh/elf.h"
@@ -487,3 +496,43 @@ diff -urN gcc-4.0.0-dist/zlib/configure gcc-4.0.0/zlib/configure
 netbsd* | knetbsd*-gnu)
   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
diff -urN gcc-4.0.0.orig/config.sub gcc-4.0.0/config.sub
--- gcc-4.0.0.orig/config.sub	2005-01-18 03:20:48.000000000 +0200
+++ gcc-4.0.0/config.sub	2005-05-02 13:46:44.643407037 +0300
@@ -260,7 +260,7 @@
 	| pdp10 | pdp11 | pj | pjl \
 	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
 	| pyramid \
-	| sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+	| sh | sh[1234]* | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
 	| sh64 | sh64le \
 	| sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \
 	| strongarm \
@@ -334,7 +334,7 @@
 	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
 	| pyramid-* \
 	| romp-* | rs6000-* \
-	| sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
+	| sh-* | sh[1234]*-* | sh[23]e-* | sh[34]eb-* | shbe-* \
 	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
 	| sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
 	| sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
@@ -884,9 +884,6 @@
 		basic_machine=sh-hitachi
 		os=-hms
 		;;
-	sh64)
-		basic_machine=sh64-unknown
-		;;
 	sparclite-wrs | simso-wrs)
 		basic_machine=sparclite-wrs
 		os=-vxworks
@@ -1086,7 +1083,7 @@
 	we32k)
 		basic_machine=we32k-att
 		;;
-	sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
+	sh2* | sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
 		basic_machine=sh-unknown
 		;;
 	sh64)