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 May 19 13:10:11 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 */