patches/gcc/3.3.3/sh-lib1funcs_sizeAndType.patch
changeset 1 eeea35fbf182
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/patches/gcc/3.3.3/sh-lib1funcs_sizeAndType.patch	Sat Feb 24 11:00:05 2007 +0000
     1.3 @@ -0,0 +1,610 @@
     1.4 +Fixes the problem
     1.5 +	[ libdemo.so and main.o both use assignment on structures ]
     1.6 +	$ sh4-unknown-linux-gnu-gcc libdemo.so main.o
     1.7 +	sh4-unknown-linux-gnu/bin/ld: warning: type and size of dynamic symbol `__movstr_i4_even' are not defined
     1.8 +	[ resulting app links, but crashes at runtime ]
     1.9 +See testcase at http://tsukuba.m17n.org/linux-sh/ml/linux-sh/2003-11/msg00016.html
    1.10 +
    1.11 +Patch was posted as http://gcc.gnu.org/ml/gcc-patches/2002-11/msg01641.html
    1.12 +and is in cvs as http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/sh/lib1funcs.asm.diff?r1=1.29.4.1&r2=1.29.4.2
    1.13 +
    1.14 +but see also sh-libgcc-hidden.patch (part of gcc-3.3.3 as of 20040119 or so)
    1.15 +
    1.16 +===================================================================
    1.17 +
    1.18 +--- gcc/gcc/config/sh/lib1funcs.asm	2002/09/20 01:29:21	1.29.4.1
    1.19 ++++ gcc/gcc/config/sh/lib1funcs.asm	2003/11/18 12:27:31
    1.20 +@@ -38,9 +38,14 @@
    1.21 +    amylaar@cygnus.com  */
    1.22 + 
    1.23 + #ifdef __ELF__
    1.24 +-#define LOCAL(X) .L_##X
    1.25 +-#else
    1.26 +-#define LOCAL(X) L_##X
    1.27 ++#define LOCAL(X)	.L_##X
    1.28 ++#define FUNC(X)		.type X,@function
    1.29 ++#define ENDFUNC0(X)	.Lfe_##X: .size X,.Lfe_##X-X
    1.30 ++#define ENDFUNC(X)	ENDFUNC0(X)
    1.31 ++#else
    1.32 ++#define LOCAL(X)	L_##X
    1.33 ++#define FUNC(X)
    1.34 ++#define ENDFUNC(X)
    1.35 + #endif
    1.36 + 
    1.37 + #define	CONCAT(A,B)	A##B
    1.38 +@@ -87,6 +92,40 @@
    1.39 + 	.global	GLOBAL(ashiftrt_r4_31)
    1.40 + 	.global	GLOBAL(ashiftrt_r4_32)
    1.41 + 
    1.42 ++	FUNC(GLOBAL(ashiftrt_r4_0))
    1.43 ++	FUNC(GLOBAL(ashiftrt_r4_1))
    1.44 ++	FUNC(GLOBAL(ashiftrt_r4_2))
    1.45 ++	FUNC(GLOBAL(ashiftrt_r4_3))
    1.46 ++	FUNC(GLOBAL(ashiftrt_r4_4))
    1.47 ++	FUNC(GLOBAL(ashiftrt_r4_5))
    1.48 ++	FUNC(GLOBAL(ashiftrt_r4_6))
    1.49 ++	FUNC(GLOBAL(ashiftrt_r4_7))
    1.50 ++	FUNC(GLOBAL(ashiftrt_r4_8))
    1.51 ++	FUNC(GLOBAL(ashiftrt_r4_9))
    1.52 ++	FUNC(GLOBAL(ashiftrt_r4_10))
    1.53 ++	FUNC(GLOBAL(ashiftrt_r4_11))
    1.54 ++	FUNC(GLOBAL(ashiftrt_r4_12))
    1.55 ++	FUNC(GLOBAL(ashiftrt_r4_13))
    1.56 ++	FUNC(GLOBAL(ashiftrt_r4_14))
    1.57 ++	FUNC(GLOBAL(ashiftrt_r4_15))
    1.58 ++	FUNC(GLOBAL(ashiftrt_r4_16))
    1.59 ++	FUNC(GLOBAL(ashiftrt_r4_17))
    1.60 ++	FUNC(GLOBAL(ashiftrt_r4_18))
    1.61 ++	FUNC(GLOBAL(ashiftrt_r4_19))
    1.62 ++	FUNC(GLOBAL(ashiftrt_r4_20))
    1.63 ++	FUNC(GLOBAL(ashiftrt_r4_21))
    1.64 ++	FUNC(GLOBAL(ashiftrt_r4_22))
    1.65 ++	FUNC(GLOBAL(ashiftrt_r4_23))
    1.66 ++	FUNC(GLOBAL(ashiftrt_r4_24))
    1.67 ++	FUNC(GLOBAL(ashiftrt_r4_25))
    1.68 ++	FUNC(GLOBAL(ashiftrt_r4_26))
    1.69 ++	FUNC(GLOBAL(ashiftrt_r4_27))
    1.70 ++	FUNC(GLOBAL(ashiftrt_r4_28))
    1.71 ++	FUNC(GLOBAL(ashiftrt_r4_29))
    1.72 ++	FUNC(GLOBAL(ashiftrt_r4_30))
    1.73 ++	FUNC(GLOBAL(ashiftrt_r4_31))
    1.74 ++	FUNC(GLOBAL(ashiftrt_r4_32))
    1.75 ++
    1.76 + 	.align	1
    1.77 + GLOBAL(ashiftrt_r4_32):
    1.78 + GLOBAL(ashiftrt_r4_31):
    1.79 +@@ -166,6 +205,40 @@
    1.80 + GLOBAL(ashiftrt_r4_0):
    1.81 + 	rts
    1.82 + 	nop
    1.83 ++
    1.84 ++	ENDFUNC(GLOBAL(ashiftrt_r4_0))
    1.85 ++	ENDFUNC(GLOBAL(ashiftrt_r4_1))
    1.86 ++	ENDFUNC(GLOBAL(ashiftrt_r4_2))
    1.87 ++	ENDFUNC(GLOBAL(ashiftrt_r4_3))
    1.88 ++	ENDFUNC(GLOBAL(ashiftrt_r4_4))
    1.89 ++	ENDFUNC(GLOBAL(ashiftrt_r4_5))
    1.90 ++	ENDFUNC(GLOBAL(ashiftrt_r4_6))
    1.91 ++	ENDFUNC(GLOBAL(ashiftrt_r4_7))
    1.92 ++	ENDFUNC(GLOBAL(ashiftrt_r4_8))
    1.93 ++	ENDFUNC(GLOBAL(ashiftrt_r4_9))
    1.94 ++	ENDFUNC(GLOBAL(ashiftrt_r4_10))
    1.95 ++	ENDFUNC(GLOBAL(ashiftrt_r4_11))
    1.96 ++	ENDFUNC(GLOBAL(ashiftrt_r4_12))
    1.97 ++	ENDFUNC(GLOBAL(ashiftrt_r4_13))
    1.98 ++	ENDFUNC(GLOBAL(ashiftrt_r4_14))
    1.99 ++	ENDFUNC(GLOBAL(ashiftrt_r4_15))
   1.100 ++	ENDFUNC(GLOBAL(ashiftrt_r4_16))
   1.101 ++	ENDFUNC(GLOBAL(ashiftrt_r4_17))
   1.102 ++	ENDFUNC(GLOBAL(ashiftrt_r4_18))
   1.103 ++	ENDFUNC(GLOBAL(ashiftrt_r4_19))
   1.104 ++	ENDFUNC(GLOBAL(ashiftrt_r4_20))
   1.105 ++	ENDFUNC(GLOBAL(ashiftrt_r4_21))
   1.106 ++	ENDFUNC(GLOBAL(ashiftrt_r4_22))
   1.107 ++	ENDFUNC(GLOBAL(ashiftrt_r4_23))
   1.108 ++	ENDFUNC(GLOBAL(ashiftrt_r4_24))
   1.109 ++	ENDFUNC(GLOBAL(ashiftrt_r4_25))
   1.110 ++	ENDFUNC(GLOBAL(ashiftrt_r4_26))
   1.111 ++	ENDFUNC(GLOBAL(ashiftrt_r4_27))
   1.112 ++	ENDFUNC(GLOBAL(ashiftrt_r4_28))
   1.113 ++	ENDFUNC(GLOBAL(ashiftrt_r4_29))
   1.114 ++	ENDFUNC(GLOBAL(ashiftrt_r4_30))
   1.115 ++	ENDFUNC(GLOBAL(ashiftrt_r4_31))
   1.116 ++	ENDFUNC(GLOBAL(ashiftrt_r4_32))
   1.117 + #endif
   1.118 + 
   1.119 + #ifdef L_ashiftrt_n
   1.120 +@@ -188,6 +261,7 @@
   1.121 + !
   1.122 + 
   1.123 + 	.global	GLOBAL(ashrsi3)
   1.124 ++	FUNC(GLOBAL(ashrsi3))
   1.125 + 	.align	2
   1.126 + GLOBAL(ashrsi3):
   1.127 + 	mov	#31,r0
   1.128 +@@ -315,6 +389,7 @@
   1.129 + 	rts
   1.130 + 	nop
   1.131 + 
   1.132 ++	ENDFUNC(GLOBAL(ashrsi3))
   1.133 + #endif
   1.134 + 
   1.135 + #ifdef L_ashiftlt
   1.136 +@@ -336,6 +411,7 @@
   1.137 + ! (none)
   1.138 + !
   1.139 + 	.global	GLOBAL(ashlsi3)
   1.140 ++	FUNC(GLOBAL(ashlsi3))
   1.141 + 	.align	2
   1.142 + GLOBAL(ashlsi3):
   1.143 + 	mov	#31,r0
   1.144 +@@ -472,6 +548,7 @@
   1.145 + 	rts
   1.146 + 	nop
   1.147 + 
   1.148 ++	ENDFUNC(GLOBAL(ashlsi3))
   1.149 + #endif
   1.150 + 
   1.151 + #ifdef L_lshiftrt
   1.152 +@@ -493,6 +570,7 @@
   1.153 + ! (none)
   1.154 + !
   1.155 + 	.global	GLOBAL(lshrsi3)
   1.156 ++	FUNC(GLOBAL(lshrsi3))
   1.157 + 	.align	2
   1.158 + GLOBAL(lshrsi3):
   1.159 + 	mov	#31,r0
   1.160 +@@ -629,6 +707,7 @@
   1.161 + 	rts
   1.162 + 	nop
   1.163 + 
   1.164 ++	ENDFUNC(GLOBAL(lshrsi3))
   1.165 + #endif
   1.166 + 
   1.167 + #ifdef L_movstr
   1.168 +@@ -645,76 +724,113 @@
   1.169 + 	add	#64,r4
   1.170 + 	.align	4
   1.171 + 	.global	GLOBAL(movstrSI64)
   1.172 ++	FUNC(GLOBAL(movstrSI64))
   1.173 + GLOBAL(movstrSI64):
   1.174 + 	mov.l	@(60,r5),r0
   1.175 + 	mov.l	r0,@(60,r4)
   1.176 + 	.global	GLOBAL(movstrSI60)
   1.177 ++	FUNC(GLOBAL(movstrSI60))
   1.178 + GLOBAL(movstrSI60):
   1.179 + 	mov.l	@(56,r5),r0
   1.180 + 	mov.l	r0,@(56,r4)
   1.181 + 	.global	GLOBAL(movstrSI56)
   1.182 ++	FUNC(GLOBAL(movstrSI56))
   1.183 + GLOBAL(movstrSI56):
   1.184 + 	mov.l	@(52,r5),r0
   1.185 + 	mov.l	r0,@(52,r4)
   1.186 + 	.global	GLOBAL(movstrSI52)
   1.187 ++	FUNC(GLOBAL(movstrSI52))
   1.188 + GLOBAL(movstrSI52):
   1.189 + 	mov.l	@(48,r5),r0
   1.190 + 	mov.l	r0,@(48,r4)
   1.191 + 	.global	GLOBAL(movstrSI48)
   1.192 ++	FUNC(GLOBAL(movstrSI48))
   1.193 + GLOBAL(movstrSI48):
   1.194 + 	mov.l	@(44,r5),r0
   1.195 + 	mov.l	r0,@(44,r4)
   1.196 + 	.global	GLOBAL(movstrSI44)
   1.197 ++	FUNC(GLOBAL(movstrSI44))
   1.198 + GLOBAL(movstrSI44):
   1.199 + 	mov.l	@(40,r5),r0
   1.200 + 	mov.l	r0,@(40,r4)
   1.201 + 	.global	GLOBAL(movstrSI40)
   1.202 ++	FUNC(GLOBAL(movstrSI40))
   1.203 + GLOBAL(movstrSI40):
   1.204 + 	mov.l	@(36,r5),r0
   1.205 + 	mov.l	r0,@(36,r4)
   1.206 + 	.global	GLOBAL(movstrSI36)
   1.207 ++	FUNC(GLOBAL(movstrSI36))
   1.208 + GLOBAL(movstrSI36):
   1.209 + 	mov.l	@(32,r5),r0
   1.210 + 	mov.l	r0,@(32,r4)
   1.211 + 	.global	GLOBAL(movstrSI32)
   1.212 ++	FUNC(GLOBAL(movstrSI32))
   1.213 + GLOBAL(movstrSI32):
   1.214 + 	mov.l	@(28,r5),r0
   1.215 + 	mov.l	r0,@(28,r4)
   1.216 + 	.global	GLOBAL(movstrSI28)
   1.217 ++	FUNC(GLOBAL(movstrSI28))
   1.218 + GLOBAL(movstrSI28):
   1.219 + 	mov.l	@(24,r5),r0
   1.220 + 	mov.l	r0,@(24,r4)
   1.221 + 	.global	GLOBAL(movstrSI24)
   1.222 ++	FUNC(GLOBAL(movstrSI24))
   1.223 + GLOBAL(movstrSI24):
   1.224 + 	mov.l	@(20,r5),r0
   1.225 + 	mov.l	r0,@(20,r4)
   1.226 + 	.global	GLOBAL(movstrSI20)
   1.227 ++	FUNC(GLOBAL(movstrSI20))
   1.228 + GLOBAL(movstrSI20):
   1.229 + 	mov.l	@(16,r5),r0
   1.230 + 	mov.l	r0,@(16,r4)
   1.231 + 	.global	GLOBAL(movstrSI16)
   1.232 ++	FUNC(GLOBAL(movstrSI16))
   1.233 + GLOBAL(movstrSI16):
   1.234 + 	mov.l	@(12,r5),r0
   1.235 + 	mov.l	r0,@(12,r4)
   1.236 + 	.global	GLOBAL(movstrSI12)
   1.237 ++	FUNC(GLOBAL(movstrSI12))
   1.238 + GLOBAL(movstrSI12):
   1.239 + 	mov.l	@(8,r5),r0
   1.240 + 	mov.l	r0,@(8,r4)
   1.241 + 	.global	GLOBAL(movstrSI8)
   1.242 ++	FUNC(GLOBAL(movstrSI8))
   1.243 + GLOBAL(movstrSI8):
   1.244 + 	mov.l	@(4,r5),r0
   1.245 + 	mov.l	r0,@(4,r4)
   1.246 + 	.global	GLOBAL(movstrSI4)
   1.247 ++	FUNC(GLOBAL(movstrSI4))
   1.248 + GLOBAL(movstrSI4):
   1.249 + 	mov.l	@(0,r5),r0
   1.250 + 	mov.l	r0,@(0,r4)
   1.251 ++	.global	GLOBAL(movstrSI0)
   1.252 ++	FUNC(GLOBAL(movstrSI0))
   1.253 + GLOBAL(movstrSI0):
   1.254 + 	rts
   1.255 + 	nop
   1.256 + 
   1.257 ++	ENDFUNC(GLOBAL(movstrSI64))
   1.258 ++	ENDFUNC(GLOBAL(movstrSI60))
   1.259 ++	ENDFUNC(GLOBAL(movstrSI56))
   1.260 ++	ENDFUNC(GLOBAL(movstrSI52))
   1.261 ++	ENDFUNC(GLOBAL(movstrSI48))
   1.262 ++	ENDFUNC(GLOBAL(movstrSI44))
   1.263 ++	ENDFUNC(GLOBAL(movstrSI40))
   1.264 ++	ENDFUNC(GLOBAL(movstrSI36))
   1.265 ++	ENDFUNC(GLOBAL(movstrSI32))
   1.266 ++	ENDFUNC(GLOBAL(movstrSI28))
   1.267 ++	ENDFUNC(GLOBAL(movstrSI24))
   1.268 ++	ENDFUNC(GLOBAL(movstrSI20))
   1.269 ++	ENDFUNC(GLOBAL(movstrSI16))
   1.270 ++	ENDFUNC(GLOBAL(movstrSI12))
   1.271 ++	ENDFUNC(GLOBAL(movstrSI8))
   1.272 ++	ENDFUNC(GLOBAL(movstrSI4))
   1.273 ++	ENDFUNC(GLOBAL(movstrSI0))
   1.274 ++
   1.275 + 	.align	4
   1.276 + 
   1.277 + 	.global	GLOBAL(movstr)
   1.278 ++	FUNC(GLOBAL(movstr))
   1.279 + GLOBAL(movstr):
   1.280 + 	mov.l	@(60,r5),r0
   1.281 + 	mov.l	r0,@(60,r4)
   1.282 +@@ -771,6 +887,8 @@
   1.283 + 	add	#64,r5
   1.284 + 	bra	GLOBAL(movstr)
   1.285 + 	add	#64,r4
   1.286 ++
   1.287 ++	FUNC(GLOBAL(movstr))
   1.288 + #endif
   1.289 + 
   1.290 + #ifdef L_movstr_i4
   1.291 +@@ -779,6 +897,10 @@
   1.292 + 	.global	GLOBAL(movstr_i4_odd)
   1.293 + 	.global	GLOBAL(movstrSI12_i4)
   1.294 + 
   1.295 ++	FUNC(GLOBAL(movstr_i4_even))
   1.296 ++	FUNC(GLOBAL(movstr_i4_odd))
   1.297 ++	FUNC(GLOBAL(movstrSI12_i4))
   1.298 ++
   1.299 + 	.p2align	5
   1.300 + L_movstr_2mod4_end:
   1.301 + 	mov.l	r0,@(16,r4)
   1.302 +@@ -787,6 +909,11 @@
   1.303 + 
   1.304 + 	.p2align	2
   1.305 + 
   1.306 ++GLOBAL(movstr_i4_even):
   1.307 ++	mov.l	@r5+,r0
   1.308 ++	bra	L_movstr_start_even
   1.309 ++	mov.l	@r5+,r1
   1.310 ++
   1.311 + GLOBAL(movstr_i4_odd):
   1.312 + 	mov.l	@r5+,r1
   1.313 + 	add	#-4,r4
   1.314 +@@ -813,10 +940,8 @@
   1.315 + 	rts
   1.316 + 	mov.l	r3,@(12,r4)
   1.317 + 
   1.318 +-GLOBAL(movstr_i4_even):
   1.319 +-	mov.l	@r5+,r0
   1.320 +-	bra	L_movstr_start_even
   1.321 +-	mov.l	@r5+,r1
   1.322 ++	ENDFUNC(GLOBAL(movstr_i4_even))
   1.323 ++	ENDFUNC(GLOBAL(movstr_i4_odd))
   1.324 + 
   1.325 + 	.p2align	4
   1.326 + GLOBAL(movstrSI12_i4):
   1.327 +@@ -827,12 +952,15 @@
   1.328 + 	mov.l	r1,@(4,r4)
   1.329 + 	rts
   1.330 + 	mov.l	r2,@(8,r4)
   1.331 ++
   1.332 ++	ENDFUNC(GLOBAL(movstrSI12_i4))
   1.333 + #endif
   1.334 + 
   1.335 + #ifdef L_mulsi3
   1.336 + 
   1.337 + 
   1.338 + 	.global	GLOBAL(mulsi3)
   1.339 ++	FUNC(GLOBAL(mulsi3))
   1.340 + 
   1.341 + ! r4 =       aabb
   1.342 + ! r5 =       ccdd
   1.343 +@@ -865,7 +993,7 @@
   1.344 + 	rts
   1.345 + 	add	r2,r0
   1.346 + 
   1.347 +-
   1.348 ++	FUNC(GLOBAL(mulsi3))
   1.349 + #endif
   1.350 + #endif /* ! __SH5__ */
   1.351 + #ifdef L_sdivsi3_i4
   1.352 +@@ -875,6 +1003,7 @@
   1.353 + !! args in r4 and r5, result in fpul, clobber dr0, dr2
   1.354 + 
   1.355 + 	.global	GLOBAL(sdivsi3_i4)
   1.356 ++	FUNC(GLOBAL(sdivsi3_i4))
   1.357 + GLOBAL(sdivsi3_i4):
   1.358 + 	lds r4,fpul
   1.359 + 	float fpul,dr0
   1.360 +@@ -884,6 +1013,7 @@
   1.361 + 	rts
   1.362 + 	ftrc dr0,fpul
   1.363 + 
   1.364 ++	ENDFUNC(GLOBAL(sdivsi3_i4))
   1.365 + #elif defined(__SH4_SINGLE__) || defined(__SH4_SINGLE_ONLY__) || (defined (__SH5__) && ! defined __SH4_NOFPU__)
   1.366 + !! args in r4 and r5, result in fpul, clobber r2, dr0, dr2
   1.367 + 
   1.368 +@@ -892,6 +1022,7 @@
   1.369 + 	.mode	SHcompact
   1.370 + #endif
   1.371 + 	.global	GLOBAL(sdivsi3_i4)
   1.372 ++	FUNC(GLOBAL(sdivsi3_i4))
   1.373 + GLOBAL(sdivsi3_i4):
   1.374 + 	sts.l fpscr,@-r15
   1.375 + 	mov #8,r2
   1.376 +@@ -906,6 +1037,7 @@
   1.377 + 	rts
   1.378 + 	lds.l @r15+,fpscr
   1.379 + 
   1.380 ++	ENDFUNC(GLOBAL(sdivsi3_i4))
   1.381 + #endif /* ! __SH5__ || __SH5__ == 32 */
   1.382 + #endif /* ! __SH4__ */
   1.383 + #endif
   1.384 +@@ -920,9 +1052,10 @@
   1.385 + !!
   1.386 + !!
   1.387 + 
   1.388 +-!! args in r4 and r5, result in r0 clobber r1,r2,r3
   1.389 ++!! args in r4 and r5, result in r0 clobber r1, r2, r3, and t bit
   1.390 + 
   1.391 + 	.global	GLOBAL(sdivsi3)
   1.392 ++	FUNC(GLOBAL(sdivsi3))
   1.393 + #if __SHMEDIA__
   1.394 + #if __SH5__ == 32
   1.395 + 	.section	.text..SHmedia32,"ax"
   1.396 +@@ -1166,6 +1299,7 @@
   1.397 + div0:	rts
   1.398 + 	mov	#0,r0
   1.399 + 
   1.400 ++	ENDFUNC(GLOBAL(sdivsi3))
   1.401 + #endif /* ! __SHMEDIA__ */
   1.402 + #endif /* ! __SH4__ */
   1.403 + #endif
   1.404 +@@ -1174,9 +1308,11 @@
   1.405 + 	.title "SH DIVIDE"
   1.406 + !! 4 byte integer Divide code for the Hitachi SH
   1.407 + #ifdef __SH4__
   1.408 +-!! args in r4 and r5, result in fpul, clobber r0, r1, r4, r5, dr0, dr2, dr4
   1.409 ++!! args in r4 and r5, result in fpul, clobber r0, r1, r4, r5, dr0, dr2, dr4,
   1.410 ++!! and t bit
   1.411 + 
   1.412 + 	.global	GLOBAL(udivsi3_i4)
   1.413 ++	FUNC(GLOBAL(udivsi3_i4))
   1.414 + GLOBAL(udivsi3_i4):
   1.415 + 	mov #1,r1
   1.416 + 	cmp/hi r1,r5
   1.417 +@@ -1217,11 +1353,13 @@
   1.418 + L1:
   1.419 + 	.double 2147483648
   1.420 + 
   1.421 ++	ENDFUNC(GLOBAL(udivsi3_i4))
   1.422 + #elif defined (__SH5__) && ! defined (__SH4_NOFPU__)
   1.423 + #if ! __SH5__ || __SH5__ == 32
   1.424 + !! args in r4 and r5, result in fpul, clobber r20, r21, dr0, fr33
   1.425 + 	.mode	SHmedia
   1.426 + 	.global	GLOBAL(udivsi3_i4)
   1.427 ++	FUNC(GLOBAL(udivsi3_i4))
   1.428 + GLOBAL(udivsi3_i4):
   1.429 + 	addz.l	r4,r63,r20
   1.430 + 	addz.l	r5,r63,r21
   1.431 +@@ -1234,6 +1372,8 @@
   1.432 + 	ftrc.dq dr0,dr32
   1.433 + 	fmov.s fr33,fr32
   1.434 + 	blink tr0,r63
   1.435 ++
   1.436 ++	ENDFUNC(GLOBAL(udivsi3_i4))
   1.437 + #endif /* ! __SH5__ || __SH5__ == 32 */
   1.438 + #elif defined(__SH4_SINGLE__) || defined(__SH4_SINGLE_ONLY__)
   1.439 + !! args in r4 and r5, result in fpul, clobber r0, r1, r4, r5, dr0, dr2, dr4
   1.440 +@@ -1287,6 +1427,7 @@
   1.441 + #endif
   1.442 + 	.double 2147483648
   1.443 + 
   1.444 ++	ENDFUNC(GLOBAL(udivsi3_i4))
   1.445 + #endif /* ! __SH4__ */
   1.446 + #endif
   1.447 + 
   1.448 +@@ -1297,6 +1438,7 @@
   1.449 + 
   1.450 + !! args in r4 and r5, result in r0, clobbers r4, pr, and t bit
   1.451 + 	.global	GLOBAL(udivsi3)
   1.452 ++	FUNC(GLOBAL(udivsi3))
   1.453 + 
   1.454 + #if __SHMEDIA__
   1.455 + #if __SH5__ == 32
   1.456 +@@ -1485,6 +1627,7 @@
   1.457 +  rts
   1.458 +  rotcl r0
   1.459 + 
   1.460 ++	ENDFUNC(GLOBAL(udivsi3))
   1.461 + #endif /* ! __SHMEDIA__ */
   1.462 + #endif /* __SH4__ */
   1.463 + #endif /* L_udivsi3 */
   1.464 +@@ -1790,6 +1933,7 @@
   1.465 + 	.mode	SHcompact
   1.466 + #endif
   1.467 + 	.global GLOBAL(set_fpscr)
   1.468 ++	FUNC(GLOBAL(set_fpscr))
   1.469 + GLOBAL(set_fpscr):
   1.470 + 	lds r4,fpscr
   1.471 + 	mov.l LOCAL(set_fpscr_L1),r1
   1.472 +@@ -1822,6 +1966,8 @@
   1.473 + 	.align 2
   1.474 + LOCAL(set_fpscr_L1):
   1.475 + 	.long GLOBAL(fpscr_values)
   1.476 ++
   1.477 ++	ENDFUNC(GLOBAL(set_fpscr))
   1.478 + #ifdef __ELF__
   1.479 +         .comm   GLOBAL(fpscr_values),8,4
   1.480 + #else
   1.481 +@@ -1860,6 +2006,7 @@
   1.482 + 	blink	tr0, r63
   1.483 + #elif defined(__SH4_SINGLE__) || defined(__SH4__) || defined(__SH4_SINGLE_ONLY__)
   1.484 + 	.global GLOBAL(ic_invalidate)
   1.485 ++	FUNC(GLOBAL(ic_invalidate))
   1.486 + GLOBAL(ic_invalidate):
   1.487 + 	ocbwb	@r4
   1.488 + 	mova	0f,r0
   1.489 +@@ -1882,6 +2029,8 @@
   1.490 + 	nop
   1.491 + 	.endr
   1.492 + 	.endr
   1.493 ++
   1.494 ++	ENDFUNC(GLOBAL(ic_invalidate))
   1.495 + #endif /* SH4 */
   1.496 + #endif /* L_ic_invalidate */
   1.497 + 
   1.498 +@@ -1940,6 +2089,7 @@
   1.499 + 	will be expanded into r2/r3 upon return.  */
   1.500 + 	
   1.501 + 	.global	GLOBAL(GCC_shcompact_call_trampoline)
   1.502 ++	FUNC(GLOBAL(GCC_shcompact_call_trampoline))
   1.503 + GLOBAL(GCC_shcompact_call_trampoline):
   1.504 + 	ptabs/l	r0, tr0	/* Prepare to call the actual function.  */
   1.505 + 	movi	((datalabel LOCAL(ct_main_table) - 31 * 2) >> 16) & 65535, r0
   1.506 +@@ -2290,6 +2440,8 @@
   1.507 + 	shari	r2, 32, r2
   1.508 + #endif
   1.509 + 	blink	tr0, r63
   1.510 ++
   1.511 ++	ENDFUNC(GLOBAL(GCC_shcompact_call_trampoline))
   1.512 + #endif /* L_shcompact_call_trampoline */
   1.513 + 
   1.514 + #ifdef L_shcompact_return_trampoline
   1.515 +@@ -2302,6 +2454,7 @@
   1.516 + 	.section	.text..SHmedia32, "ax"
   1.517 + 	.align	2
   1.518 + 	.global	GLOBAL(GCC_shcompact_return_trampoline)
   1.519 ++	FUNC(GLOBAL(GCC_shcompact_return_trampoline))
   1.520 + GLOBAL(GCC_shcompact_return_trampoline):
   1.521 + 	ptabs/l	r18, tr0
   1.522 + #if __LITTLE_ENDIAN__
   1.523 +@@ -2313,6 +2466,8 @@
   1.524 + #endif
   1.525 + 	or	r3, r2, r2
   1.526 + 	blink	tr0, r63
   1.527 ++
   1.528 ++	ENDFUNC(GLOBAL(GCC_shcompact_return_trampoline))
   1.529 + #endif /* L_shcompact_return_trampoline */
   1.530 + 
   1.531 + #ifdef L_shcompact_incoming_args
   1.532 +@@ -2367,6 +2522,7 @@
   1.533 + 	actual bit pattern.  */
   1.534 + 	
   1.535 + 	.global	GLOBAL(GCC_shcompact_incoming_args)
   1.536 ++	FUNC(GLOBAL(GCC_shcompact_incoming_args))
   1.537 + GLOBAL(GCC_shcompact_incoming_args):
   1.538 + 	ptabs/l	r18, tr0	/* Prepare to return.  */
   1.539 + 	shlri	r17, 32, r0	/* Load the cookie.  */
   1.540 +@@ -2519,6 +2675,7 @@
   1.541 + LOCAL(ia_return):	/* Return.  */
   1.542 + 	blink	tr0, r63
   1.543 + LOCAL(ia_end_of_push_seq): /* Label used to compute the first push instruction.  */
   1.544 ++	ENDFUNC(GLOBAL(GCC_shcompact_incoming_args))
   1.545 + #endif /* L_shcompact_incoming_args */
   1.546 + #endif
   1.547 + #if __SH5__
   1.548 +@@ -2530,6 +2687,7 @@
   1.549 + #endif
   1.550 + 	.align	3 /* It is copied in units of 8 bytes in SHmedia mode.  */
   1.551 + 	.global	GLOBAL(GCC_nested_trampoline)
   1.552 ++	FUNC(GLOBAL(GCC_nested_trampoline))
   1.553 + GLOBAL(GCC_nested_trampoline):
   1.554 + 	.mode	SHmedia
   1.555 + 	ptrel/u	r63, tr0
   1.556 +@@ -2546,6 +2704,8 @@
   1.557 + 	ld.l	r0, 28, r1
   1.558 + #endif
   1.559 + 	blink	tr1, r63
   1.560 ++
   1.561 ++	ENDFUNC(GLOBAL(GCC_nested_trampoline))
   1.562 + #endif /* L_nested_trampoline */
   1.563 + #endif /* __SH5__ */
   1.564 + #if __SH5__ == 32
   1.565 +@@ -2555,6 +2715,7 @@
   1.566 + 	.align	2
   1.567 + #ifndef __SH4_NOFPU__	
   1.568 + 	.global	GLOBAL(GCC_push_shmedia_regs)
   1.569 ++	FUNC(GLOBAL(GCC_push_shmedia_regs))
   1.570 + GLOBAL(GCC_push_shmedia_regs):
   1.571 + 	addi.l	r15, -14*8, r15
   1.572 + 	fst.d	r15, 13*8, dr62
   1.573 +@@ -2573,6 +2734,7 @@
   1.574 + 	fst.d	r15,  0*8, dr36
   1.575 + #endif
   1.576 + 	.global	GLOBAL(GCC_push_shmedia_regs_nofpu)
   1.577 ++	FUNC(GLOBAL(GCC_push_shmedia_regs_nofpu))
   1.578 + GLOBAL(GCC_push_shmedia_regs_nofpu):
   1.579 + 	ptabs/l	r18, tr0
   1.580 + 	addi.l	r15, -27*8, r15
   1.581 +@@ -2608,8 +2770,13 @@
   1.582 + 	st.q	r15,  0*8, r28
   1.583 + 	blink	tr0, r63
   1.584 + 
   1.585 ++#ifndef __SH4_NOFPU__	
   1.586 ++	ENDFUNC(GLOBAL(GCC_push_shmedia_regs))
   1.587 ++#endif
   1.588 ++	ENDFUNC(GLOBAL(GCC_push_shmedia_regs_nofpu))
   1.589 + #ifndef __SH4_NOFPU__
   1.590 + 	.global	GLOBAL(GCC_pop_shmedia_regs)
   1.591 ++	FUNC(GLOBAL(GCC_pop_shmedia_regs))
   1.592 + GLOBAL(GCC_pop_shmedia_regs):
   1.593 + 	pt	.L0, tr1
   1.594 + 	movi	41*8, r0
   1.595 +@@ -2630,6 +2797,7 @@
   1.596 + 	blink	tr1, r63
   1.597 + #endif
   1.598 + 	.global	GLOBAL(GCC_pop_shmedia_regs_nofpu)
   1.599 ++	FUNC(GLOBAL(GCC_pop_shmedia_regs_nofpu))
   1.600 + GLOBAL(GCC_pop_shmedia_regs_nofpu):
   1.601 + 	movi	27*8, r0
   1.602 + .L0:
   1.603 +@@ -2666,5 +2834,10 @@
   1.604 + 	ld.q	r15,  0*8, r28
   1.605 + 	add.l	r15, r0, r15
   1.606 + 	blink	tr0, r63
   1.607 ++
   1.608 ++#ifndef __SH4_NOFPU__
   1.609 ++	ENDFUNC(GLOBAL(GCC_pop_shmedia_regs))
   1.610 ++#endif
   1.611 ++	ENDFUNC(GLOBAL(GCC_pop_shmedia_regs_nofpu))
   1.612 + #endif /* __SH5__ == 32 */
   1.613 + #endif /* L_push_pop_shmedia_regs */