1.1 --- a/patches/gcc/3.4.0/pr15647-fix.patch Tue Aug 14 19:32:22 2007 +0000
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,288 +0,0 @@
1.4 -Received: (qmail 11693 invoked from network); 26 May 2004 03:17:41 -0000
1.5 -Received: from unknown (HELO r-rr.iij4u.or.jp) (210.130.0.76)
1.6 - by sourceware dot org with SMTP; 26 May 2004 03:17:41 -0000
1.7 -Received: from localhost (frgw.3in.ne.jp [210.251.121.226])
1.8 - by r-rr dot iij4u dot or dot jp (8 dot 11 dot 6+IIJ/8 dot 11 dot 6) with ESMTP id i4Q3HbJ21421;
1.9 - Wed, 26 May 2004 12:17:37 +0900 (JST)
1.10 -Date: Wed, 26 May 2004 12:13:58 +0900 (JST)
1.11 -Message-Id: <20040526.121358.39460214.kkojima@rr.iij4u.or.jp>
1.12 -To: gcc-patches at gcc dot gnu dot org
1.13 -Cc: Mark Mitchell <mark at codesourcery dot com>
1.14 -Subject: [PATCH] Fix PR target/15647 for sh-linux
1.15 -From: Kaz Kojima <kkojima at rr dot iij4u dot or dot jp>
1.16 -Mime-Version: 1.0
1.17 -Content-Type: Text/Plain; charset=us-ascii
1.18 -Content-Transfer-Encoding: 7bit
1.19 -
1.20 -Hi,
1.21 -
1.22 -The appended patch is to fix PR target/15647
1.23 - http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15647
1.24 -for linux.
1.25 -__udivsi3 is exported from libgcc_s.so.1 and gcc generates the code
1.26 -which assumes r1 will be not clobbered when calling __udivsi3 in SH3
1.27 -case. This is bad because r1 is clobbered by PLT.
1.28 -The another functions listed in the standard libgcc-std.ver which
1.29 -possively have similar problem are __ashlsi3, __ashrsi3 and __lshrsi3,
1.30 -though these are used only by SH1/2.
1.31 -The patch below simply uses an SH specific libgcc-std.ver which drops
1.32 -these functions. SH linux uses a linker script libgcc_s.so having
1.33 -libgcc.a as a suppementary library, so these functions given by
1.34 -libgcc.a when needed in the link time.
1.35 -Although mainline has one failure in bulding zlib which can be avoided
1.36 -with -fno-reorder-blocks for sh3-unknown-linux-gnu target, x86 cross
1.37 -to sh3-unknown-linux-gnu can be build successfully on mainline with
1.38 -this patch except the above failure. 3.4-branch successfully bootstraps
1.39 -with it and there are no new failures on the native sh4-unknown-linux-gnu.
1.40 -The patch is highly sh-linux specific and seems to be safe. I'll check
1.41 -it into mainline.
1.42 -The original PR is also for sh3 netbsd. I'd like to leave it for the
1.43 -netbsd experts.
1.44 -
1.45 -I think that it's too late for 3.3.4. Mark, is it also late for
1.46 -3.4.1?
1.47 -
1.48 -Regards,
1.49 - kaz
1.50 ---
1.51 -2004-05-26 Kaz Kojima <kkojima@gcc.gnu.org>
1.52 -
1.53 - * config/sh/t-linux (SHLIB_MAPFILES): Use sh specific
1.54 - libgcc-std.ver.
1.55 - * config/sh/libgcc-std.ver: New file.
1.56 -
1.57 -diff -u3prN ORIG-gcc/gcc/config/sh/t-linux LOCAL-gcc/gcc/config/sh/t-linux
1.58 ---- ORIG-gcc/gcc/config/sh/t-linux Mon Feb 16 20:13:25 2004
1.59 -+++ LOCAL-gcc/gcc/config/sh/t-linux Tue May 25 18:25:48 2004
1.60 -@@ -11,8 +11,11 @@ MULTILIB_EXCEPTIONS=
1.61 - EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
1.62 -
1.63 - # Override t-slibgcc-elf-ver to export some libgcc symbols with
1.64 --# the symbol versions that glibc used.
1.65 --SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver $(srcdir)/config/sh/libgcc-glibc.ver
1.66 -+# the symbol versions that glibc used. Also use an sh specific
1.67 -+# libgcc-std.ver to avoid to export some lib1func routines which
1.68 -+# should not be called via PLT.
1.69 -+SHLIB_MAPFILES = $(srcdir)/config/sh/libgcc-std.ver \
1.70 -+ $(srcdir)/config/sh/libgcc-glibc.ver
1.71 -
1.72 - # Override SHLIB_LINK and SHLIB_INSTALL to use linker script
1.73 - # libgcc_s.so.
1.74 -diff -u3prN ORIG-gcc/gcc/config/sh/libgcc-std.ver LOCAL-gcc/gcc/config/sh/libgcc-std.ver
1.75 ---- ORIG-gcc/gcc/config/sh/libgcc-std.ver Thu Jan 1 09:00:00 1970
1.76 -+++ LOCAL-gcc/gcc/config/sh/libgcc-std.ver Tue May 25 18:50:54 2004
1.77 -@@ -0,0 +1,213 @@
1.78 -+GCC_3.0 {
1.79 -+ # libgcc1 integer symbols
1.80 -+ __absvsi2
1.81 -+ __addvsi3
1.82 -+ # __ashlsi3
1.83 -+ # __ashrsi3
1.84 -+ __divsi3
1.85 -+ # __lshrsi3
1.86 -+ __modsi3
1.87 -+ __mulsi3
1.88 -+ __mulvsi3
1.89 -+ __negvsi2
1.90 -+ __subvsi3
1.91 -+ # __udivsi3
1.92 -+ __umodsi3
1.93 -+
1.94 -+ # libgcc1 floating point symbols
1.95 -+ __addsf3
1.96 -+ __adddf3
1.97 -+ __addxf3
1.98 -+ __addtf3
1.99 -+ __divsf3
1.100 -+ __divdf3
1.101 -+ __divxf3
1.102 -+ __divtf3
1.103 -+ __eqsf2
1.104 -+ __eqdf2
1.105 -+ __eqxf2
1.106 -+ __eqtf2
1.107 -+ __extenddfxf2
1.108 -+ __extenddftf2
1.109 -+ __extendsfdf2
1.110 -+ __extendsfxf2
1.111 -+ __extendsftf2
1.112 -+ __fixsfsi
1.113 -+ __fixdfsi
1.114 -+ __fixxfsi
1.115 -+ __fixtfsi
1.116 -+ __floatsisf
1.117 -+ __floatsidf
1.118 -+ __floatsixf
1.119 -+ __floatsitf
1.120 -+ __gesf2
1.121 -+ __gedf2
1.122 -+ __gexf2
1.123 -+ __getf2
1.124 -+ __gtsf2
1.125 -+ __gtdf2
1.126 -+ __gtxf2
1.127 -+ __gttf2
1.128 -+ __lesf2
1.129 -+ __ledf2
1.130 -+ __lexf2
1.131 -+ __letf2
1.132 -+ __ltsf2
1.133 -+ __ltdf2
1.134 -+ __ltxf2
1.135 -+ __lttf2
1.136 -+ __mulsf3
1.137 -+ __muldf3
1.138 -+ __mulxf3
1.139 -+ __multf3
1.140 -+ __negsf2
1.141 -+ __negdf2
1.142 -+ __negxf2
1.143 -+ __negtf2
1.144 -+ __nesf2
1.145 -+ __nedf2
1.146 -+ __nexf2
1.147 -+ __netf2
1.148 -+ __subsf3
1.149 -+ __subdf3
1.150 -+ __subxf3
1.151 -+ __subtf3
1.152 -+ __truncdfsf2
1.153 -+ __truncxfsf2
1.154 -+ __trunctfsf2
1.155 -+ __truncxfdf2
1.156 -+ __trunctfdf2
1.157 -+
1.158 -+ # libgcc2 DImode arithmetic (for 32-bit targets).
1.159 -+ __absvdi2
1.160 -+ __addvdi3
1.161 -+ __ashldi3
1.162 -+ __ashrdi3
1.163 -+ __cmpdi2
1.164 -+ __divdi3
1.165 -+ __ffsdi2
1.166 -+ __fixdfdi
1.167 -+ __fixsfdi
1.168 -+ __fixtfdi
1.169 -+ __fixxfdi
1.170 -+ __fixunsdfdi
1.171 -+ __fixunsdfsi
1.172 -+ __fixunssfsi
1.173 -+ __fixunssfdi
1.174 -+ __fixunstfdi
1.175 -+ __fixunstfsi
1.176 -+ __fixunsxfdi
1.177 -+ __fixunsxfsi
1.178 -+ __floatdidf
1.179 -+ __floatdisf
1.180 -+ __floatdixf
1.181 -+ __floatditf
1.182 -+ __lshrdi3
1.183 -+ __moddi3
1.184 -+ __muldi3
1.185 -+ __mulvdi3
1.186 -+ __negdi2
1.187 -+ __negvdi2
1.188 -+ __subvdi3
1.189 -+ __ucmpdi2
1.190 -+ __udivdi3
1.191 -+ __udivmoddi4
1.192 -+ __umoddi3
1.193 -+
1.194 -+ # libgcc2 TImode arithmetic (for 64-bit targets).
1.195 -+ __ashlti3
1.196 -+ __ashrti3
1.197 -+ __cmpti2
1.198 -+ __divti3
1.199 -+ __ffsti2
1.200 -+ __fixdfti
1.201 -+ __fixsfti
1.202 -+ __fixtfti
1.203 -+ __fixxfti
1.204 -+ __lshrti3
1.205 -+ __modti3
1.206 -+ __multi3
1.207 -+ __negti2
1.208 -+ __ucmpti2
1.209 -+ __udivmodti4
1.210 -+ __udivti3
1.211 -+ __umodti3
1.212 -+ __fixunsdfti
1.213 -+ __fixunssfti
1.214 -+ __fixunstfti
1.215 -+ __fixunsxfti
1.216 -+ __floattidf
1.217 -+ __floattisf
1.218 -+ __floattixf
1.219 -+ __floattitf
1.220 -+
1.221 -+ # Used to deal with trampoline initialization on some platforms
1.222 -+ __clear_cache
1.223 -+
1.224 -+ # EH symbols
1.225 -+ _Unwind_DeleteException
1.226 -+ _Unwind_Find_FDE
1.227 -+ _Unwind_ForcedUnwind
1.228 -+ _Unwind_GetGR
1.229 -+ _Unwind_GetIP
1.230 -+ _Unwind_GetLanguageSpecificData
1.231 -+ _Unwind_GetRegionStart
1.232 -+ _Unwind_GetTextRelBase
1.233 -+ _Unwind_GetDataRelBase
1.234 -+ _Unwind_RaiseException
1.235 -+ _Unwind_Resume
1.236 -+ _Unwind_SetGR
1.237 -+ _Unwind_SetIP
1.238 -+ __deregister_frame
1.239 -+ __deregister_frame_info
1.240 -+ __deregister_frame_info_bases
1.241 -+ __register_frame
1.242 -+ __register_frame_info
1.243 -+ __register_frame_info_bases
1.244 -+ __register_frame_info_table
1.245 -+ __register_frame_info_table_bases
1.246 -+ __register_frame_table
1.247 -+
1.248 -+ # SjLj EH symbols
1.249 -+ _Unwind_SjLj_Register
1.250 -+ _Unwind_SjLj_Unregister
1.251 -+ _Unwind_SjLj_RaiseException
1.252 -+ _Unwind_SjLj_ForcedUnwind
1.253 -+ _Unwind_SjLj_Resume
1.254 -+}
1.255 -+
1.256 -+%inherit GCC_3.3 GCC_3.0
1.257 -+GCC_3.3 {
1.258 -+ _Unwind_FindEnclosingFunction
1.259 -+ _Unwind_GetCFA
1.260 -+ _Unwind_Backtrace
1.261 -+ _Unwind_Resume_or_Rethrow
1.262 -+ _Unwind_SjLj_Resume_or_Rethrow
1.263 -+}
1.264 -+
1.265 -+%inherit GCC_3.3.1 GCC_3.3
1.266 -+GCC_3.3.1 {
1.267 -+ __gcc_personality_sj0
1.268 -+ __gcc_personality_v0
1.269 -+}
1.270 -+
1.271 -+%inherit GCC_3.3.2 GCC_3.3.1
1.272 -+GCC_3.3.2 {
1.273 -+}
1.274 -+
1.275 -+%inherit GCC_3.4 GCC_3.3.2
1.276 -+GCC_3.4 {
1.277 -+ # bit scanning and counting built-ins
1.278 -+ __clzsi2
1.279 -+ __clzdi2
1.280 -+ __clzti2
1.281 -+ __ctzsi2
1.282 -+ __ctzdi2
1.283 -+ __ctzti2
1.284 -+ __popcountsi2
1.285 -+ __popcountdi2
1.286 -+ __popcountti2
1.287 -+ __paritysi2
1.288 -+ __paritydi2
1.289 -+ __parityti2
1.290 -+}
1.291 -