OpenCores
URL https://opencores.org/ocsvn/zipcpu/zipcpu/trunk

Subversion Repositories zipcpu

[/] [zipcpu/] [trunk/] [sw/] [gcc-zippatch.patch] - Diff between revs 146 and 171

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 146 Rev 171
Line 136... Line 136...
+#undef TARGET_OPTION_OPTIMIZATION_TABLE
+#undef TARGET_OPTION_OPTIMIZATION_TABLE
+#define        TARGET_OPTION_OPTIMIZATION_TABLE        zip_option_optimization_table
+#define        TARGET_OPTION_OPTIMIZATION_TABLE        zip_option_optimization_table
+
+
+struct gcc_targetm_common      targetm_common = TARGETM_COMMON_INITIALIZER;
+struct gcc_targetm_common      targetm_common = TARGETM_COMMON_INITIALIZER;
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/aarch64/aarch64-linux.h gcc-5.3.0-zip/gcc/config/aarch64/aarch64-linux.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/aarch64/aarch64-linux.h gcc-5.3.0-zip/gcc/config/aarch64/aarch64-linux.h
--- gcc-5.3.0-original/gcc/config/aarch64/aarch64-linux.h       2016-05-12 21:52:06.137764804 -0400
--- gcc-5.3.0-original/gcc/config/aarch64/aarch64-linux.h       2016-09-13 10:23:45.886099269 -0400
+++ gcc-5.3.0-zip/gcc/config/aarch64/aarch64-linux.h    2015-07-24 12:00:26.000000000 -0400
+++ gcc-5.3.0-zip/gcc/config/aarch64/aarch64-linux.h    2015-07-24 12:00:26.000000000 -0400
@@ -21,7 +21,7 @@
@@ -21,7 +21,7 @@
 #ifndef GCC_AARCH64_LINUX_H
 #ifndef GCC_AARCH64_LINUX_H
 #define GCC_AARCH64_LINUX_H
 #define GCC_AARCH64_LINUX_H
 
 
Line 148... Line 148...
+#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
+#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
 
 
 #undef  ASAN_CC1_SPEC
 #undef  ASAN_CC1_SPEC
 #define ASAN_CC1_SPEC "%{%:sanitize(address):-funwind-tables}"
 #define ASAN_CC1_SPEC "%{%:sanitize(address):-funwind-tables}"
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/alpha/linux-elf.h gcc-5.3.0-zip/gcc/config/alpha/linux-elf.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/alpha/linux-elf.h gcc-5.3.0-zip/gcc/config/alpha/linux-elf.h
--- gcc-5.3.0-original/gcc/config/alpha/linux-elf.h     2016-05-12 21:52:06.141764778 -0400
--- gcc-5.3.0-original/gcc/config/alpha/linux-elf.h     2016-09-13 10:23:45.886099269 -0400
+++ gcc-5.3.0-zip/gcc/config/alpha/linux-elf.h  2015-01-05 07:33:28.000000000 -0500
+++ gcc-5.3.0-zip/gcc/config/alpha/linux-elf.h  2015-01-05 07:33:28.000000000 -0500
@@ -23,8 +23,8 @@
@@ -23,8 +23,8 @@
 #define EXTRA_SPECS \
 #define EXTRA_SPECS \
 { "elf_dynamic_linker", ELF_DYNAMIC_LINKER },
 { "elf_dynamic_linker", ELF_DYNAMIC_LINKER },
 
 
Line 162... Line 162...
+#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
+#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
 #if DEFAULT_LIBC == LIBC_UCLIBC
 #if DEFAULT_LIBC == LIBC_UCLIBC
 #define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
 #define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
 #elif DEFAULT_LIBC == LIBC_GLIBC
 #elif DEFAULT_LIBC == LIBC_GLIBC
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/arm/linux-eabi.h gcc-5.3.0-zip/gcc/config/arm/linux-eabi.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/arm/linux-eabi.h gcc-5.3.0-zip/gcc/config/arm/linux-eabi.h
--- gcc-5.3.0-original/gcc/config/arm/linux-eabi.h      2016-05-12 21:52:06.141764778 -0400
--- gcc-5.3.0-original/gcc/config/arm/linux-eabi.h      2016-09-13 10:23:45.886099269 -0400
+++ gcc-5.3.0-zip/gcc/config/arm/linux-eabi.h   2015-01-05 07:33:28.000000000 -0500
+++ gcc-5.3.0-zip/gcc/config/arm/linux-eabi.h   2015-01-05 07:33:28.000000000 -0500
@@ -68,8 +68,8 @@
@@ -68,8 +68,8 @@
    GLIBC_DYNAMIC_LINKER_DEFAULT and TARGET_DEFAULT_FLOAT_ABI.  */
    GLIBC_DYNAMIC_LINKER_DEFAULT and TARGET_DEFAULT_FLOAT_ABI.  */
 
 
 #undef  GLIBC_DYNAMIC_LINKER
 #undef  GLIBC_DYNAMIC_LINKER
Line 176... Line 176...
+#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
+#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
 #define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
 #define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
 
 
 #define GLIBC_DYNAMIC_LINKER \
 #define GLIBC_DYNAMIC_LINKER \
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/arm/linux-elf.h gcc-5.3.0-zip/gcc/config/arm/linux-elf.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/arm/linux-elf.h gcc-5.3.0-zip/gcc/config/arm/linux-elf.h
--- gcc-5.3.0-original/gcc/config/arm/linux-elf.h       2016-05-12 21:52:06.141764778 -0400
--- gcc-5.3.0-original/gcc/config/arm/linux-elf.h       2016-09-13 10:23:45.886099269 -0400
+++ gcc-5.3.0-zip/gcc/config/arm/linux-elf.h    2015-06-23 05:26:54.000000000 -0400
+++ gcc-5.3.0-zip/gcc/config/arm/linux-elf.h    2015-06-23 05:26:54.000000000 -0400
@@ -62,7 +62,7 @@
@@ -62,7 +62,7 @@
 
 
 #define LIBGCC_SPEC "%{mfloat-abi=soft*:-lfloat} -lgcc"
 #define LIBGCC_SPEC "%{mfloat-abi=soft*:-lfloat} -lgcc"
 
 
Line 188... Line 188...
+#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
 
 
 #define LINUX_TARGET_LINK_SPEC  "%{h*} \
 #define LINUX_TARGET_LINK_SPEC  "%{h*} \
    %{static:-Bstatic} \
    %{static:-Bstatic} \
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/bfin/linux.h gcc-5.3.0-zip/gcc/config/bfin/linux.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/bfin/linux.h gcc-5.3.0-zip/gcc/config/bfin/linux.h
--- gcc-5.3.0-original/gcc/config/bfin/linux.h  2016-05-12 21:52:06.141764778 -0400
--- gcc-5.3.0-original/gcc/config/bfin/linux.h  2016-09-13 10:23:45.886099269 -0400
+++ gcc-5.3.0-zip/gcc/config/bfin/linux.h       2015-01-05 07:33:28.000000000 -0500
+++ gcc-5.3.0-zip/gcc/config/bfin/linux.h       2015-01-05 07:33:28.000000000 -0500
@@ -45,7 +45,7 @@
@@ -45,7 +45,7 @@
   %{shared:-G -Bdynamic} \
   %{shared:-G -Bdynamic} \
   %{!shared: %{!static: \
   %{!shared: %{!static: \
    %{rdynamic:-export-dynamic} \
    %{rdynamic:-export-dynamic} \
Line 200... Line 200...
+   -dynamic-linker /lib/ld-uClibc.so.0} \
+   -dynamic-linker /lib/ld-uClibc.so.0} \
    %{static}} -init __init -fini __fini"
    %{static}} -init __init -fini __fini"
 
 
 #undef TARGET_SUPPORTS_SYNC_CALLS
 #undef TARGET_SUPPORTS_SYNC_CALLS
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/cris/linux.h gcc-5.3.0-zip/gcc/config/cris/linux.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/cris/linux.h gcc-5.3.0-zip/gcc/config/cris/linux.h
--- gcc-5.3.0-original/gcc/config/cris/linux.h  2016-05-12 21:52:06.141764778 -0400
--- gcc-5.3.0-original/gcc/config/cris/linux.h  2016-09-13 10:23:45.886099269 -0400
+++ gcc-5.3.0-zip/gcc/config/cris/linux.h       2015-01-05 07:33:28.000000000 -0500
+++ gcc-5.3.0-zip/gcc/config/cris/linux.h       2015-01-05 07:33:28.000000000 -0500
@@ -102,7 +102,7 @@
@@ -102,7 +102,7 @@
 #undef CRIS_DEFAULT_CPU_VERSION
 #undef CRIS_DEFAULT_CPU_VERSION
 #define CRIS_DEFAULT_CPU_VERSION CRIS_CPU_NG
 #define CRIS_DEFAULT_CPU_VERSION CRIS_CPU_NG
 
 
Line 212... Line 212...
+#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
+#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
 
 
 #undef CRIS_LINK_SUBTARGET_SPEC
 #undef CRIS_LINK_SUBTARGET_SPEC
 #define CRIS_LINK_SUBTARGET_SPEC \
 #define CRIS_LINK_SUBTARGET_SPEC \
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/freebsd-spec.h gcc-5.3.0-zip/gcc/config/freebsd-spec.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/freebsd-spec.h gcc-5.3.0-zip/gcc/config/freebsd-spec.h
--- gcc-5.3.0-original/gcc/config/freebsd-spec.h        2016-05-12 21:52:06.141764778 -0400
--- gcc-5.3.0-original/gcc/config/freebsd-spec.h        2016-09-13 10:23:45.886099269 -0400
+++ gcc-5.3.0-zip/gcc/config/freebsd-spec.h     2015-06-25 13:53:14.000000000 -0400
+++ gcc-5.3.0-zip/gcc/config/freebsd-spec.h     2015-06-25 13:53:14.000000000 -0400
@@ -129,9 +129,9 @@
@@ -129,9 +129,9 @@
 #endif
 #endif
 
 
 #if FBSD_MAJOR < 6
 #if FBSD_MAJOR < 6
Line 227... Line 227...
+#define FBSD_DYNAMIC_LINKER "/libexec/ld-elf.so.1"
+#define FBSD_DYNAMIC_LINKER "/libexec/ld-elf.so.1"
 #endif
 #endif
 
 
 /* NOTE: The freebsd-spec.h header is included also for various
 /* NOTE: The freebsd-spec.h header is included also for various
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/frv/linux.h gcc-5.3.0-zip/gcc/config/frv/linux.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/frv/linux.h gcc-5.3.0-zip/gcc/config/frv/linux.h
--- gcc-5.3.0-original/gcc/config/frv/linux.h   2016-05-12 21:52:06.141764778 -0400
--- gcc-5.3.0-original/gcc/config/frv/linux.h   2016-09-13 10:23:45.886099269 -0400
+++ gcc-5.3.0-zip/gcc/config/frv/linux.h        2015-01-05 07:33:28.000000000 -0500
+++ gcc-5.3.0-zip/gcc/config/frv/linux.h        2015-01-05 07:33:28.000000000 -0500
@@ -34,7 +34,7 @@
@@ -34,7 +34,7 @@
 #define ENDFILE_SPEC \
 #define ENDFILE_SPEC \
   "%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
   "%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
 
 
Line 239... Line 239...
+#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
+#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
 
 
 #undef LINK_SPEC
 #undef LINK_SPEC
 #define LINK_SPEC "\
 #define LINK_SPEC "\
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/i386/gnu.h gcc-5.3.0-zip/gcc/config/i386/gnu.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/i386/gnu.h gcc-5.3.0-zip/gcc/config/i386/gnu.h
--- gcc-5.3.0-original/gcc/config/i386/gnu.h    2016-05-12 21:52:06.141764778 -0400
--- gcc-5.3.0-original/gcc/config/i386/gnu.h    2016-09-13 10:23:45.886099269 -0400
+++ gcc-5.3.0-zip/gcc/config/i386/gnu.h 2015-01-05 07:33:28.000000000 -0500
+++ gcc-5.3.0-zip/gcc/config/i386/gnu.h 2015-01-05 07:33:28.000000000 -0500
@@ -22,7 +22,7 @@
@@ -22,7 +22,7 @@
 #define GNU_USER_LINK_EMULATION "elf_i386"
 #define GNU_USER_LINK_EMULATION "elf_i386"
 
 
 #undef GNU_USER_DYNAMIC_LINKER
 #undef GNU_USER_DYNAMIC_LINKER
Line 251... Line 251...
+#define GNU_USER_DYNAMIC_LINKER "/lib/ld.so"
+#define GNU_USER_DYNAMIC_LINKER "/lib/ld.so"
 
 
 #undef STARTFILE_SPEC
 #undef STARTFILE_SPEC
 #if defined HAVE_LD_PIE
 #if defined HAVE_LD_PIE
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/i386/kfreebsd-gnu64.h gcc-5.3.0-zip/gcc/config/i386/kfreebsd-gnu64.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/i386/kfreebsd-gnu64.h gcc-5.3.0-zip/gcc/config/i386/kfreebsd-gnu64.h
--- gcc-5.3.0-original/gcc/config/i386/kfreebsd-gnu64.h 2016-05-12 21:52:06.141764778 -0400
--- gcc-5.3.0-original/gcc/config/i386/kfreebsd-gnu64.h 2016-09-13 10:23:45.890099248 -0400
+++ gcc-5.3.0-zip/gcc/config/i386/kfreebsd-gnu64.h      2015-01-05 07:33:28.000000000 -0500
+++ gcc-5.3.0-zip/gcc/config/i386/kfreebsd-gnu64.h      2015-01-05 07:33:28.000000000 -0500
@@ -22,6 +22,6 @@
@@ -22,6 +22,6 @@
 #define GNU_USER_LINK_EMULATION64 "elf_x86_64_fbsd"
 #define GNU_USER_LINK_EMULATION64 "elf_x86_64_fbsd"
 #define GNU_USER_LINK_EMULATIONX32 "elf32_x86_64_fbsd"
 #define GNU_USER_LINK_EMULATIONX32 "elf32_x86_64_fbsd"
 
 
Line 264... Line 264...
-#define GLIBC_DYNAMIC_LINKERX32 "/tools/lib/ld-kfreebsd-x32.so.1"
-#define GLIBC_DYNAMIC_LINKERX32 "/tools/lib/ld-kfreebsd-x32.so.1"
+#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
+#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
+#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-kfreebsd-x86-64.so.1"
+#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-kfreebsd-x86-64.so.1"
+#define GLIBC_DYNAMIC_LINKERX32 "/lib/ld-kfreebsd-x32.so.1"
+#define GLIBC_DYNAMIC_LINKERX32 "/lib/ld-kfreebsd-x32.so.1"
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/i386/kfreebsd-gnu.h gcc-5.3.0-zip/gcc/config/i386/kfreebsd-gnu.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/i386/kfreebsd-gnu.h gcc-5.3.0-zip/gcc/config/i386/kfreebsd-gnu.h
--- gcc-5.3.0-original/gcc/config/i386/kfreebsd-gnu.h   2016-05-12 21:52:06.141764778 -0400
--- gcc-5.3.0-original/gcc/config/i386/kfreebsd-gnu.h   2016-09-13 10:23:45.886099269 -0400
+++ gcc-5.3.0-zip/gcc/config/i386/kfreebsd-gnu.h        2015-01-05 07:33:28.000000000 -0500
+++ gcc-5.3.0-zip/gcc/config/i386/kfreebsd-gnu.h        2015-01-05 07:33:28.000000000 -0500
@@ -19,4 +19,4 @@
@@ -19,4 +19,4 @@
 <http://www.gnu.org/licenses/>.  */
 <http://www.gnu.org/licenses/>.  */
 
 
 #define GNU_USER_LINK_EMULATION "elf_i386_fbsd"
 #define GNU_USER_LINK_EMULATION "elf_i386_fbsd"
-#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld.so.1"
-#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld.so.1"
+#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
+#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/i386/linux64.h gcc-5.3.0-zip/gcc/config/i386/linux64.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/i386/linux64.h gcc-5.3.0-zip/gcc/config/i386/linux64.h
--- gcc-5.3.0-original/gcc/config/i386/linux64.h        2016-05-12 21:52:06.141764778 -0400
--- gcc-5.3.0-original/gcc/config/i386/linux64.h        2016-09-13 10:23:45.890099248 -0400
+++ gcc-5.3.0-zip/gcc/config/i386/linux64.h     2015-01-05 07:33:28.000000000 -0500
+++ gcc-5.3.0-zip/gcc/config/i386/linux64.h     2015-01-05 07:33:28.000000000 -0500
@@ -27,6 +27,6 @@
@@ -27,6 +27,6 @@
 #define GNU_USER_LINK_EMULATION64 "elf_x86_64"
 #define GNU_USER_LINK_EMULATION64 "elf_x86_64"
 #define GNU_USER_LINK_EMULATIONX32 "elf32_x86_64"
 #define GNU_USER_LINK_EMULATIONX32 "elf32_x86_64"
 
 
Line 286... Line 286...
-#define GLIBC_DYNAMIC_LINKERX32 "/tools/libx32/ld-linux-x32.so.2"
-#define GLIBC_DYNAMIC_LINKERX32 "/tools/libx32/ld-linux-x32.so.2"
+#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
+#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
+#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
+#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
+#define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2"
+#define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2"
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/i386/linux.h gcc-5.3.0-zip/gcc/config/i386/linux.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/i386/linux.h gcc-5.3.0-zip/gcc/config/i386/linux.h
--- gcc-5.3.0-original/gcc/config/i386/linux.h  2016-05-12 21:52:06.141764778 -0400
--- gcc-5.3.0-original/gcc/config/i386/linux.h  2016-09-13 10:23:45.890099248 -0400
+++ gcc-5.3.0-zip/gcc/config/i386/linux.h       2015-01-05 07:33:28.000000000 -0500
+++ gcc-5.3.0-zip/gcc/config/i386/linux.h       2015-01-05 07:33:28.000000000 -0500
@@ -20,4 +20,4 @@
@@ -20,4 +20,4 @@
 <http://www.gnu.org/licenses/>.  */
 <http://www.gnu.org/licenses/>.  */
 
 
 #define GNU_USER_LINK_EMULATION "elf_i386"
 #define GNU_USER_LINK_EMULATION "elf_i386"
-#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld-linux.so.2"
-#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld-linux.so.2"
+#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/ia64/linux.h gcc-5.3.0-zip/gcc/config/ia64/linux.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/ia64/linux.h gcc-5.3.0-zip/gcc/config/ia64/linux.h
--- gcc-5.3.0-original/gcc/config/ia64/linux.h  2016-05-12 21:52:06.141764778 -0400
--- gcc-5.3.0-original/gcc/config/ia64/linux.h  2016-09-13 10:23:45.890099248 -0400
+++ gcc-5.3.0-zip/gcc/config/ia64/linux.h       2015-01-05 07:33:28.000000000 -0500
+++ gcc-5.3.0-zip/gcc/config/ia64/linux.h       2015-01-05 07:33:28.000000000 -0500
@@ -55,7 +55,7 @@
@@ -55,7 +55,7 @@
 /* Define this for shared library support because it isn't in the main
 /* Define this for shared library support because it isn't in the main
    linux.h file.  */
    linux.h file.  */
 
 
Line 307... Line 307...
+#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2"
+#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2"
 
 
 #undef LINK_SPEC
 #undef LINK_SPEC
 #define LINK_SPEC "\
 #define LINK_SPEC "\
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/knetbsd-gnu.h gcc-5.3.0-zip/gcc/config/knetbsd-gnu.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/knetbsd-gnu.h gcc-5.3.0-zip/gcc/config/knetbsd-gnu.h
--- gcc-5.3.0-original/gcc/config/knetbsd-gnu.h 2016-05-12 21:52:06.141764778 -0400
--- gcc-5.3.0-original/gcc/config/knetbsd-gnu.h 2016-09-13 10:23:45.890099248 -0400
+++ gcc-5.3.0-zip/gcc/config/knetbsd-gnu.h      2015-01-05 07:33:28.000000000 -0500
+++ gcc-5.3.0-zip/gcc/config/knetbsd-gnu.h      2015-01-05 07:33:28.000000000 -0500
@@ -32,4 +32,4 @@
@@ -32,4 +32,4 @@
 
 
 
 
 #undef GNU_USER_DYNAMIC_LINKER
 #undef GNU_USER_DYNAMIC_LINKER
-#define GNU_USER_DYNAMIC_LINKER "/tools/lib/ld.so.1"
-#define GNU_USER_DYNAMIC_LINKER "/tools/lib/ld.so.1"
+#define GNU_USER_DYNAMIC_LINKER "/lib/ld.so.1"
+#define GNU_USER_DYNAMIC_LINKER "/lib/ld.so.1"
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/kopensolaris-gnu.h gcc-5.3.0-zip/gcc/config/kopensolaris-gnu.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/kopensolaris-gnu.h gcc-5.3.0-zip/gcc/config/kopensolaris-gnu.h
--- gcc-5.3.0-original/gcc/config/kopensolaris-gnu.h    2016-05-12 21:52:06.141764778 -0400
--- gcc-5.3.0-original/gcc/config/kopensolaris-gnu.h    2016-09-13 10:23:45.890099248 -0400
+++ gcc-5.3.0-zip/gcc/config/kopensolaris-gnu.h 2015-01-05 07:33:28.000000000 -0500
+++ gcc-5.3.0-zip/gcc/config/kopensolaris-gnu.h 2015-01-05 07:33:28.000000000 -0500
@@ -31,5 +31,4 @@
@@ -31,5 +31,4 @@
   while (0)
   while (0)
 
 
 #undef GNU_USER_DYNAMIC_LINKER
 #undef GNU_USER_DYNAMIC_LINKER
-#define GNU_USER_DYNAMIC_LINKER "/tools/lib/ld.so.1"
-#define GNU_USER_DYNAMIC_LINKER "/tools/lib/ld.so.1"
-
-
+#define GNU_USER_DYNAMIC_LINKER "/lib/ld.so.1"
+#define GNU_USER_DYNAMIC_LINKER "/lib/ld.so.1"
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/linux.h gcc-5.3.0-zip/gcc/config/linux.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/linux.h gcc-5.3.0-zip/gcc/config/linux.h
--- gcc-5.3.0-original/gcc/config/linux.h       2016-05-12 21:52:06.141764778 -0400
--- gcc-5.3.0-original/gcc/config/linux.h       2016-09-13 10:23:45.890099248 -0400
+++ gcc-5.3.0-zip/gcc/config/linux.h    2015-01-05 07:33:28.000000000 -0500
+++ gcc-5.3.0-zip/gcc/config/linux.h    2015-01-05 07:33:28.000000000 -0500
@@ -73,10 +73,10 @@
@@ -73,10 +73,10 @@
    GLIBC_DYNAMIC_LINKER must be defined for each target using them, or
    GLIBC_DYNAMIC_LINKER must be defined for each target using them, or
    GLIBC_DYNAMIC_LINKER32 and GLIBC_DYNAMIC_LINKER64 for targets
    GLIBC_DYNAMIC_LINKER32 and GLIBC_DYNAMIC_LINKER64 for targets
    supporting both 32-bit and 64-bit compilation.  */
    supporting both 32-bit and 64-bit compilation.  */
Line 344... Line 344...
+#define UCLIBC_DYNAMIC_LINKERX32 "/lib/ldx32-uClibc.so.0"
+#define UCLIBC_DYNAMIC_LINKERX32 "/lib/ldx32-uClibc.so.0"
 #define BIONIC_DYNAMIC_LINKER "/system/bin/linker"
 #define BIONIC_DYNAMIC_LINKER "/system/bin/linker"
 #define BIONIC_DYNAMIC_LINKER32 "/system/bin/linker"
 #define BIONIC_DYNAMIC_LINKER32 "/system/bin/linker"
 #define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64"
 #define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64"
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/lm32/uclinux-elf.h gcc-5.3.0-zip/gcc/config/lm32/uclinux-elf.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/lm32/uclinux-elf.h gcc-5.3.0-zip/gcc/config/lm32/uclinux-elf.h
--- gcc-5.3.0-original/gcc/config/lm32/uclinux-elf.h    2016-05-12 21:52:06.141764778 -0400
--- gcc-5.3.0-original/gcc/config/lm32/uclinux-elf.h    2016-09-13 10:23:45.890099248 -0400
+++ gcc-5.3.0-zip/gcc/config/lm32/uclinux-elf.h 2015-01-05 07:33:28.000000000 -0500
+++ gcc-5.3.0-zip/gcc/config/lm32/uclinux-elf.h 2015-01-05 07:33:28.000000000 -0500
@@ -67,7 +67,7 @@
@@ -67,7 +67,7 @@
    %{shared:-shared} \
    %{shared:-shared} \
    %{symbolic:-Bsymbolic} \
    %{symbolic:-Bsymbolic} \
    %{rdynamic:-export-dynamic} \
    %{rdynamic:-export-dynamic} \
Line 356... Line 356...
+   -dynamic-linker /lib/ld-linux.so.2"
+   -dynamic-linker /lib/ld-linux.so.2"
 
 
 #define TARGET_OS_CPP_BUILTINS() GNU_USER_TARGET_OS_CPP_BUILTINS()
 #define TARGET_OS_CPP_BUILTINS() GNU_USER_TARGET_OS_CPP_BUILTINS()
 
 
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/m68k/linux.h gcc-5.3.0-zip/gcc/config/m68k/linux.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/m68k/linux.h gcc-5.3.0-zip/gcc/config/m68k/linux.h
--- gcc-5.3.0-original/gcc/config/m68k/linux.h  2016-05-12 21:52:06.141764778 -0400
--- gcc-5.3.0-original/gcc/config/m68k/linux.h  2016-09-13 10:23:45.890099248 -0400
+++ gcc-5.3.0-zip/gcc/config/m68k/linux.h       2015-01-05 07:33:28.000000000 -0500
+++ gcc-5.3.0-zip/gcc/config/m68k/linux.h       2015-01-05 07:33:28.000000000 -0500
@@ -71,7 +71,7 @@
@@ -71,7 +71,7 @@
    When the -shared link option is used a final link is not being
    When the -shared link option is used a final link is not being
    done.  */
    done.  */
 
 
Line 368... Line 368...
+#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
+#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
 
 
 #undef LINK_SPEC
 #undef LINK_SPEC
 #define LINK_SPEC "-m m68kelf %{shared} \
 #define LINK_SPEC "-m m68kelf %{shared} \
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/microblaze/linux.h gcc-5.3.0-zip/gcc/config/microblaze/linux.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/microblaze/linux.h gcc-5.3.0-zip/gcc/config/microblaze/linux.h
--- gcc-5.3.0-original/gcc/config/microblaze/linux.h    2016-05-12 21:52:06.141764778 -0400
--- gcc-5.3.0-original/gcc/config/microblaze/linux.h    2016-09-13 10:23:45.890099248 -0400
+++ gcc-5.3.0-zip/gcc/config/microblaze/linux.h 2015-05-28 10:08:19.000000000 -0400
+++ gcc-5.3.0-zip/gcc/config/microblaze/linux.h 2015-05-28 10:08:19.000000000 -0400
@@ -28,7 +28,7 @@
@@ -28,7 +28,7 @@
 #undef TLS_NEEDS_GOT
 #undef TLS_NEEDS_GOT
 #define TLS_NEEDS_GOT 1
 #define TLS_NEEDS_GOT 1
 
 
Line 380... Line 380...
+#define DYNAMIC_LINKER "/lib/ld.so.1"
+#define DYNAMIC_LINKER "/lib/ld.so.1"
 #undef  SUBTARGET_EXTRA_SPECS
 #undef  SUBTARGET_EXTRA_SPECS
 #define SUBTARGET_EXTRA_SPECS \
 #define SUBTARGET_EXTRA_SPECS \
   { "dynamic_linker", DYNAMIC_LINKER }
   { "dynamic_linker", DYNAMIC_LINKER }
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/mips/linux.h gcc-5.3.0-zip/gcc/config/mips/linux.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/mips/linux.h gcc-5.3.0-zip/gcc/config/mips/linux.h
--- gcc-5.3.0-original/gcc/config/mips/linux.h  2016-05-12 21:52:06.141764778 -0400
--- gcc-5.3.0-original/gcc/config/mips/linux.h  2016-09-13 10:23:45.890099248 -0400
+++ gcc-5.3.0-zip/gcc/config/mips/linux.h       2015-01-05 07:33:28.000000000 -0500
+++ gcc-5.3.0-zip/gcc/config/mips/linux.h       2015-01-05 07:33:28.000000000 -0500
@@ -22,20 +22,20 @@
@@ -22,20 +22,20 @@
 #define GNU_USER_LINK_EMULATIONN32 "elf32%{EB:b}%{EL:l}tsmipn32"
 #define GNU_USER_LINK_EMULATIONN32 "elf32%{EB:b}%{EL:l}tsmipn32"
 
 
 #define GLIBC_DYNAMIC_LINKER32 \
 #define GLIBC_DYNAMIC_LINKER32 \
Line 410... Line 410...
+  "%{mnan=2008:/lib32/ld-uClibc-mipsn8.so.0;:/lib32/ld-uClibc.so.0}"
+  "%{mnan=2008:/lib32/ld-uClibc-mipsn8.so.0;:/lib32/ld-uClibc.so.0}"
 
 
 #define BIONIC_DYNAMIC_LINKERN32 "/system/bin/linker32"
 #define BIONIC_DYNAMIC_LINKERN32 "/system/bin/linker32"
 #define GNU_USER_DYNAMIC_LINKERN32 \
 #define GNU_USER_DYNAMIC_LINKERN32 \
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/mn10300/linux.h gcc-5.3.0-zip/gcc/config/mn10300/linux.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/mn10300/linux.h gcc-5.3.0-zip/gcc/config/mn10300/linux.h
--- gcc-5.3.0-original/gcc/config/mn10300/linux.h       2016-05-12 21:52:06.141764778 -0400
--- gcc-5.3.0-original/gcc/config/mn10300/linux.h       2016-09-13 10:23:45.890099248 -0400
+++ gcc-5.3.0-zip/gcc/config/mn10300/linux.h    2015-01-05 07:33:28.000000000 -0500
+++ gcc-5.3.0-zip/gcc/config/mn10300/linux.h    2015-01-05 07:33:28.000000000 -0500
@@ -32,7 +32,7 @@
@@ -32,7 +32,7 @@
 #undef  ASM_SPEC
 #undef  ASM_SPEC
 #define ASM_SPEC ""
 #define ASM_SPEC ""
 
 
Line 422... Line 422...
+#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
+#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
 
 
 #undef  LINK_SPEC
 #undef  LINK_SPEC
 #define LINK_SPEC "%{mrelax:--relax} %{shared:-shared} \
 #define LINK_SPEC "%{mrelax:--relax} %{shared:-shared} \
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/pa/pa-linux.h gcc-5.3.0-zip/gcc/config/pa/pa-linux.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/pa/pa-linux.h gcc-5.3.0-zip/gcc/config/pa/pa-linux.h
--- gcc-5.3.0-original/gcc/config/pa/pa-linux.h 2016-05-12 21:52:06.141764778 -0400
--- gcc-5.3.0-original/gcc/config/pa/pa-linux.h 2016-09-13 10:23:45.890099248 -0400
+++ gcc-5.3.0-zip/gcc/config/pa/pa-linux.h      2015-09-24 20:04:26.000000000 -0400
+++ gcc-5.3.0-zip/gcc/config/pa/pa-linux.h      2015-09-24 20:04:26.000000000 -0400
@@ -37,7 +37,7 @@
@@ -37,7 +37,7 @@
 /* Define this for shared library support because it isn't in the main
 /* Define this for shared library support because it isn't in the main
    linux.h file.  */
    linux.h file.  */
 
 
Line 434... Line 434...
+#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
+#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
 
 
 #undef LINK_SPEC
 #undef LINK_SPEC
 #define LINK_SPEC "\
 #define LINK_SPEC "\
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/rs6000/linux64.h gcc-5.3.0-zip/gcc/config/rs6000/linux64.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/rs6000/linux64.h gcc-5.3.0-zip/gcc/config/rs6000/linux64.h
--- gcc-5.3.0-original/gcc/config/rs6000/linux64.h      2016-05-12 21:52:06.141764778 -0400
--- gcc-5.3.0-original/gcc/config/rs6000/linux64.h      2016-09-13 10:23:45.890099248 -0400
+++ gcc-5.3.0-zip/gcc/config/rs6000/linux64.h   2015-03-09 19:18:57.000000000 -0400
+++ gcc-5.3.0-zip/gcc/config/rs6000/linux64.h   2015-03-09 19:18:57.000000000 -0400
@@ -357,14 +357,14 @@
@@ -357,14 +357,14 @@
 #undef LINK_OS_DEFAULT_SPEC
 #undef LINK_OS_DEFAULT_SPEC
 #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)"
 #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)"
 
 
Line 457... Line 457...
+#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
+#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
 #if DEFAULT_LIBC == LIBC_UCLIBC
 #if DEFAULT_LIBC == LIBC_UCLIBC
 #define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
 #define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
 #elif DEFAULT_LIBC == LIBC_GLIBC
 #elif DEFAULT_LIBC == LIBC_GLIBC
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/rs6000/sysv4.h gcc-5.3.0-zip/gcc/config/rs6000/sysv4.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/rs6000/sysv4.h gcc-5.3.0-zip/gcc/config/rs6000/sysv4.h
--- gcc-5.3.0-original/gcc/config/rs6000/sysv4.h        2016-05-12 21:52:06.141764778 -0400
--- gcc-5.3.0-original/gcc/config/rs6000/sysv4.h        2016-09-13 10:23:45.890099248 -0400
+++ gcc-5.3.0-zip/gcc/config/rs6000/sysv4.h     2015-09-24 09:46:45.000000000 -0400
+++ gcc-5.3.0-zip/gcc/config/rs6000/sysv4.h     2015-09-24 09:46:45.000000000 -0400
@@ -757,8 +757,8 @@
@@ -757,8 +757,8 @@
 
 
 #define LINK_START_LINUX_SPEC ""
 #define LINK_START_LINUX_SPEC ""
 
 
Line 471... Line 471...
+#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
+#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
 #if DEFAULT_LIBC == LIBC_UCLIBC
 #if DEFAULT_LIBC == LIBC_UCLIBC
 #define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
 #define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
 #elif !defined (DEFAULT_LIBC) || DEFAULT_LIBC == LIBC_GLIBC
 #elif !defined (DEFAULT_LIBC) || DEFAULT_LIBC == LIBC_GLIBC
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/s390/linux.h gcc-5.3.0-zip/gcc/config/s390/linux.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/s390/linux.h gcc-5.3.0-zip/gcc/config/s390/linux.h
--- gcc-5.3.0-original/gcc/config/s390/linux.h  2016-05-12 21:52:06.141764778 -0400
--- gcc-5.3.0-original/gcc/config/s390/linux.h  2016-09-13 10:23:45.890099248 -0400
+++ gcc-5.3.0-zip/gcc/config/s390/linux.h       2015-05-11 03:14:10.000000000 -0400
+++ gcc-5.3.0-zip/gcc/config/s390/linux.h       2015-05-11 03:14:10.000000000 -0400
@@ -60,8 +60,8 @@
@@ -60,8 +60,8 @@
 #define MULTILIB_DEFAULTS { "m31" }
 #define MULTILIB_DEFAULTS { "m31" }
 #endif
 #endif
 
 
Line 485... Line 485...
+#define GLIBC_DYNAMIC_LINKER64 "/lib/ld64.so.1"
+#define GLIBC_DYNAMIC_LINKER64 "/lib/ld64.so.1"
 
 
 #undef  LINK_SPEC
 #undef  LINK_SPEC
 #define LINK_SPEC \
 #define LINK_SPEC \
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/sh/linux.h gcc-5.3.0-zip/gcc/config/sh/linux.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/sh/linux.h gcc-5.3.0-zip/gcc/config/sh/linux.h
--- gcc-5.3.0-original/gcc/config/sh/linux.h    2016-05-12 21:52:06.141764778 -0400
--- gcc-5.3.0-original/gcc/config/sh/linux.h    2016-09-13 10:23:45.890099248 -0400
+++ gcc-5.3.0-zip/gcc/config/sh/linux.h 2015-01-05 07:33:28.000000000 -0500
+++ gcc-5.3.0-zip/gcc/config/sh/linux.h 2015-01-05 07:33:28.000000000 -0500
@@ -43,7 +43,7 @@
@@ -43,7 +43,7 @@
 
 
 #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
 #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
 
 
Line 497... Line 497...
+#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
 
 
 #undef SUBTARGET_LINK_EMUL_SUFFIX
 #undef SUBTARGET_LINK_EMUL_SUFFIX
 #define SUBTARGET_LINK_EMUL_SUFFIX "_linux"
 #define SUBTARGET_LINK_EMUL_SUFFIX "_linux"
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/sparc/linux64.h gcc-5.3.0-zip/gcc/config/sparc/linux64.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/sparc/linux64.h gcc-5.3.0-zip/gcc/config/sparc/linux64.h
--- gcc-5.3.0-original/gcc/config/sparc/linux64.h       2016-05-12 21:52:06.141764778 -0400
--- gcc-5.3.0-original/gcc/config/sparc/linux64.h       2016-09-13 10:23:45.890099248 -0400
+++ gcc-5.3.0-zip/gcc/config/sparc/linux64.h    2015-01-05 07:33:28.000000000 -0500
+++ gcc-5.3.0-zip/gcc/config/sparc/linux64.h    2015-01-05 07:33:28.000000000 -0500
@@ -84,8 +84,8 @@
@@ -84,8 +84,8 @@
    When the -shared link option is used a final link is not being
    When the -shared link option is used a final link is not being
    done.  */
    done.  */
 
 
Line 520... Line 520...
+#define LINK_SPEC "-m elf64_sparc -Y P,%R/usr/lib64 %{shared:-shared} \
+#define LINK_SPEC "-m elf64_sparc -Y P,%R/usr/lib64 %{shared:-shared} \
   %{!shared: \
   %{!shared: \
     %{!static: \
     %{!static: \
       %{rdynamic:-export-dynamic} \
       %{rdynamic:-export-dynamic} \
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/sparc/linux.h gcc-5.3.0-zip/gcc/config/sparc/linux.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/sparc/linux.h gcc-5.3.0-zip/gcc/config/sparc/linux.h
--- gcc-5.3.0-original/gcc/config/sparc/linux.h 2016-05-12 21:52:06.141764778 -0400
--- gcc-5.3.0-original/gcc/config/sparc/linux.h 2016-09-13 10:23:45.890099248 -0400
+++ gcc-5.3.0-zip/gcc/config/sparc/linux.h      2015-01-05 07:33:28.000000000 -0500
+++ gcc-5.3.0-zip/gcc/config/sparc/linux.h      2015-01-05 07:33:28.000000000 -0500
@@ -83,7 +83,7 @@
@@ -83,7 +83,7 @@
    When the -shared link option is used a final link is not being
    When the -shared link option is used a final link is not being
    done.  */
    done.  */
 
 
Line 532... Line 532...
+#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
 
 
 #undef  LINK_SPEC
 #undef  LINK_SPEC
 #define LINK_SPEC "-m elf32_sparc %{shared:-shared} \
 #define LINK_SPEC "-m elf32_sparc %{shared:-shared} \
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/vax/linux.h gcc-5.3.0-zip/gcc/config/vax/linux.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/vax/linux.h gcc-5.3.0-zip/gcc/config/vax/linux.h
--- gcc-5.3.0-original/gcc/config/vax/linux.h   2016-05-12 21:52:06.141764778 -0400
--- gcc-5.3.0-original/gcc/config/vax/linux.h   2016-09-13 10:23:45.890099248 -0400
+++ gcc-5.3.0-zip/gcc/config/vax/linux.h        2015-01-05 07:33:28.000000000 -0500
+++ gcc-5.3.0-zip/gcc/config/vax/linux.h        2015-01-05 07:33:28.000000000 -0500
@@ -41,7 +41,7 @@
@@ -41,7 +41,7 @@
   %{!shared: \
   %{!shared: \
     %{!static: \
     %{!static: \
       %{rdynamic:-export-dynamic} \
       %{rdynamic:-export-dynamic} \
Line 544... Line 544...
+      -dynamic-linker /lib/ld.so.1} \
+      -dynamic-linker /lib/ld.so.1} \
     %{static:-static}}"
     %{static:-static}}"
 
 
 #undef  WCHAR_TYPE
 #undef  WCHAR_TYPE
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/xtensa/linux.h gcc-5.3.0-zip/gcc/config/xtensa/linux.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/xtensa/linux.h gcc-5.3.0-zip/gcc/config/xtensa/linux.h
--- gcc-5.3.0-original/gcc/config/xtensa/linux.h        2016-05-12 21:52:06.141764778 -0400
--- gcc-5.3.0-original/gcc/config/xtensa/linux.h        2016-09-13 10:23:45.890099248 -0400
+++ gcc-5.3.0-zip/gcc/config/xtensa/linux.h     2015-01-05 07:33:28.000000000 -0500
+++ gcc-5.3.0-zip/gcc/config/xtensa/linux.h     2015-01-05 07:33:28.000000000 -0500
@@ -44,7 +44,7 @@
@@ -44,7 +44,7 @@
   %{mlongcalls:--longcalls} \
   %{mlongcalls:--longcalls} \
   %{mno-longcalls:--no-longcalls}"
   %{mno-longcalls:--no-longcalls}"
 
 
Line 641... Line 641...
+/* Clean up after the generic Zip/ELF configuration. */
+/* Clean up after the generic Zip/ELF configuration. */
+#undef MD_EXEC_PREFIX
+#undef MD_EXEC_PREFIX
+#undef MD_STARTFILE_PREFIX
+#undef MD_STARTFILE_PREFIX
+
+
+#endif /* ZIP_NETBSD_H */
+#endif /* ZIP_NETBSD_H */
 
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/zip/notes.txt gcc-5.3.0-zip/gcc/config/zip/notes.txt
 
--- gcc-5.3.0-original/gcc/config/zip/notes.txt 1969-12-31 19:00:00.000000000 -0500
 
+++ gcc-5.3.0-zip/gcc/config/zip/notes.txt      2016-08-17 23:00:25.714139174 -0400
 
@@ -0,0 +1,6 @@
 
+signum:
 
+       CMP       0,%1
 
+       LDILO.GT  1,%1
 
+       LDILO.LT -1,%1
 
+
 
+
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/zip/t-zip gcc-5.3.0-zip/gcc/config/zip/t-zip
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/zip/t-zip gcc-5.3.0-zip/gcc/config/zip/t-zip
--- gcc-5.3.0-original/gcc/config/zip/t-zip     1969-12-31 19:00:00.000000000 -0500
--- gcc-5.3.0-original/gcc/config/zip/t-zip     1969-12-31 19:00:00.000000000 -0500
+++ gcc-5.3.0-zip/gcc/config/zip/t-zip  2016-02-04 19:00:59.939652587 -0500
+++ gcc-5.3.0-zip/gcc/config/zip/t-zip  2016-02-04 19:00:59.939652587 -0500
@@ -0,0 +1,47 @@
@@ -0,0 +1,47 @@
+################################################################################
+################################################################################
Line 694... Line 704...
+       # cat $(srcdir)/config/fp-bit.c >> fp-bit.c
+       # cat $(srcdir)/config/fp-bit.c >> fp-bit.c
+
+
+
+
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/zip/zip.c gcc-5.3.0-zip/gcc/config/zip/zip.c
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/zip/zip.c gcc-5.3.0-zip/gcc/config/zip/zip.c
--- gcc-5.3.0-original/gcc/config/zip/zip.c     1969-12-31 19:00:00.000000000 -0500
--- gcc-5.3.0-original/gcc/config/zip/zip.c     1969-12-31 19:00:00.000000000 -0500
+++ gcc-5.3.0-zip/gcc/config/zip/zip.c  2016-05-09 11:40:35.637861735 -0400
+++ gcc-5.3.0-zip/gcc/config/zip/zip.c  2016-09-13 10:06:40.979536485 -0400
@@ -0,0 +1,2286 @@
@@ -0,0 +1,2151 @@
+////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+//
+//
+// Filename:   zip.c
+// Filename:   zip.c
+//
+//
+// Project:    Zip CPU backend for the GNU Compiler Collection
+// Project:    Zip CPU backend for the GNU Compiler Collection
Line 841... Line 851...
+       ZIP_BUILTIN_SAVE_CONTEXT,
+       ZIP_BUILTIN_SAVE_CONTEXT,
+       ZIP_BUILTIN_RESTORE_CONTEXT,
+       ZIP_BUILTIN_RESTORE_CONTEXT,
+       ZIP_BUILTIN_BITREV,
+       ZIP_BUILTIN_BITREV,
+       ZIP_BUILTIN_CC,
+       ZIP_BUILTIN_CC,
+       ZIP_BUILTIN_UCC,
+       ZIP_BUILTIN_UCC,
 
+       ZIP_BUILTIN_BUSY,
+       ZIP_BUILTIN_MAX
+       ZIP_BUILTIN_MAX
+};
+};
+
+
+static GTY (()) tree   zip_builtins[(int)ZIP_BUILTIN_MAX];
+static GTY (()) tree   zip_builtins[(int)ZIP_BUILTIN_MAX];
+static enum insn_code  zip_builtins_icode[(int)ZIP_BUILTIN_MAX];
+static enum insn_code  zip_builtins_icode[(int)ZIP_BUILTIN_MAX];
Line 932... Line 943...
+
+
+       if (dbg) zip_debug_rtx(x);
+       if (dbg) zip_debug_rtx(x);
+       switch(GET_CODE(x)) {
+       switch(GET_CODE(x)) {
+               case REG:
+               case REG:
+                       gcc_assert(is_ZIP_REG(REGNO(x)));
+                       gcc_assert(is_ZIP_REG(REGNO(x)));
 
+                       gcc_assert(REGNO(x) < 16);
+                       fprintf(file, "(%s)", reg_names[REGNO(x)]);
+                       fprintf(file, "(%s)", reg_names[REGNO(x)]);
+                       break;
+                       break;
+               case SYMBOL_REF:
+               case SYMBOL_REF:
+                       fprintf(file, "%s", XSTR(x,0));
+                       fprintf(file, "%s", XSTR(x,0));
+                       break;
+                       break;
Line 955... Line 967...
+                       if (!REG_P(XEXP(x, 0))) {
+                       if (!REG_P(XEXP(x, 0))) {
+                               fprintf(stderr, "Unsupported address construct\n");
+                               fprintf(stderr, "Unsupported address construct\n");
+                               zip_debug_rtx(x);
+                               zip_debug_rtx(x);
+                               abort();
+                               abort();
+                       } gcc_assert(is_ZIP_REG(REGNO(XEXP(x,0))));
+                       } gcc_assert(is_ZIP_REG(REGNO(XEXP(x,0))));
 
+                       gcc_assert(REGNO(XEXP(x,0))<16);
+                       if (CONST_INT_P(XEXP(x, 1))) {
+                       if (CONST_INT_P(XEXP(x, 1))) {
+                               if (INTVAL(XEXP(x,1))!=0) {
+                               if (INTVAL(XEXP(x,1))!=0) {
+                                       fprintf(file, "%ld(%s)",
+                                       fprintf(file, "%ld(%s)",
+                                       (long)INTVAL(XEXP(x, 1)),
+                                       (long)INTVAL(XEXP(x, 1)),
+                                       reg_names[REGNO(XEXP(x, 0))]);
+                                       reg_names[REGNO(XEXP(x, 0))]);
Line 1128... Line 1141...
+ *                     Saved return address, if saved
+ *                     Saved return address, if saved
+ *                     Other Saved registers
+ *                     Other Saved registers
+ *                     Saved frame pointer (if used)
+ *                     Saved frame pointer (if used)
+ *                     Saved R12, if used
+ *                     Saved R12, if used
+ *                     (Stack pointer is not saved)
+ *                     (Stack pointer is not saved)
 
+ *                     (PRETEND-ARGS)
+ *     Original stack pointer ->       (= Stack_Pointer +size_for_adjusting_sp)
+ *     Original stack pointer ->       (= Stack_Pointer +size_for_adjusting_sp)
+ *                     Called arguments (not passed in registers)
+ *                     Called arguments (not passed in registers)
+ *                     Return arguments (not R1, args.pretend_args_size)
+ *                     Return arguments (not R1, args.pretend_args_size)
+ *             (Prior function's stack frame ... )
+ *             (Prior function's stack frame ... )
+ *
+ *
Line 1140... Line 1154...
+zip_compute_frame(void) {
+zip_compute_frame(void) {
+       int     regno;
+       int     regno;
+       int     args_size;
+       int     args_size;
+       const bool      dbg = ((ALL_DEBUG_ON)||(false))&&(!ALL_DEBUG_OFF);
+       const bool      dbg = ((ALL_DEBUG_ON)||(false))&&(!ALL_DEBUG_OFF);
+
+
+       if (dbg) fprintf(stderr, "ZIP-COMPUTE-FRAME\n");
+       if (dbg) fprintf(stderr, "ZIP-COMPUTE-FRAME: %s\n", current_function_name());
+       // gcc_assert(crtl);
+       // gcc_assert(crtl);
+       gcc_assert(cfun);
+       gcc_assert(cfun);
+       gcc_assert(cfun->machine);
+       gcc_assert(cfun->machine);
+
+
+       args_size=(ACCUMULATE_OUTGOING_ARGS ? crtl->outgoing_args_size : 0);
+       args_size=(ACCUMULATE_OUTGOING_ARGS ? crtl->outgoing_args_size : 0);
+
+
+       if(crtl->args.pretend_args_size > 0) {
+       if(crtl->args.pretend_args_size > 0) {
+               args_size += crtl->args.pretend_args_size;
+               args_size += crtl->args.pretend_args_size;
+               // printf("%s pretend_args_size : %d\n", current_function_name(),
+               if (dbg) fprintf(stderr, "%s pretend_args_size : %d\n", current_function_name(),
+                       // crtl->args.pretend_args_size);
+                       crtl->args.pretend_args_size);
+               cfun->machine->pretend_size = crtl->args.pretend_args_size;
+               cfun->machine->pretend_size = crtl->args.pretend_args_size;
+       }
+       }
+
+
+       cfun->machine->local_vars_size = get_frame_size();
+       cfun->machine->local_vars_size = get_frame_size();
+
+
Line 1170... Line 1184...
+       if ((cfun->machine->fp_needed)&&
+       if ((cfun->machine->fp_needed)&&
+                       (!df_regs_ever_live_p(zip_FP))) {
+                       (!df_regs_ever_live_p(zip_FP))) {
+               cfun->machine->saved_reg_size ++;
+               cfun->machine->saved_reg_size ++;
+       }
+       }
+
+
+       cfun->machine->sp_fp_offset = args_size + cfun->machine->local_vars_size;
+       cfun->machine->sp_fp_offset = crtl->outgoing_args_size
 
+                               + cfun->machine->local_vars_size;
+       cfun->machine->size_for_adjusting_sp = cfun->machine->local_vars_size
+       cfun->machine->size_for_adjusting_sp = cfun->machine->local_vars_size
+                       + cfun->machine->saved_reg_size
+                       + cfun->machine->saved_reg_size
+                       + args_size;
+                       + args_size;
+       if(dbg) {
+       if(dbg) {
+               fprintf(stderr, "\tFRAME-POINTR: %s\n",
+               fprintf(stderr, "\t---- STACK PTR ----\n");
+                       cfun->machine->fp_needed?"Yes":"No");
+               fprintf(stderr, "\tOUTGOIN-SIZE: %d\n",
+               fprintf(stderr, "\tARGS-SIZE   : %d\n",
+                       crtl->outgoing_args_size);
+                       args_size);
 
+               fprintf(stderr, "\tLOCALS-SIZE : %d\n",
+               fprintf(stderr, "\tLOCALS-SIZE : %d\n",
+                       cfun->machine->local_vars_size);
+                       cfun->machine->local_vars_size);
 
+               fprintf(stderr, "\t---- FRAME PTR ----%s\n",
 
+                       cfun->machine->fp_needed?"":" (Eliminated)");
+               fprintf(stderr, "\tREGISTERS   : %d\n",
+               fprintf(stderr, "\tREGISTERS   : %d\n",
+                       cfun->machine->saved_reg_size);
+                       cfun->machine->saved_reg_size);
 
+               fprintf(stderr, "\tPRETEND SIZE: %d\n",
 
+                       crtl->args.pretend_args_size);
 
+               fprintf(stderr, "\t---- ARG PTR (Original SP, should be eliminated) ----\n");
 
+               fprintf(stderr, "\t----\n");
 
+               fprintf(stderr, "\tARGS-SIZE   : %d\n", args_size);
+               fprintf(stderr, "\tSP_FP_OFFSET: %d\n",
+               fprintf(stderr, "\tSP_FP_OFFSET: %d\n",
+                       cfun->machine->sp_fp_offset);
+                       cfun->machine->sp_fp_offset);
+               fprintf(stderr, "\tSP-ADJUSTMNT: %d\n",
+               fprintf(stderr, "\tSP-ADJUSTMNT: %d\n",
+                       cfun->machine->size_for_adjusting_sp);
+                       cfun->machine->size_for_adjusting_sp);
+       }
+       }
Line 1388... Line 1409...
+int
+int
+zip_initial_elimination_offset(int from, int to) {
+zip_initial_elimination_offset(int from, int to) {
+       int     ret = 0;
+       int     ret = 0;
+       zip_compute_frame();
+       zip_compute_frame();
+
+
 
+/*
+       if (((from) == FRAME_POINTER_REGNUM)&&((to) == STACK_POINTER_REGNUM)) {
+       if (((from) == FRAME_POINTER_REGNUM)&&((to) == STACK_POINTER_REGNUM)) {
+               ret = cfun->machine->sp_fp_offset;
+               ret = cfun->machine->sp_fp_offset;
+       } else if (((from)=ARG_POINTER_REGNUM)&&((to)==STACK_POINTER_REGNUM)) {
+       } else if (((from)=ARG_POINTER_REGNUM)&&((to)==STACK_POINTER_REGNUM)) {
 
+               // Since the ARG_POINTER_REGNUM is defined to be identical
 
+               // to the FRAME_POINTER_REGNUM, this "if" will never ever
 
+               // get called.
+               ret = cfun->machine->sp_fp_offset;
+               ret = cfun->machine->sp_fp_offset;
+       } else if (((from)=ARG_POINTER_REGNUM)&&((to)==FRAME_POINTER_REGNUM)) {
+       } else if (((from)=ARG_POINTER_REGNUM)&&((to)==FRAME_POINTER_REGNUM)) {
+               // ret = cfun->machine->local_vars_size;
+               // Since we define ARG_POINTER_REGNUM to be FRAME_POINTER_REGNUM
 
+               // we're asked for the offset between the frame pointer and
 
+               // itself.  The result had better be zero.
 
+               //
+               ret = 0;
+               ret = 0;
+       } else {
+       } else {
+               abort();
+               abort();
+       }
+       }
 
+*/
 
+
 
+       // Let's try using an ARG_POINTER != FRAME_POINTER
 
+       if (((from) == FRAME_POINTER_REGNUM)&&((to) == STACK_POINTER_REGNUM)) {
 
+               ret = cfun->machine->sp_fp_offset;
 
+       } else if (((from)=ARG_POINTER_REGNUM)&&((to)==STACK_POINTER_REGNUM)) {
 
+               // Since the ARG_POINTER_REGNUM is defined to be identical
 
+               // to the FRAME_POINTER_REGNUM, this "if" will never ever
 
+               // get called.
 
+               ret = cfun->machine->size_for_adjusting_sp;
 
+       } else if (((from)=ARG_POINTER_REGNUM)&&((to)==FRAME_POINTER_REGNUM)) {
 
+               ret = cfun->machine->size_for_adjusting_sp
 
+                       - cfun->machine->sp_fp_offset;
 
+       } else {
 
+               abort();
 
+       }
+
+
+       return ret;
+       return ret;
+}
+}
+
+
+/*
+/*
Line 1434... Line 1478...
+}
+}
+*/
+*/
+
+
+#define        zip_basic_check()
+#define        zip_basic_check()
+
+
+/* Compute the number of word sized regiters needed to hold a function
+/* Compute the number of word sized registers needed to hold a function
+ * argument of mode INT_MODE and tree type TYPE.
+ * argument of mode INT_MODE and tree type TYPE.
+ */
+ */
+int
+int
+zip_num_arg_regs(enum machine_mode mode, const_tree type) {
+zip_num_arg_regs(enum machine_mode mode, const_tree type) {
+       int     size;
+       int     size;
Line 1454... Line 1498...
+               size = GET_MODE_SIZE(mode);
+               size = GET_MODE_SIZE(mode);
+
+
+       return (size + UNITS_PER_WORD - 1)/UNITS_PER_WORD;
+       return (size + UNITS_PER_WORD - 1)/UNITS_PER_WORD;
+}
+}
+
+
+/* pushed in function prologue */
 
+/*
 
+static int
 
+zip_arg_partial_bytes(CUMULATIVE_ARGS *cum, enum machine_mode mode,
 
+               tree type, bool name ATTRIBUTE_UNUSED) {
 
+       int     words;
 
+       unsigned int    regs = zip_num_arg_regs(mode, type);
 
+
 
+       if (*cum >= ZIP_LAST_ARG_REGNO + 1)
 
+               words = 0;
 
+       else if ((*cum + regs) > ZIP_LAST_ARG_REGNO + 1)
 
+               words = (*cum + regs) - ZIP_LAST_ARG_REGNO + 1;
 
+       else
 
+               words = 0;
 
+
 
+       return words * UNITS_PER_WORD;
 
+}
 
+*/
 
+
 
+static void
+static void
+zip_function_arg_advance(cumulative_args_t ca, machine_mode mode,
+zip_function_arg_advance(cumulative_args_t ca, machine_mode mode,
+               const_tree type, bool named ATTRIBUTE_UNUSED) {
+               const_tree type, bool named ATTRIBUTE_UNUSED) {
+       CUMULATIVE_ARGS *cum;
+       CUMULATIVE_ARGS *cum;
+       int     nreg;
+       int     nreg;
Line 1509... Line 1534...
+               return NULL_RTX;
+               return NULL_RTX;
+       return
+       return
+               gen_rtx_REG(mode, (*cum)+1);
+               gen_rtx_REG(mode, (*cum)+1);
+}
+}
+
+
+#ifdef HAVE_cc0
 
+/* NOTICE_UPDATE_CC sends us here
 
+ */
 
+void
 
+zip_update_cc_notice(rtx exp, rtx_insn *insn)
 
+{
 
+#error "The CC0 code was supposed to be removed"
 
+       const bool      dbg = ((ALL_DEBUG_ON)||(false))&&(!ALL_DEBUG_OFF);
 
+       enum    attr_ccresult  ccr;
 
+       enum    attr_conditional  conditionally_executed;
 
+
 
+       // The default is that nothing has changed.
 
+       // cc_status = cc_status_prev;
 
+       rtx     src, dest;
 
+
 
+       if (dbg) fprintf(stderr, "CC-NOTICE ...\n");
 
+       if (dbg) zip_debug_rtx_pfx("CC :", exp);
 
+       if (dbg) debug_rtx(exp);
 
+
 
+       ccr = get_attr_ccresult(insn);
 
+       if (ccr == CCRESULT_UNKNOWN) {
 
+               CC_STATUS_INIT;
 
+               if (dbg) fprintf(stderr, "\tINIT-CC\n");
 
+               return;
 
+       }
 
+
 
+       if ((GET_CODE(exp) == PARALLEL)&&(GET_CODE(XVECEXP(exp, 0, 0))==SET)) {
 
+               // This works up and until we add cc0 parallel instructions
 
+               // to our instruction set.
 
+               dest = SET_DEST(XVECEXP(exp, 0, 0));
 
+               src  = SET_SRC (XVECEXP(exp, 0, 0));
 
+       } else if (GET_CODE(exp) == SET) {
 
+               dest = SET_DEST(exp);
 
+               src  = SET_SRC (exp);
 
+       } else {
 
+               // First, do nothing if we haven't touched the condition codes.
 
+               // Condition codes can only be changed as a result of a set
 
+               // expression ...?
 
+               if (dbg) fprintf(stderr, "Non-set expression, doesn\'t touch condition codes\n");
 
+               return;
 
+       }
 
+
 
+
 
+       if (ccr == CCRESULT_UNCHANGED) {
 
+               if (dbg) fprintf(stderr, "\tUnchanged CC\n");
 
+
 
+               // We can't just run away here ... even though the CC result
 
+               // hasn't changed, GCC's ability to recognize it as a valid
 
+               // result has changed.  In other words, if we just 'set' a
 
+               // value contained within either value1 or value2, then we'll
 
+               // need to update those values so that they are no longer looked
 
+               // upon as potentially containing the current CC values.
 
+
 
+               if (dest) {
 
+                       if (dest == cc0_rtx)
 
+                               CC_STATUS_INIT;
 
+                       else if ((REG_P(dest))&&(dest != pc_rtx)) {
 
+                               // An example here might be a load instruction
 
+                               if (reg_mentioned_p(dest, cc_status.value1))
 
+                                       cc_status.value1 = NULL_RTX;
 
+                               if (reg_mentioned_p(dest, cc_status.value2))
 
+                                       cc_status.value2 = NULL_RTX;
 
+                       }
 
+               }
 
+               return;
 
+       }
 
+
 
+       // Gotta wait on this test, until we know whether or not the
 
+       // conditionally executed instruction was designed to set the
 
+       // CC0 register.
 
+       conditionally_executed = get_attr_conditional(insn);
 
+       if ((conditionally_executed == CONDITIONAL_YES)&&(dest != cc0_rtx)) {
 
+               // cc_status is unchanged
 
+               // However, GCC's vision of it may have changed
 
+               //
 
+               // Initialize CC_STATUS
 
+               if (dbg) fprintf(stderr, "\tCC -- unchanged (conditional exec)\n");
 
+               CC_STATUS_INIT;
 
+               return;
 
+       } else if (GET_CODE(src)==IF_THEN_ELSE) {
 
+               // Same thing as above
 
+               CC_STATUS_INIT;
 
+               return;
 
+       }
 
+
 
+       if (ccr == CCRESULT_VALIDZN)
 
+               cc_status.flags = CC_NO_OVERFLOW;
 
+       else
 
+               cc_status.flags = 0;
 
+       cc_status.value1 = dest;
 
+       if (dest == cc0_rtx)
 
+               cc_status.value2 = src;
 
+       else if((REG_P(dest))&&(!reg_mentioned_p(dest, src)))
 
+               cc_status.value2 = src;
 
+       else if((SUBREG_P(dest))&&(!reg_mentioned_p(XEXP(dest,0), src)))
 
+               cc_status.value2 = src;
 
+       else
 
+               cc_status.value2 = 0;
 
+       if (dbg) fprintf(stderr, "\tCC -- Set flags for\n");
 
+       if (dbg) zip_debug_rtx_pfx("V1: ", dest);
 
+       if ((dbg)&&(cc_status.value2)) zip_debug_rtx_pfx("V2: ", src);
 
+       else if (dbg)   fprintf(stderr, "V2: (No SRC)\n");
 
+       if ((dbg)&&(REG_P(dest))) fprintf(stderr, "src refers to dest ?? %s\n",
 
+               refers_to_regno_p(REGNO(dest),REGNO(dest),src,NULL)?"Yes":"No");
 
+       if ((dbg)&&(REG_P(dest))) fprintf(stderr, "Occurrs %d times\n",
 
+               count_occurrences(dest,src,0));
 
+       if ((dbg)&&(REG_P(dest))) fprintf(stderr, "%s mentioned\n",
 
+               reg_mentioned_p(dest,src)?"Is":"Is not");
 
+       if ((dbg)&&(REG_P(dest))) fprintf(stderr, "%s referenced\n",
 
+               reg_referenced_p(dest,src)?"Is":"Is not");
 
+
 
+//
 
+// These results are only used in final.c, where they are used to remove
 
+// compare instructions if the optimizer is on.  If I produce nothing, no
 
+// compare instructions will be removed.  If I produce something, a smart
 
+// decision may be made to remove compare instructions.
 
+//
 
+// cc_status will be compared  with subsequent
 
+//     (set (cc0) (something)) (i.e. compare only) instructions
 
+//
 
+//     (set (cc0) (compare (x) (y)))
 
+//     dst = cc0 -- the destination of the set is ignored, save that it must be
 
+//             cc0
 
+//     src1 = (compare (x) (y))
 
+//     if (src1 == compare)&&(y == (const_int 0))
 
+//             src2 = (x)
 
+//     else
 
+//             src2 = null
 
+//
 
+//     Four conditions:
 
+//     1. if (val1)&&(src1 == val1)
 
+//             This would be true if I had seen a (set (val1) (src1)) insn
 
+//             If I have seen a (set (val1) (src1))
 
+//                     or equivalently a (set (val1) (compare (x) (y)))
 
+//     or
 
+//     2. if (val2)&&(src1 == val2)
 
+//             This would be true if I had seen a (set (val1) (src1)) insn,
 
+//             and only if val2 was still valid.
 
+//     or
 
+//     3. if (src2)&&(value1)&&(src2 == value1)
 
+//             This would be true if we are comparing against zero, and the
 
+//             number we are comparing against zero is value 1
 
+//     or
 
+//     4. if (src2)&&(value2)&&(src2 == value2)
 
+//             ... or value2.  This is the common ZipCPU case.
 
+//
 
+//             then delete the compare.
 
+//
 
+}
 
+#else
 
+
 
+void   zip_canonicalize_comparison(int *code, rtx *op0, rtx *op1,
+void   zip_canonicalize_comparison(int *code, rtx *op0, rtx *op1,
+               bool preserve_op0)
+               bool preserve_op0)
+{
+{
+       const bool      dbg = ((ALL_DEBUG_ON)||(false))&&(!ALL_DEBUG_OFF);
+       const bool      dbg = ((ALL_DEBUG_ON)||(false))&&(!ALL_DEBUG_OFF);
+
+
Line 1709... Line 1583...
+       *a = zip_CC;
+       *a = zip_CC;
+       *b = INVALID_REGNUM;
+       *b = INVALID_REGNUM;
+       return true;
+       return true;
+}
+}
+
+
+#endif
 
+
 
+
+
+/* totally buggy - we can't return pointers to nested functions */
+/* totally buggy - we can't return pointers to nested functions */
+static void
+static void
+zip_asm_trampoline_template(FILE *f) {
+zip_asm_trampoline_template(FILE *f) {
+       // Whereas at one time I thought I wouldn't need it, now I know I
+       // Whereas at one time I thought I wouldn't need it, now I know I
Line 1758... Line 1630...
+  def_builtin("zip_rtu", CODE_FOR_zip_rtu, ZIP_BUILTIN_RTU, void_ftype_void);
+  def_builtin("zip_rtu", CODE_FOR_zip_rtu, ZIP_BUILTIN_RTU, void_ftype_void);
+#endif
+#endif
+#ifdef HAVE_zip_halt
+#ifdef HAVE_zip_halt
+  def_builtin("zip_halt",  CODE_FOR_zip_halt,  ZIP_BUILTIN_HALT, void_ftype_void);
+  def_builtin("zip_halt",  CODE_FOR_zip_halt,  ZIP_BUILTIN_HALT, void_ftype_void);
+#endif
+#endif
 
+#ifdef HAVE_zip_busy
 
+  def_builtin("zip_busy",  CODE_FOR_zip_busy,  ZIP_BUILTIN_BUSY, void_ftype_void);
 
+#endif
+#ifdef HAVE_zip_idle
+#ifdef HAVE_zip_idle
+  def_builtin("zip_idle", CODE_FOR_zip_idle, ZIP_BUILTIN_IDLE, void_ftype_void);
+  def_builtin("zip_idle", CODE_FOR_zip_idle, ZIP_BUILTIN_IDLE, void_ftype_void);
+#endif
+#endif
+
+
+#ifdef HAVE_zip_syscall
+#ifdef HAVE_zip_syscall
Line 2984... Line 2859...
+int    zip_is_conditional(rtx_insn *insn) {
+int    zip_is_conditional(rtx_insn *insn) {
+       return (get_attr_conditional(insn)==CONDITIONAL_YES);
+       return (get_attr_conditional(insn)==CONDITIONAL_YES);
+}
+}
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/zip/zip.h gcc-5.3.0-zip/gcc/config/zip/zip.h
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/zip/zip.h gcc-5.3.0-zip/gcc/config/zip/zip.h
--- gcc-5.3.0-original/gcc/config/zip/zip.h     1969-12-31 19:00:00.000000000 -0500
--- gcc-5.3.0-original/gcc/config/zip/zip.h     1969-12-31 19:00:00.000000000 -0500
+++ gcc-5.3.0-zip/gcc/config/zip/zip.h  2016-05-12 15:20:14.000702915 -0400
+++ gcc-5.3.0-zip/gcc/config/zip/zip.h  2016-09-13 10:05:21.871953479 -0400
@@ -0,0 +1,4077 @@
@@ -0,0 +1,4058 @@
+////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+//
+//
+// Filename:   gcc/config/zip/zip.h
+// Filename:   gcc/config/zip/zip.h
+//
+//
+// Project:    Zip CPU backend for the GNU Compiler Collection
+// Project:    Zip CPU backend for the GNU Compiler Collection
Line 3052... Line 2927...
+//     Register 13 is the stack pointer   (SP)
+//     Register 13 is the stack pointer   (SP)
+//     Register 12 (may be) the Global Offset Table pointer (GOT)
+//     Register 12 (may be) the Global Offset Table pointer (GOT)
+//     Register  0 (may be) the return address pointer
+//     Register  0 (may be) the return address pointer
+// Registers 16-31 may only be used in supervisor mode.
+// Registers 16-31 may only be used in supervisor mode.
+#define        is_ZIP_GENERAL_REG(REGNO)       ((REGNO)<13)
+#define        is_ZIP_GENERAL_REG(REGNO)       ((REGNO)<13)
+#define        is_ZIP_REG(REGNO)               ((REGNO)<16)
+#define        is_ZIP_REG(REGNO)               ((REGNO)<33)
+
+
+// #define     zip_FP_PSEUDO   16
+#define        zip_AP_PSEUDO   32
+#define        zip_PC          15
+#define        zip_PC          15
+#define        zip_CC          14
+#define        zip_CC          14
+#define        zip_SP          13
+#define        zip_SP          13
+#define        zip_FP          12
+#define        zip_FP          12
+#define        zip_GOT         11
+#define        zip_GOT         11
+#define        zip_AP          10
+// #define     zip_AP          10      // We're using a PSEUDO REG instead
+#define        zip_R1          1
+#define        zip_R1          1
+#define        zip_R0          0
+#define        zip_R0          0
+
+
+#define        ZIP_FIRST_ARG_REGNO     1
+#define        ZIP_FIRST_ARG_REGNO     1
+#define        ZIP_LAST_ARG_REGNO      5
+#define        ZIP_LAST_ARG_REGNO      5
Line 3786... Line 3661...
+ * They receive numbers 0 through FIRST_PSEUDO_REGISTER-1; thus the first
+ * They receive numbers 0 through FIRST_PSEUDO_REGISTER-1; thus the first
+ * pseudo register's numbrer really is assigned the number
+ * pseudo register's numbrer really is assigned the number
+ * FIRST_PSEUDO_REGISTER.
+ * FIRST_PSEUDO_REGISTER.
+ *
+ *
+ * ZipCPU---There are 16 registers in the ZipCPU, numbered 0-15 with the CC
+ * ZipCPU---There are 16 registers in the ZipCPU, numbered 0-15 with the CC
+ * and PC register being numbered 14 and 15 respectively.  Therefore, the
+ * and PC register being numbered 14 and 15 respectively.  The ZipCPU has
+ * compiler can take register number 16 and above and do whatever it wants
+ * another 16 registers, identical to the first, but user mode registers.  These
+ * with it.
+ * are number the same as the first (0-15) in user mode, but numbered (16-31)
 
+ * in supervisor mode.  In addition, we create a pretend argument pointer
 
+ * register, zip_AP_PSEUDO, to refer to our arguments.  This final register,
 
+ * although it gets a valid number, will be eliminated in optimization.
+ */
+ */
+#ifdef DEFINE_USER_REGS
+#define        FIRST_PSEUDO_REGISTER   (zip_AP_PSEUDO+1)
+#  define      FIRST_PSEUDO_REGISTER   32
 
+#else
 
+#  ifdef       zip_FP_PSEUDO
 
+#    define    FIRST_PSEUDO_REGISTER   (zip_FP_PSEUDO+1)
 
+#  else
 
+#    define    FIRST_PSEUDO_REGISTER   16
 
+#  endif
 
+#endif
 
+
+
+/* FIXED_REGISTERS ... An initializer that says which registers are used for
+/* FIXED_REGISTERS ... An initializer that says which registers are used for
+ * fixed purposes all throughout the compiled code and are therefore not
+ * fixed purposes all throughout the compiled code and are therefore not
+ * available for general allocation.  These would include the stack pointer, the
+ * available for general allocation.  These would include the stack pointer, the
+ * frame pointer (except on machines where that can be used as a general
+ * frame pointer (except on machines where that can be used as a general
Line 3821... Line 3691...
+ *     CC      The condition codes and CPU state register
+ *     CC      The condition codes and CPU state register
+ *     PC      The program counter
+ *     PC      The program counter
+ *
+ *
+ * Other registers, such as FP (the frame pointer) or GBL (the global offset
+ * Other registers, such as FP (the frame pointer) or GBL (the global offset
+ * table pointer) are registers that we hope will not be so fixed.
+ * table pointer) are registers that we hope will not be so fixed.
 
+ *
 
+ * Okay, just updated this process.  We now have more registers that are not
 
+ * available for general allocation:
 
+ *     uR0-uPC         User registers
 
+ *     PSEUDO-AP       The pseudo arg pointer
+ */
+ */
+#ifdef DEFINE_USER_REGS
 
+#  define      FIXED_REGISTERS         { 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,   1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 }
+#  define      FIXED_REGISTERS         { 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,   1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 }
+#else
 
+#  ifdef       zip_FP_PSEUDO
 
+#    define    FIXED_REGISTERS         { 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1 }
 
+#  else
 
+#    define    FIXED_REGISTERS         { 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1 }
 
+#  endif
 
+#endif
 
+
+
+/* CALL_USED_REGISTERS ... like FIXED_REGISTERS but has 1 for each register
+/* CALL_USED_REGISTERS ... like FIXED_REGISTERS but has 1 for each register
+ * that is clobbered (in general) by function calls as well as for fixed
+ * that is clobbered (in general) by function calls as well as for fixed
+ * registers.  This macro therefore identifies the registers that are not
+ * registers.  This macro therefore identifies the registers that are not
+ * available for general allocation of values that must live across function
+ * available for general allocation of values that must live across function
Line 3845... Line 3712...
+ * used within the function.
+ * used within the function.
+ *
+ *
+ * On the Zip CPU, we must save R0 (the return address), and (let's pick) any
+ * On the Zip CPU, we must save R0 (the return address), and (let's pick) any
+ * register above R5.
+ * register above R5.
+ */
+ */
+#ifdef DEFINE_USER_REGS
 
+#  define      CALL_USED_REGISTERS     { 0,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 }
+#  define      CALL_USED_REGISTERS     { 0,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 }
+#else
 
+#  ifdef       zip_FP_PSEUDO
 
+#    define    CALL_USED_REGISTERS     { 0,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1 }
 
+#  else
 
+#    define    CALL_USED_REGISTERS     { 0,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1 }
 
+#  endif
 
+#endif
 
+
+
+/* CALL_REALLY_USED_REGISTERS ...  optional macro that, if not defined, defaults
+/* CALL_REALLY_USED_REGISTERS ...  optional macro that, if not defined, defaults
+ * to the value of CALL_USED_REGISTERS.
+ * to the value of CALL_USED_REGISTERS.
+ */
+ */
+
+
Line 3882... Line 3741...
+ * initialized from FIXED_REGISTERS, CALL_USED_REGISTERS, REG_CLASS_CONTENTS,
+ * initialized from FIXED_REGISTERS, CALL_USED_REGISTERS, REG_CLASS_CONTENTS,
+ * and REGISTER_NAMES, respectively.  global_regs has been cleared, and any
+ * and REGISTER_NAMES, respectively.  global_regs has been cleared, and any
+ * -ffixed-reg, -fcall-used-reg, and -fcall-saved-reg command options have been
+ * -ffixed-reg, -fcall-used-reg, and -fcall-saved-reg command options have been
+ * applied.
+ * applied.
+ *
+ *
+ * ZipCPU -- I may need to return and define this depending upon how FP and
+ * ZipCPU -- I may need to return and define this depending upon how the
+ * GBL register allocation go.  But for now, we'll leave this at its default
+ * GBL register allocation goes.  But for now, we'll leave this at its default
+ * value.
+ * value.
+ */
+ */
+// #warning "Revisit me after FP and GBL allocation"
+// #warning "Revisit me after FP and GBL allocation"
+
+
+/* INCOMING_REGNO(out) ... Define this macro if the target machine has register
+/* INCOMING_REGNO(out) ... Define this macro if the target machine has register
Line 3895... Line 3754...
+ *
+ *
+ * Zip CPU has no register windows.
+ * Zip CPU has no register windows.
+ */
+ */
+
+
+/* OUTGOING_REGNO ... same thing.
+/* OUTGOING_REGNO ... same thing.
+ */
+ * LOCAL_REGNO ... same thing.
+
 
+/* LOCAL_REGNO ... same thing.
 
+ */
+ */
+
+
+/* PC_REGNUM ... If the program counter has a register number, define this as
+/* PC_REGNUM ... If the program counter has a register number, define this as
+ * that register number.  Otherwise do not define it.
+ * that register number.  Otherwise do not define it.
+ */
+ */
Line 4046... Line 3903...
+ * ZipCPU --- We'll defined register 0-13 as general registers, 14-15 in
+ * ZipCPU --- We'll defined register 0-13 as general registers, 14-15 in
+ * all_regs, and go from there.
+ * all_regs, and go from there.
+ */
+ */
+enum   reg_class {
+enum   reg_class {
+       NO_REGS, GENERAL_REGS,
+       NO_REGS, GENERAL_REGS,
+#ifdef DEFINE_USER_REGS
 
+       USER_REGS,
+       USER_REGS,
+#endif
 
+       ALL_REGS, LIM_REG_CLASSES
+       ALL_REGS, LIM_REG_CLASSES
+};
+};
+
+
+/* N_REG_CLASSES ... the number of distinct register classes, defined as follows
+/* N_REG_CLASSES ... the number of distinct register classes, defined as follows
+ */
+ */
Line 4060... Line 3915...
+
+
+/* REG_CLASS_NAMES ... An initializer containing the names of the register
+/* REG_CLASS_NAMES ... An initializer containing the names of the register
+ * classes as C string constants.  These names are used in writing some of the
+ * classes as C string constants.  These names are used in writing some of the
+ * debugging dumps.
+ * debugging dumps.
+ */
+ */
+#ifdef DEFINE_USER_REGS
 
+#  define      REG_CLASS_NAMES { "NO_REGS", "GENERAL_REGS", "USER_REGS", "ALL_REGS" }
+#  define      REG_CLASS_NAMES { "NO_REGS", "GENERAL_REGS", "USER_REGS", "ALL_REGS" }
+#else
 
+#  define      REG_CLASS_NAMES { "NO_REGS", "GENERAL_REGS", "ALL_REGS" }
 
+#endif
 
+
+
+/* REG_CLASS_CONTENTS ... An initializer containing the contents of the register
+/* REG_CLASS_CONTENTS ... An initializer containing the contents of the register
+ * classes, as integers which are bit masks.  The nth integer specifies the
+ * classes, as integers which are bit masks.  The nth integer specifies the
+ * contents of class n.  That way the integer mask is interpreted as that
+ * contents of class n.  That way the integer mask is interpreted as that
+ * register r is in the class if (mask&(1<<r)) is 1.
+ * register r is in the class if (mask&(1<<r)) is 1.
+ *
+ *
+ * When the machine has more than 32 registers ... that's not us.
+ * When the machine has more than 32 registers, an integer does not suffice.
 
+ * Then the integers are replaced by sub-initializers, braced groupings
 
+ * containing several integers.  Each sub-initializer must be suitable as an
 
+ * initializer for the type HARD_REG_SET which is defined in 'hard-reg-set.h'.
 
+ * In this situation, the first integer in each subinitializer corresponds to
 
+ * registers 0-31, the second integer to registers 32-634, and so on.
+ *
+ *
+ * ZipCPU --- This is straight forward, three register classes, etc.
+ * ZipCPU --- This is straight forward, three register classes, etc.
+ */
+ */
+#ifdef DEFINE_USER_REGS
+#define        REG_CLASS_CONTENTS { { 0x000000000, 0}, {0x00003fff, 0}, {0x0ffff0000, 0}, {0x0ffffffff, 1} }
+#    define    REG_CLASS_CONTENTS { { 0x000000000}, {0x00003fff}, {0x0ffff0000l}, {0x0ffffffffl} }
 
+#else
 
+#  ifdef       zip_FP_PSEUDO
 
+#    define    REG_CLASS_CONTENTS { { 0x00000}, {0x13fff}, {0x1ffff} }
 
+#  else
 
+#    define    REG_CLASS_CONTENTS { { 0x00000}, {0x03fff}, {0x0ffff} }
 
+#  endif
 
+#endif
 
+
+
+/* REGNO_REG_CLASS ... A C expression whose value is a register class
+/* REGNO_REG_CLASS ... A C expression whose value is a register class
+ * containing hard register REGNO.  In general there is more than one such
+ * containing hard register REGNO.  In general there is more than one such
+ * class;  Choose a class which is minimal, meaning that no smaller class also
+ * class;  Choose a class which is minimal, meaning that no smaller class also
+ * contains the register.
+ * contains the register.
+ */
+ */
+#undef REGNO_REG_CLASS
+#define        REGNO_REG_CLASS(R)      (is_ZIP_REG(R)?(((R)<=13)?GENERAL_REGS:ALL_REGS):NO_REGS)
+#ifdef zip_FP_PSEUDO
 
+#define        REGNO_REG_CLASS(R)      (is_ZIP_REG(R)?((((R)<=13)||((R)==zip_FP_PSEUDO))?GENERAL_REGS:ALL_REGS):NO_REGS)
 
+#else
 
+#define        REGNO_REG_CLASS(R)      (is_ZIP_REG(R)?((R<=13)?GENERAL_REGS:ALL_REGS):NO_REGS)
 
+#endif
 
+
+
+/* BASE_REG_CLASS ... A macro whose definition is the name of the class to which
+/* BASE_REG_CLASS ... A macro whose definition is the name of the class to which
+ * a valid base register must belong.  A base register is one used in an address
+ * a valid base register must belong.  A base register is one used in an address
+ * which is the register value plus a displacement.
+ * which is the register value plus a displacement.
+ */
+ */
Line 4347... Line 4190...
+ * it is of no consequence to the hardware.
+ * it is of no consequence to the hardware.
+ */
+ */
+
+
+/* STARTING_FRAME_OFFSET ... Offset from the frame pointer to the first local
+/* STARTING_FRAME_OFFSET ... Offset from the frame pointer to the first local
+ * variable slot to be allocated.  If FRAME_GROWS_DOWNWARD, find the next slot's
+ * variable slot to be allocated.  If FRAME_GROWS_DOWNWARD, find the next slot's
+ * offset by subtracting the firstt slot's length from STARTING_FRAME_OFFSET.
+ * offset by subtracting the first slot's length from STARTING_FRAME_OFFSET.
+ * Otherwise it is found by adding the length of the first slot to the value
+ * Otherwise it is found by adding the length of the first slot to the value
+ * START_FRAME_OFFSET.
+ * START_FRAME_OFFSET.
+ *
+ *
+ * ZipCPU --- I'm not certain on this, let's come back after we look at how
+ * ZipCPU --- I'm not certain on this, let's come back after we look at how
+ * the code is getting generated.  However, the ECO32 code I am copying from
+ * the code is getting generated.  However, the ECO32 code I am copying from
+ * suggests that 0 is the right value, so we'll use that here.
+ * suggests that 0 is the right value, so we'll use that here.
+ */
+ */
+// #warning "Re-evaluate me"
+// #warning "Re-evaluate me" --- I did.  This still looks good.
+#define        STARTING_FRAME_OFFSET   0
+#define        STARTING_FRAME_OFFSET   0
+
+
+/* STACK_ALIGNMENT_NEEDED ... Define to zero to disable final alignment of the
+/* STACK_ALIGNMENT_NEEDED ... Define to zero to disable final alignment of the
+ * stack during reload.  The nonzero default for this macro is suitable for most
+ * stack during reload.  The nonzero default for this macro is suitable for most
+ * ports.
+ * ports.
Line 4469... Line 4312...
+ */
+ */
+
+
+/* TARGET_DWARF_HANDLE_FRAME_UNSPEC
+/* TARGET_DWARF_HANDLE_FRAME_UNSPEC
+ */
+ */
+
+
+/* INCOMING_FRAME_SP_OFFSET
+/* INCOMING_FRAME_SP_OFFSET ... A C expression whose value is an integer giving
 
+ * the offset, in bytes, from the value of the stack pointer register to the
 
+ * top of the stack frame at the beginning of any function, before the prologue.
 
+ * The top of the frame is defined to be the value of the stack pointer in the
 
+ * previous frame, just before the call instruction.
 
+ *
 
+ * You only need to define this macro if you want to support call frame
 
+ * debugging information like that provided by DWARF 2.
 
+ *
 
+ * ZipCPU---Our value is zero.
+ */
+ */
+#define        INCOMING_FRAME_SP_OFFSET        0
+#define        INCOMING_FRAME_SP_OFFSET        0
+
+
+/* ARG_POINTER_CFA_OFFSET
+/* ARG_POINTER_CFA_OFFSET
+ */
+ */
Line 4609... Line 4461...
+ *
+ *
+ * ZipCPU --- While I'd like to dump this pointer, since I don't really see
+ * ZipCPU --- While I'd like to dump this pointer, since I don't really see
+ * a need for it, alloca() requires it.  Therefore let's assine a register to
+ * a need for it, alloca() requires it.  Therefore let's assine a register to
+ * this purpose and watch what the compiler does with it.
+ * this purpose and watch what the compiler does with it.
+ */
+ */
+#ifdef zip_FP_PSEUDO
 
+#define        FRAME_POINTER_REGNUM    zip_FP_PSEUDO
 
+#else
 
+#define        FRAME_POINTER_REGNUM    zip_FP
+#define        FRAME_POINTER_REGNUM    zip_FP
+#endif
 
+
+
+/* HARD_FRAME_POINTER_REGNUM ... On some machines the offset between the frame
+/* HARD_FRAME_POINTER_REGNUM ... On some machines the offset between the frame
+ * pointer and starting offset of the automatic variables is not known until
+ * pointer and starting offset of the automatic variables is not known until
+ * after register allocation has been done (for example, because the saved
+ * after register allocation has been done (for example, because the saved
+ * registers are between these two locations).  On those machines, define
+ * registers are between these two locations).  On those machines, define
Line 4627... Line 4475...
+ *
+ *
+ * Do not define this macro if it would be the same as FRAME_POINTER_REGNUM
+ * Do not define this macro if it would be the same as FRAME_POINTER_REGNUM
+ *
+ *
+ * ZipCPU --- we do not define this macro.
+ * ZipCPU --- we do not define this macro.
+ */
+ */
+#if (zip_FP == FRAME_POINTER_REGNUM)
 
+#define HARD_FRAME_POINTER_REGNUM      zip_FP
+#define HARD_FRAME_POINTER_REGNUM      zip_FP
+#endif
 
+
+
+/* ARG_POINTER_REGNUM ... The register number of the arg pointer register, which
+/* ARG_POINTER_REGNUM ... The register number of the arg pointer register, which
+ * is used to access the function's argument list.  On some machines, this is
+ * is used to access the function's argument list.  On some machines, this is
+ * the same as the frame pointer register.  On some machines, the hardware
+ * the same as the frame pointer register.  On some machines, the hardware
+ * determines which register this is.  On other machines, you can choose any
+ * determines which register this is.  On other machines, you can choose any
Line 4643... Line 4489...
+ *
+ *
+ * ZipCPU --- We really don't want to lose another register to something
+ * ZipCPU --- We really don't want to lose another register to something
+ * pointless, so let's set this to be the frame pointer register.  Especially
+ * pointless, so let's set this to be the frame pointer register.  Especially
+ * given the ZipCPU's ease of accessing things via offsets of registers, this
+ * given the ZipCPU's ease of accessing things via offsets of registers, this
+ * should work for a rather large stack frame.
+ * should work for a rather large stack frame.
 
+ *
 
+ * However ... we had problems with passing 6+ variables on the stack, so let's
 
+ * try creating a pseudo register for this, and appropriately adjusting the
 
+ * offset between this pseudo register and the stack pointer ...
+ */
+ */
+#define ARG_POINTER_REGNUM     FRAME_POINTER_REGNUM
+#define        ARG_POINTER_REGNUM      zip_AP_PSEUDO
+
+
+/* HARD_FRAME_POINTER_IS_FRAME_POINTER ... define this to be a preprocessor
+/* HARD_FRAME_POINTER_IS_FRAME_POINTER ... define this to be a preprocessor
+ * constant that is nonzero if hard_frame_pointer_rtx and frame_pointer_rtx
+ * constant that is nonzero if hard_frame_pointer_rtx and frame_pointer_rtx
+ * should be the same.  The default definition is sufficient for us.
+ * should be the same.  The default definition is sufficient for us.
+ */
+ */
Line 4810... Line 4660...
+ * depending on whether or not the frame pointer has been eliminated.
+ * depending on whether or not the frame pointer has been eliminated.
+ *
+ *
+ * ZipCPU we'll take their suggestion and define this as:
+ * ZipCPU we'll take their suggestion and define this as:
+ */
+ */
+#undef ELIMINABLE_REGS
+#undef ELIMINABLE_REGS
+#ifdef zip_FP_PSEUDO
 
+#define        ELIMINABLE_REGS \
 
+        {{ ARG_POINTER_REGNUM, STACK_POINTER_REGNUM},          \
 
+         { ARG_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM},     \
 
+         { FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM},        \
 
+         { FRAME_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM}}
 
+#else
 
+# if (ARG_POINTER_REGNUM == FRAME_POINTER_REGNUM)
 
+#  define      ELIMINABLE_REGS \
 
+        {{ FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}}
 
+# else
 
+#  define      ELIMINABLE_REGS \
+#  define      ELIMINABLE_REGS \
+       {{ ARG_POINTER_REGNUM, STACK_POINTER_REGNUM },  \
+       {{ ARG_POINTER_REGNUM, STACK_POINTER_REGNUM },  \
+        { ARG_POINTER_REGNUM, FRAME_POINTER_REGNUM },  \
+        { ARG_POINTER_REGNUM, FRAME_POINTER_REGNUM },  \
+        { FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}}
+        { FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}}
+# endif
 
+#endif
 
+
+
+/* bool TARGET_CAN_ELIMINATE(FROM,TO) ... This target function should return
+/* bool TARGET_CAN_ELIMINATE(FROM,TO) ... This target function should return
+ * true if the compiler is allowed to try to replace register number FROM with
+ * true if the compiler is allowed to try to replace register number FROM with
+ * register number TO.  This target hook need only be defined if ELIMINABLE_REGS
+ * register number TO.  This target hook need only be defined if ELIMINABLE_REGS
+ * is defined, and will usually return true since most of the cases preventing
+ * is defined, and will usually return true since most of the cases preventing
Line 4901... Line 4738...
+ */
+ */
+// #warning "No appropriate definition seemed right."
+// #warning "No appropriate definition seemed right."
+
+
+/* ACCUMULATE_OUTGOING_ARGS ... A C expression.  If non-zero, the maximum amount
+/* ACCUMULATE_OUTGOING_ARGS ... A C expression.  If non-zero, the maximum amount
+ * of space required for outgoing arguments will be computed and placed into
+ * of space required for outgoing arguments will be computed and placed into
+ * crtl->outgoing_args_size.  No space will be pushed onto the stack for each call; instead the function prologue should increase the stack frame size by this
+ * crtl->outgoing_args_size.  No space will be pushed onto the stack for each
+ * amount.
+ * call; instead the function prologue should increase the stack frame size by
 
+ * this amount.
+ *
+ *
+ * ZipCPU---This is *cool* and so necessary---it saves an extra two instructions
+ * ZipCPU---This is *cool* and so necessary---it saves an extra two instructions
+ * each time we try to call a function/routine.  Yes, we want and *need* this
+ * each time we try to call a function/routine.  Yes, we want and *need* this
+ * for good performance.  I mean, think of it, free performance increase?  Who
+ * for good performance.  I mean, think of it, free performance increase?  Who
+ * could argue with that?
+ * could argue with that?
Line 4991... Line 4829...
+ *     : gen_rtx_REG(MODE, CUM))
+ *     : gen_rtx_REG(MODE, CUM))
+ */
+ */
+#define        TARGET_FUNCTION_ARG     zip_function_arg
+#define        TARGET_FUNCTION_ARG     zip_function_arg
+
+
+
+
+/* TARGET_MUST_PASS_IN_STACK ...
+/* TARGET_MUST_PASS_IN_STACK(MODE, TYPE) ... This target hook should return
 
+ * true if we should not pass TYPE solely in registers.  The file 'expr.h'
 
+ * defines a definition that is usually appropriate, refer to 'expr.h' for
 
+ * additional documentation.
 
+ *
 
+ * ZipCPU ... Ok, so I looked into expr.h and didn't find anything that looked
 
+ * like this.  So ... I don't know.
+ */
+ */
+// #undef      TARGET_MUST_PASS_IN_STACK
+// #undef      TARGET_MUST_PASS_IN_STACK
+// #define     TARGET_MUST_PASS_IN_STACK       zip_must_pass_in_stack
+// #define     TARGET_MUST_PASS_IN_STACK       zip_must_pass_in_stack
+
+
+/* TARGET_FUNCTION_INCOMING_ARG ... Define this hook if the target machine
+/* TARGET_FUNCTION_INCOMING_ARG ... Define this hook if the target machine
Line 5072... Line 4916...
+ * ZipCPU---Here we simply copy from ECO32.
+ * ZipCPU---Here we simply copy from ECO32.
+ */
+ */
+#define        TARGET_FUNCTION_ARG_ADVANCE     zip_function_arg_advance
+#define        TARGET_FUNCTION_ARG_ADVANCE     zip_function_arg_advance
+
+
+/*
+/*
+ * TARGET_ARG_OFFSET --- not necessary
+ * TARGET_ARG_OFFSET(MODE, TYPE) ... If defined, a C expression that is the
 
+ * number of bytes to add to the offset of the argument passed in memory.
 
+ * This is needed for the SPU, which passes char and short arguments in the
 
+ * preferred slot that is in the middle of the quad word instead of starting
 
+ * at the top.
 
+ *
 
+ * ZipCPU -- sounds like the default would be (more) appropriate.
 
+ */
 
+/*
+ * FUNCTION_ARG_PADDING        --- not necessary, since we shouldn't be padding
+ * FUNCTION_ARG_PADDING        --- not necessary, since we shouldn't be padding
+ * PAD_VARARGS_DOWN    --- not necessary, since we shouldn't be padding
+ * PAD_VARARGS_DOWN    --- not necessary, since we shouldn't be padding
+ * BLOCK_REG_PADDING
+ * BLOCK_REG_PADDING
+ * TARGET_FUNCTION_ARG_BOUNDARY
+ * TARGET_FUNCTION_ARG_BOUNDARY
+ * TARGET_FUNCTION_ARG_ROUND_BOUNDARY
+ * TARGET_FUNCTION_ARG_ROUND_BOUNDARY
Line 6106... Line 5958...
+ */
+ */
+
+
+
+
+/* 17.20.7 Output of Assembler Instructions */
+/* 17.20.7 Output of Assembler Instructions */
+
+
+#define        REGISTER_NAMES { "R0","R1","R2","R3","R4","R5","R6","R7","R8","R9", \
+#define        REGISTER_NAMES {                                        \
+       "R10","R11","R12","SP","CC","PC" }
+       "R0", "R1", "R2",  "R3",  "R4",  "R5", "R6", "R7",      \
 
+       "R8", "R9", "R10", "R11", "R12", "SP", "CC", "PC",      \
 
+       "uR0","uR1","uR2", "uR3", "uR4", "uR5","uR6","uR7",     \
 
+       "uR8","uR9","uR10","uR11","uR12","uSP","uCC","uPC",     \
 
+       "PSEUDO-AP" }
+
+
+/* REGISTER_PREFIX     (Undefined by default)
+/* REGISTER_PREFIX     (Undefined by default)
+ * LOCAL_LABEL_PREFIX  (Undefined by default)
+ * LOCAL_LABEL_PREFIX  (Undefined by default)
+ * USER_LABEL_PREFIX   defaults to "*"
+ * USER_LABEL_PREFIX   defaults to "*"
+ * IMMEDIATE_PREFIX    (Undefined by default)
+ * IMMEDIATE_PREFIX    (Undefined by default)
Line 7065... Line 6921...
+
+
+#endif /* GCC_ZIP_H */
+#endif /* GCC_ZIP_H */
+
+
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/zip/zip.md gcc-5.3.0-zip/gcc/config/zip/zip.md
diff -Naur '--exclude=*.swp' gcc-5.3.0-original/gcc/config/zip/zip.md gcc-5.3.0-zip/gcc/config/zip/zip.md
--- gcc-5.3.0-original/gcc/config/zip/zip.md    1969-12-31 19:00:00.000000000 -0500
--- gcc-5.3.0-original/gcc/config/zip/zip.md    1969-12-31 19:00:00.000000000 -0500
+++ gcc-5.3.0-zip/gcc/config/zip/zip.md 2016-05-12 15:59:38.583777436 -0400
+++ gcc-5.3.0-zip/gcc/config/zip/zip.md 2016-08-08 07:07:39.251163261 -0400
@@ -0,0 +1,3238 @@
@@ -0,0 +1,3254 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;
+;; Filename:   zip.md
+;; Filename:   zip.md
+;;
+;;
+;; Project:    Zip CPU -- a small, lightweight, RISC CPU soft core
+;; Project:    Zip CPU -- a small, lightweight, RISC CPU soft core
Line 9419... Line 9275...
+       [(unspec_volatile [(reg:SI CC_REG)] UNSPEC_RTU)
+       [(unspec_volatile [(reg:SI CC_REG)] UNSPEC_RTU)
+       (clobber (reg:CC CC_REG))]
+       (clobber (reg:CC CC_REG))]
+       "(!ZIP_USER)"
+       "(!ZIP_USER)"
+       "RTU"
+       "RTU"
+       [(set_attr "ccresult" "unknown")])
+       [(set_attr "ccresult" "unknown")])
 
+(define_insn "zip_busy"
 
+       [(set (pc) (minus:SI (pc) (const_int 1)))]
 
+       ""
 
+       "BUSY"
 
+       [(set_attr "predicable" "yes") (set_attr "ccresult" "unchanged")])
+(define_insn "zip_halt" ; Needs to be unspec_volatile, or optimizer will opt out
+(define_insn "zip_halt" ; Needs to be unspec_volatile, or optimizer will opt out
+       [(unspec_volatile [(reg:SI CC_REG)] UNSPEC_HALT)
+       [(unspec_volatile [(reg:SI CC_REG)] UNSPEC_HALT)
+       (clobber (reg:CC CC_REG))]
+       (clobber (reg:CC CC_REG))]
+       "(!ZIP_USER)"
+       "(!ZIP_USER)"
+       "HALT"
+       "HALT"
Line 9575... Line 9436...
+       "LDILO  %1,%0"
+       "LDILO  %1,%0"
+       [(set_attr "predicable" "yes") (set_attr "ccresult" "unchanged")])
+       [(set_attr "predicable" "yes") (set_attr "ccresult" "unchanged")])
+
+
+;
+;
+;
+;
 
+; Missing still: zip_break(idno)
 
+; Would also be nice to have a zip_reg builtin, allowing us to read or write
 
+; a register, as in zip_reg(5)=40;.  Not sure what this means, though, when the
 
+; number placed into this is not constant, or how to specify that it must *only*
 
+; be constant.  Thats actually the problem with both proposals, zip_break(id)
 
+; and zip_reg(regno)--both depend upon a compile time constant to work.
 
+;
 
+;
 
+
 
+;
 
+;
+;
+;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;
+;; Floating point Op-codes
+;; Floating point Op-codes
+;;
+;;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.