⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pr15647-fix.patch

📁 linux下编译交叉工具链的工具源码
💻 PATCH
字号:
Received: (qmail 11693 invoked from network); 26 May 2004 03:17:41 -0000Received: from unknown (HELO r-rr.iij4u.or.jp) (210.130.0.76)  by sourceware dot org with SMTP; 26 May 2004 03:17:41 -0000Received: from localhost (frgw.3in.ne.jp [210.251.121.226])	by r-rr dot iij4u dot or dot jp (8 dot 11 dot 6+IIJ/8 dot 11 dot 6) with ESMTP id i4Q3HbJ21421;	Wed, 26 May 2004 12:17:37 +0900 (JST)Date: Wed, 26 May 2004 12:13:58 +0900 (JST)Message-Id: <20040526.121358.39460214.kkojima@rr.iij4u.or.jp>To: gcc-patches at gcc dot gnu dot orgCc: Mark Mitchell <mark at codesourcery dot com>Subject: [PATCH] Fix PR target/15647 for sh-linuxFrom: Kaz Kojima <kkojima at rr dot iij4u dot or dot jp>Mime-Version: 1.0Content-Type: Text/Plain; charset=us-asciiContent-Transfer-Encoding: 7bitHi,The appended patch is to fix PR target/15647  http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15647for linux.__udivsi3 is exported from libgcc_s.so.1 and gcc generates the codewhich assumes r1 will be not clobbered when calling __udivsi3 in SH3case.  This is bad because r1 is clobbered by PLT.The another functions listed in the standard libgcc-std.ver whichpossively have similar problem are __ashlsi3, __ashrsi3 and __lshrsi3,though these are used only by SH1/2.The patch below simply uses an SH specific libgcc-std.ver which dropsthese functions.  SH linux uses a linker script libgcc_s.so havinglibgcc.a as a suppementary library, so these functions given bylibgcc.a when needed in the link time.Although mainline has one failure in bulding zlib which can be avoidedwith -fno-reorder-blocks for sh3-unknown-linux-gnu target, x86 crossto sh3-unknown-linux-gnu can be build successfully on mainline withthis patch except the above failure.  3.4-branch successfully bootstrapswith it and there are no new failures on the native sh4-unknown-linux-gnu.The patch is highly sh-linux specific and seems to be safe.  I'll checkit into mainline.The original PR is also for sh3 netbsd.  I'd like to leave it for thenetbsd experts.I think that it's too late for 3.3.4.  Mark, is it also late for3.4.1?Regards,	kaz--2004-05-26  Kaz Kojima  <kkojima@gcc.gnu.org>	* config/sh/t-linux (SHLIB_MAPFILES): Use sh specific	libgcc-std.ver.	* config/sh/libgcc-std.ver: New file.diff -u3prN ORIG-gcc/gcc/config/sh/t-linux LOCAL-gcc/gcc/config/sh/t-linux--- ORIG-gcc/gcc/config/sh/t-linux	Mon Feb 16 20:13:25 2004+++ LOCAL-gcc/gcc/config/sh/t-linux	Tue May 25 18:25:48 2004@@ -11,8 +11,11 @@ MULTILIB_EXCEPTIONS= 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.-SHLIB_MAPFILES =  $(srcdir)/libgcc-std.ver $(srcdir)/config/sh/libgcc-glibc.ver+# the symbol versions that glibc used.  Also use an sh specific+# libgcc-std.ver to avoid to export some lib1func routines which+# should not be called via PLT.+SHLIB_MAPFILES =  $(srcdir)/config/sh/libgcc-std.ver \+	$(srcdir)/config/sh/libgcc-glibc.ver  # Override SHLIB_LINK and SHLIB_INSTALL to use linker script # libgcc_s.so.diff -u3prN ORIG-gcc/gcc/config/sh/libgcc-std.ver LOCAL-gcc/gcc/config/sh/libgcc-std.ver--- ORIG-gcc/gcc/config/sh/libgcc-std.ver	Thu Jan  1 09:00:00 1970+++ LOCAL-gcc/gcc/config/sh/libgcc-std.ver	Tue May 25 18:50:54 2004@@ -0,0 +1,213 @@+GCC_3.0 {+  # libgcc1 integer symbols+  __absvsi2+  __addvsi3+  # __ashlsi3+  # __ashrsi3+  __divsi3+  # __lshrsi3+  __modsi3+  __mulsi3+  __mulvsi3+  __negvsi2+  __subvsi3+  # __udivsi3+  __umodsi3++  # libgcc1 floating point symbols+  __addsf3+  __adddf3+  __addxf3+  __addtf3+  __divsf3+  __divdf3+  __divxf3+  __divtf3+  __eqsf2+  __eqdf2+  __eqxf2+  __eqtf2+  __extenddfxf2+  __extenddftf2+  __extendsfdf2+  __extendsfxf2+  __extendsftf2+  __fixsfsi+  __fixdfsi+  __fixxfsi+  __fixtfsi+  __floatsisf+  __floatsidf+  __floatsixf+  __floatsitf+  __gesf2+  __gedf2+  __gexf2+  __getf2+  __gtsf2+  __gtdf2+  __gtxf2+  __gttf2+  __lesf2+  __ledf2+  __lexf2+  __letf2+  __ltsf2+  __ltdf2+  __ltxf2+  __lttf2+  __mulsf3+  __muldf3+  __mulxf3+  __multf3+  __negsf2+  __negdf2+  __negxf2+  __negtf2+  __nesf2+  __nedf2+  __nexf2+  __netf2+  __subsf3+  __subdf3+  __subxf3+  __subtf3+  __truncdfsf2+  __truncxfsf2+  __trunctfsf2+  __truncxfdf2+  __trunctfdf2++  # libgcc2 DImode arithmetic (for 32-bit targets).+  __absvdi2+  __addvdi3+  __ashldi3+  __ashrdi3+  __cmpdi2+  __divdi3+  __ffsdi2+  __fixdfdi+  __fixsfdi+  __fixtfdi+  __fixxfdi+  __fixunsdfdi+  __fixunsdfsi+  __fixunssfsi+  __fixunssfdi+  __fixunstfdi+  __fixunstfsi+  __fixunsxfdi+  __fixunsxfsi+  __floatdidf+  __floatdisf+  __floatdixf+  __floatditf+  __lshrdi3+  __moddi3+  __muldi3+  __mulvdi3+  __negdi2+  __negvdi2+  __subvdi3+  __ucmpdi2+  __udivdi3+  __udivmoddi4+  __umoddi3++  # libgcc2 TImode arithmetic (for 64-bit targets).+  __ashlti3+  __ashrti3+  __cmpti2+  __divti3+  __ffsti2+  __fixdfti+  __fixsfti+  __fixtfti+  __fixxfti+  __lshrti3+  __modti3+  __multi3+  __negti2+  __ucmpti2+  __udivmodti4+  __udivti3+  __umodti3+  __fixunsdfti+  __fixunssfti+  __fixunstfti+  __fixunsxfti+  __floattidf+  __floattisf+  __floattixf+  __floattitf++  # Used to deal with trampoline initialization on some platforms+  __clear_cache++  # EH symbols+  _Unwind_DeleteException+  _Unwind_Find_FDE+  _Unwind_ForcedUnwind+  _Unwind_GetGR+  _Unwind_GetIP+  _Unwind_GetLanguageSpecificData+  _Unwind_GetRegionStart+  _Unwind_GetTextRelBase+  _Unwind_GetDataRelBase+  _Unwind_RaiseException+  _Unwind_Resume+  _Unwind_SetGR+  _Unwind_SetIP+  __deregister_frame+  __deregister_frame_info+  __deregister_frame_info_bases+  __register_frame+  __register_frame_info+  __register_frame_info_bases+  __register_frame_info_table+  __register_frame_info_table_bases+  __register_frame_table++  # SjLj EH symbols+  _Unwind_SjLj_Register+  _Unwind_SjLj_Unregister+  _Unwind_SjLj_RaiseException+  _Unwind_SjLj_ForcedUnwind+  _Unwind_SjLj_Resume+}++%inherit GCC_3.3 GCC_3.0+GCC_3.3 {+  _Unwind_FindEnclosingFunction+  _Unwind_GetCFA+  _Unwind_Backtrace+  _Unwind_Resume_or_Rethrow+  _Unwind_SjLj_Resume_or_Rethrow+}++%inherit GCC_3.3.1 GCC_3.3+GCC_3.3.1 {+  __gcc_personality_sj0+  __gcc_personality_v0+}++%inherit GCC_3.3.2 GCC_3.3.1+GCC_3.3.2 {+}++%inherit GCC_3.4 GCC_3.3.2+GCC_3.4 {+  # bit scanning and counting built-ins+  __clzsi2+  __clzdi2+  __clzti2+  __ctzsi2+  __ctzdi2+  __ctzti2+  __popcountsi2+  __popcountdi2+  __popcountti2+  __paritysi2+  __paritydi2+  __parityti2+}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -