📄 gcc-20030210-sh-linux-1.patch
字号:
+#undef CC1_SPEC+#define CC1_SPEC \+ "-musermode -ml -m4 %{profile:-p}"++#undef LINK_SPEC+#define LINK_SPEC \+ "%{mrelax:-relax} \+ %{shared:-shared} \+ %{!static: \+ %{rdynamic:-export-dynamic} \+ %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \+ %{static:-static}"diff -ruN gcc-20030210.orig/gcc/config/sh/sh4eb-linux.h gcc-20030210/gcc/config/sh/sh4eb-linux.h--- gcc-20030210.orig/gcc/config/sh/sh4eb-linux.h Thu Jan 1 09:00:00 1970+++ gcc-20030210/gcc/config/sh/sh4eb-linux.h Sat Feb 22 01:40:14 2003@@ -0,0 +1,29 @@+#undef TARGET_VERSION+#define TARGET_VERSION fputs (" (SH4EB GNU/Linux with ELF)", stderr);++#undef CPP_SPEC+#define CPP_SPEC \+ "-D__BIG_ENDIAN__ \+ -D__SH4__ \+ -D__SIZE_TYPE__=unsigned\\ int \+ -D__PTRDIFF_TYPE__=int \+ %{fPIC:-D__PIC__ -D__pic__} \+ %{fpic:-D__PIC__ -D__pic__} \+ %{posix:-D_POSIX_SOURCE} \+ %{pthread:-D_REENTRANT -D_PTHREADS}"++#undef ASM_SPEC+#define ASM_SPEC "%{mrelax:-relax}"++#undef CC1_SPEC+#define CC1_SPEC \+ "-musermode -mb -m4 %{profile:-p}"++#undef LINK_SPEC+#define LINK_SPEC \+ "%{mrelax:-relax} \+ %{shared:-shared} \+ %{!static: \+ %{rdynamic:-export-dynamic} \+ %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \+ %{static:-static}"diff -ruN gcc-20030210.orig/gcc/config/sh/t-linux gcc-20030210/gcc/config/sh/t-linux--- gcc-20030210.orig/gcc/config/sh/t-linux Thu May 17 12:16:12 2001+++ gcc-20030210/gcc/config/sh/t-linux Sat Feb 22 01:40:14 2003@@ -1,10 +1,20 @@-TARGET_LIBGCC2_CFLAGS = -fpic+TARGET_LIBGCC2_CFLAGS = -fpic -DNO_FPSCR_VALUES+LIBGCC1 = libgcc1-asm.a+CROSS_LIBGCC1 = libgcc1-asm.a+LIBGCC1_TEST = libgcc1-test LIB1ASMFUNCS = _ashiftrt _ashiftrt_n _ashiftlt _lshiftrt _movstr \ _movstr_i4 _mulsi3 _sdivsi3 _sdivsi3_i4 _udivsi3 _udivsi3_i4 _set_fpscr \ _ic_invalidate+LIB2ADDEH = $(srcdir)/unwind-sjlj.c+LIB2ADDEHDEP = unwind.inc unwind-sjlj.c -MULTILIB_OPTIONS= mb m3e/m4+MULTILIB_OPTIONS= mb m4 MULTILIB_DIRNAMES= MULTILIB_MATCHES = -EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o crtbeginS.o crtendS.o+EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o++# Override t-slibgcc-elf-ver to export some libgcc symbols with+# the symbol versions that glibc used and SH specific.+SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver \+ $(srcdir)/config/sh/libgcc-glibc.verdiff -ruN gcc-20030210.orig/gcc/config/sh/t-linux-nomulti gcc-20030210/gcc/config/sh/t-linux-nomulti--- gcc-20030210.orig/gcc/config/sh/t-linux-nomulti Thu Jan 1 09:00:00 1970+++ gcc-20030210/gcc/config/sh/t-linux-nomulti Sat Feb 22 01:40:14 2003@@ -0,0 +1,9 @@+LIBGCC = libgcc.a+EXTRA_PARTS = crtbegin.o crtbeginS.o crtend.o crtendS.o crtbeginT.o++INSTALL_LIBGCC = install-libgcc++MULTILIB_OPTIONS=+MULTILIB_DIRNAMES= +MULTILIB_MATCHES = +EXTRA_MULTILIB_PARTS=diff -ruN gcc-20030210.orig/gcc/config.gcc gcc-20030210/gcc/config.gcc--- gcc-20030210.orig/gcc/config.gcc Fri Jan 31 19:17:13 2003+++ gcc-20030210/gcc/config.gcc Sat Feb 22 01:40:14 2003@@ -337,9 +337,9 @@ sparc*-*-*) cpu_type=sparc ;;-sh64-*-*)- cpu_type=sh- ;;+sh*-*-*)+ cpu_type=sh+ ;; esac tm_file=${cpu_type}/${cpu_type}.h@@ -3018,9 +3018,31 @@ thread_file='rtems' fi ;;-sh-*-linux*)+sh*-*-linux*) tm_file="${tm_file} sh/elf.h sh/linux.h"- tmake_file="sh/t-sh sh/t-elf sh/t-linux"+ tmake_file="sh/t-sh sh/t-elf t-slibgcc-elf-ver t-linux sh/t-linux"+ extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"+ case $machine in+ sh3eb-*)+ tm_file="${tm_file} sh/sh3eb-linux.h"+ tmake_file="${tmake_file} sh/t-linux-nomulti"+ ;;+ sh4eb-*)+ tm_file="${tm_file} sh/sh4eb-linux.h"+ tmake_file="${tmake_file} sh/t-linux-nomulti"+ ;;+ sh3-*)+ tm_file="${tm_file} sh/sh3-linux.h"+ tmake_file="${tmake_file} sh/t-linux-nomulti"+ ;;+ sh4-*)+ tm_file="${tm_file} sh/sh4-linux.h"+ tmake_file="${tmake_file} sh/t-linux-nomulti"+ ;;+ *)+ ;;+ esac+ xmake_file=x-linux gas=yes gnu_ld=yes float_format=sh ;;diff -ruN gcc-20030210.orig/gcc/dwarf2out.c gcc-20030210/gcc/dwarf2out.c--- gcc-20030210.orig/gcc/dwarf2out.c Mon Feb 10 19:36:25 2003+++ gcc-20030210/gcc/dwarf2out.c Sat Feb 22 01:40:14 2003@@ -10224,7 +10224,9 @@ /* We can have a normal definition following an inline one in the case of redefinition of GNU C extern inlines. It seems reasonable to use AT_specification in this case. */- && !get_AT_unsigned (old_die, DW_AT_inline))+ && !get_AT_unsigned (old_die, DW_AT_inline)+ /* Skip the nested function. */+ && !decl_function_context (decl)) { /* ??? This can happen if there is a bug in the program, for instance, if it has duplicate function definitions. Ideally,diff -ruN gcc-20030210.orig/gcc/final.c gcc-20030210/gcc/final.c--- gcc-20030210.orig/gcc/final.c Fri Jan 31 19:17:20 2003+++ gcc-20030210/gcc/final.c Sat Feb 22 01:40:14 2003@@ -1128,7 +1128,7 @@ } } - INSN_ADDRESSES (uid) = insn_current_address;+ INSN_ADDRESSES (uid) = insn_current_address + insn_lengths[uid]; if (GET_CODE (insn) == NOTE || GET_CODE (insn) == BARRIER || GET_CODE (insn) == CODE_LABEL)diff -ruN gcc-20030210.orig/gcc/mkmap-symver.awk gcc-20030210/gcc/mkmap-symver.awk--- gcc-20030210.orig/gcc/mkmap-symver.awk Fri Jan 31 19:17:26 2003+++ gcc-20030210/gcc/mkmap-symver.awk Sat Feb 22 01:40:14 2003@@ -89,7 +89,11 @@ output(inherit[lib]); printf("%s {\n", lib);- printf(" global:\n");+ for (sym in ver)+ if ((ver[sym] == lib) && (sym in def))+ count++;+ if (count > 0)+ printf(" global:\n"); for (sym in ver) if ((ver[sym] == lib) && (sym in def)) {diff -ruN gcc-20030210.orig/gcc/reload1.c gcc-20030210/gcc/reload1.c--- gcc-20030210.orig/gcc/reload1.c Fri Jan 31 19:17:29 2003+++ gcc-20030210/gcc/reload1.c Sat Feb 22 01:40:14 2003@@ -6103,6 +6103,7 @@ for (j = 0; j < n_reloads; j++) if (rld[j].in != 0 && rld[j].when_needed != RELOAD_OTHER+ && rld[j].when_needed != RELOAD_FOR_OUTPUT_ADDRESS && reg_overlap_mentioned_for_reload_p (rld[j].in, rld[i].in)) rld[j].when_neededdiff -ruN gcc-20030210.orig/gcc/reorg.c gcc-20030210/gcc/reorg.c--- gcc-20030210.orig/gcc/reorg.c Fri Jan 31 19:17:30 2003+++ gcc-20030210/gcc/reorg.c Sat Feb 22 01:40:14 2003@@ -3265,6 +3265,14 @@ || condjump_in_parallel_p (XVECEXP (PATTERN (insn), 0, 0)))) continue; +#ifdef MD_CAN_REDIRECT_BRANCH+ /* On some targets, branches with delay slots can have a limited+ displacement. Give the back end a chance to tell us we can't do+ this. */+ if (! MD_CAN_REDIRECT_BRANCH (insn, delay_insn))+ continue;+#endif+ target_label = JUMP_LABEL (delay_insn); if (target_label)diff -ruN gcc-20030210.orig/gcc/tree-inline.c gcc-20030210/gcc/tree-inline.c--- gcc-20030210.orig/gcc/tree-inline.c Fri Jan 31 19:17:33 2003+++ gcc-20030210/gcc/tree-inline.c Sat Feb 22 01:40:14 2003@@ -836,11 +836,17 @@ /* Don't try to inline functions that are not well-suited to inlining. */- if (!inlinable_function_p (fn, id))- return NULL_TREE;+ if (! inlinable_function_p (fn, id)+ || ! (*lang_hooks.tree_inlining.start_inlining) (fn))+ {+ if (DECL_INLINE (fn) && warn_inline && ! flag_really_no_inline)+ {+ warning_with_decl (fn, "inlining failed in call to `%s'");+ warning ("called from here");+ } - if (! (*lang_hooks.tree_inlining.start_inlining) (fn))- return NULL_TREE;+ return NULL_TREE;+ } /* Set the current filename and line number to the function we are inlining so that when we create new _STMT nodes here they getdiff -ruN gcc-20030210.orig/libjava/Makefile.in gcc-20030210/libjava/Makefile.in--- gcc-20030210.orig/libjava/Makefile.in Tue Jan 28 10:44:37 2003+++ gcc-20030210/libjava/Makefile.in Sat Feb 22 01:40:14 2003@@ -1637,6 +1637,7 @@ "AS=$(AS)" \ "CC=$(CC)" \ "CXX=$(CXX)" \+ "GCJ=$(GCJ)" \ "LD=$(LD)" \ "LIBCFLAGS=$(LIBCFLAGS)" \ "NM=$(NM)" \diff -ruN gcc-20030210.orig/libjava/configure gcc-20030210/libjava/configure--- gcc-20030210.orig/libjava/configure Tue Jan 28 10:44:37 2003+++ gcc-20030210/libjava/configure Sat Feb 22 01:42:11 2003@@ -2031,7 +2031,7 @@ # This must be Linux ELF. linux-gnu*) case $host_cpu in- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* )+ alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh* ) lt_cv_deplibs_check_method=pass_all ;; *) # glibc up to 2.1.1 does not perform some relocations on ARMdiff -ruN gcc-20030210.orig/libjava/java/net/natInetAddress.cc gcc-20030210/libjava/java/net/natInetAddress.cc--- gcc-20030210.orig/libjava/java/net/natInetAddress.cc Tue Mar 5 05:02:19 2002+++ gcc-20030210/libjava/java/net/natInetAddress.cc Sat Feb 22 01:40:14 2003@@ -56,7 +56,7 @@ #endif #ifndef HAVE_GETHOSTNAME_DECL-extern "C" int gethostname (char *name, int namelen);+extern "C" int gethostname (char *name, unsigned int namelen); #endif #ifdef DISABLE_JAVA_NETdiff -ruN gcc-20030210.orig/libjava/libltdl/aclocal.m4 gcc-20030210/libjava/libltdl/aclocal.m4--- gcc-20030210.orig/libjava/libltdl/aclocal.m4 Sun Sep 10 17:04:40 2000+++ gcc-20030210/libjava/libltdl/aclocal.m4 Sat Feb 22 01:40:14 2003@@ -573,7 +573,7 @@ # This must be Linux ELF. linux-gnu*) case "$host_cpu" in- alpha* | i*86 | powerpc* | sparc* | ia64* )+ alpha* | i*86 | powerpc* | sparc* | ia64* | sh*) lt_cv_deplibs_check_method=pass_all ;; *) # glibc up to 2.1.1 does not perform some relocations on ARMdiff -ruN gcc-20030210.orig/libjava/sysdep/sh/locks.h gcc-20030210/libjava/sysdep/sh/locks.h--- gcc-20030210.orig/libjava/sysdep/sh/locks.h Thu Jan 1 09:00:00 1970+++ gcc-20030210/libjava/sysdep/sh/locks.h Sat Feb 22 01:40:14 2003@@ -0,0 +1,72 @@+// locks.h - Thread synchronization primitives. SuperH implementation.++/* Copyright (C) 2002 Free Software Foundation++ This file is part of libgcj.++This software is copyrighted work licensed under the terms of the+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for+details. */++#ifndef __SYSDEP_LOCKS_H__+#define __SYSDEP_LOCKS_H__++typedef size_t obj_addr_t; /* Integer type big enough for object */+ /* address. */++static unsigned char __cas_lock = 0;++inline static void+__cas_start_atomic (void)+{+ unsigned int val;++ do+ __asm__ __volatile__ ("tas.b @%1; movt %0"+ : "=r" (val)+ : "r" (&__cas_lock)+ : "memory");+ while (val == 0);+}++inline static void+__cas_end_atomic (void)+{+ __asm__ __volatile__ (" " : : : "memory");+ __cas_lock = 0;+}++inline static bool+compare_and_swap (volatile obj_addr_t *addr, obj_addr_t old,+ obj_addr_t new_val)+{+ bool ret;++ __cas_start_atomic ();+ if (*addr != old)+ ret = false;+ else+ {+ *addr = new_val;+ ret = true;+ }+ __cas_end_atomic ();++ return ret;+}++inline static void+release_set (volatile obj_addr_t *addr, obj_addr_t new_val)+{+ __asm__ __volatile__ (" " : : : "memory");+ *(addr) = new_val;+}++inline static bool+compare_and_swap_release (volatile obj_addr_t *addr, obj_addr_t old,+ obj_addr_t new_val)+{+ return compare_and_swap (addr, old, new_val);+}++#endif /* ! __SYSDEP_LOCKS_H__ */diff -ruN gcc-20030210.orig/libstdc++-v3/acinclude.m4 gcc-20030210/libstdc++-v3/acinclude.m4--- gcc-20030210.orig/libstdc++-v3/acinclude.m4 Tue Jan 28 02:30:41 2003+++ gcc-20030210/libstdc++-v3/acinclude.m4 Sat Feb 22 01:40:14 2003@@ -1828,9 +1828,10 @@ GLIBCPP_INCLUDES="-I${glibcpp_builddir}/include/${target_alias} -I${glibcpp_builddir}/include" # Passed down for canadian crosses.- if test x"$CANADIAN" = xyes; then- TOPLEVEL_INCLUDES='-I$(includedir)'- fi+ #if test x"$CANADIAN" = xyes; then+ # TOPLEVEL_INCLUDES='-I$(includedir)'+ #fi+ TOPLEVEL_INCLUDES='' LIBMATH_INCLUDES='-I$(top_srcdir)/libmath' diff -ruN gcc-20030210.orig/libstdc++-v3/aclocal.m4 gcc-20030210/libstdc++-v3/aclocal.m4--- gcc-20030210.orig/libstdc++-v3/aclocal.m4 Mon Feb 10 19:36:47 2003+++ gcc-20030210/libstdc++-v3/aclocal.m4 Sat Feb 22 01:40:14 2003@@ -1840,9 +1840,10 @@ GLIBCPP_INCLUDES="-I${glibcpp_builddir}/include/${target_alias} -I${glibcpp_builddir}/include" # Passed down for canadian crosses.- if test x"$CANADIAN" = xyes; then- TOPLEVEL_INCLUDES='-I$(includedir)'- fi+ #if test x"$CANADIAN" = xyes; then+ # TOPLEVEL_INCLUDES='-I$(includedir)'+ #fi+ TOPLEVEL_INCLUDES='' LIBMATH_INCLUDES='-I$(top_srcdir)/libmath' diff -ruN gcc-20030210.orig/libstdc++-v3/configure gcc-20030210/libstdc++-v3/configure--- gcc-20030210.orig/libstdc++-v3/configure Mon Feb 10 19:37:17 2003+++ gcc-20030210/libstdc++-v3/configure Sat Feb 22 01:40:14 2003@@ -1982,7 +1982,7 @@ # This must be Linux ELF. linux-gnu*) case $host_cpu in- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* )+ alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh*) lt_cv_deplibs_check_method=pass_all ;; *) # glibc up to 2.1.1 does not perform some relocations on ARM@@ -22340,9 +22340,10 @@ GLIBCPP_INCLUDES="-I${glibcpp_builddir}/include/${target_alias} -I${glibcpp_builddir}/include" # Passed down for canadian crosses.- if test x"$CANADIAN" = xyes; then- TOPLEVEL_INCLUDES='-I$(includedir)'- fi+ #if test x"$CANADIAN" = xyes; then+ # TOPLEVEL_INCLUDES='-I$(includedir)'+ #fi+ TOPLEVEL_INCLUDES='' LIBMATH_INCLUDES='-I$(top_srcdir)/libmath' diff -ruN gcc-20030210.orig/libtool.m4 gcc-20030210/libtool.m4--- gcc-20030210.orig/libtool.m4 Fri Jan 31 19:16:59 2003+++ gcc-20030210/libtool.m4 Sat Feb 22 01:40:14 2003@@ -597,7 +597,7 @@ # This must be Linux ELF. linux-gnu*) case $host_cpu in- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* )+ alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh* ) lt_cv_deplibs_check_method=pass_all ;; *) # glibc up to 2.1.1 does not perform some relocations on ARMdiff -ruN gcc-20030210.orig/zlib/configure gcc-20030210/zlib/configure--- gcc-20030210.orig/zlib/configure Tue Jan 28 10:44:15 2003+++ gcc-20030210/zlib/configure Sat Feb 22 01:40:14 2003@@ -1571,7 +1571,7 @@ # This must be Linux ELF. linux-gnu*) case $host_cpu in- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* )+ alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh* ) lt_cv_deplibs_check_method=pass_all ;; *) # glibc up to 2.1.1 does not perform some relocations on ARM
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -