patches/gcc/3.4.0/pr15647-fix.patch
changeset 330 447b203edc2e
parent 329 419d959441ed
child 331 0c05f9ea3254
     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 -