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
|
+;;
|
+;;
|