yann@1
|
1 |
See http://gcc.gnu.org/PR11901
|
yann@1
|
2 |
Should fix
|
yann@1
|
3 |
make[2]: *** [/gcc-3.3-glibc-2.3.2/build-glibc/elf/check-textrel.out] Error 1
|
yann@1
|
4 |
in glibc's "make tests".
|
yann@1
|
5 |
|
yann@1
|
6 |
Note: this patch is named
|
yann@1
|
7 |
sh-pic-set_fpscr-gcc-3.3.2.patch
|
yann@1
|
8 |
and must be applied after
|
yann@1
|
9 |
sh-lib1funcs_sizeAndType.patch
|
yann@1
|
10 |
but that'll happen naturally if you apply them in alphabetical order.
|
yann@1
|
11 |
|
yann@1
|
12 |
-------------
|
yann@1
|
13 |
|
yann@1
|
14 |
Date: Wed, 30 Jul 2003 12:03:01 +0900
|
yann@1
|
15 |
From: kaz Kojima <kkojima@rr.iij4u.or.jp>
|
yann@1
|
16 |
Subject: [linux-sh:02916] Re: Writing PIC version of __udivsi3_i4? (was: Re: "make tests" fails
|
yann@1
|
17 |
with "libc.so: text relocations used" in glibc-2.3.2 for sh4)
|
yann@1
|
18 |
To: dank@kegel.com
|
yann@1
|
19 |
Cc: linux-sh@m17n.org
|
yann@1
|
20 |
Message-Id: <200307300255.h6U2tB906928@r-rr.iij4u.or.jp>
|
yann@1
|
21 |
|
yann@1
|
22 |
> I'll try to write the PIC version of it,
|
yann@1
|
23 |
|
yann@1
|
24 |
Dan, does the attached patch work for you?
|
yann@1
|
25 |
|
yann@1
|
26 |
Regards,
|
yann@1
|
27 |
kaz
|
yann@1
|
28 |
--
|
yann@1
|
29 |
diff -u3prN ORIG/gcc/gcc/config/sh/lib1funcs.asm LOCAL/gcc/gcc/config/sh/lib1funcs.asm
|
yann@1
|
30 |
--- ORIG/gcc/gcc/config/sh/lib1funcs.asm Thu Jun 19 07:38:59 2003
|
yann@1
|
31 |
+++ gcc-3.3.2/gcc/config/sh/lib1funcs.asm Wed Jul 30 11:08:49 2003
|
yann@1
|
32 |
@@ -1936,7 +1944,17 @@ GLOBAL(moddi3):
|
yann@1
|
33 |
FUNC(GLOBAL(set_fpscr))
|
yann@1
|
34 |
GLOBAL(set_fpscr):
|
yann@1
|
35 |
lds r4,fpscr
|
yann@1
|
36 |
+#ifdef __PIC__
|
yann@1
|
37 |
+ mov.l r12,@-r15
|
yann@1
|
38 |
+ mova LOCAL(set_fpscr_L0),r0
|
yann@1
|
39 |
+ mov.l LOCAL(set_fpscr_L0),r12
|
yann@1
|
40 |
+ add r0,r12
|
yann@1
|
41 |
+ mov.l LOCAL(set_fpscr_L1),r0
|
yann@1
|
42 |
+ mov.l @(r0,r12),r1
|
yann@1
|
43 |
+ mov.l @r15+,r12
|
yann@1
|
44 |
+#else
|
yann@1
|
45 |
mov.l LOCAL(set_fpscr_L1),r1
|
yann@1
|
46 |
+#endif
|
yann@1
|
47 |
swap.w r4,r0
|
yann@1
|
48 |
or #24,r0
|
yann@1
|
49 |
#ifndef FMOVD_WORKS
|
yann@1
|
50 |
@@ -1964,8 +1982,15 @@ GLOBAL(set_fpscr):
|
yann@1
|
51 |
mov.l r3,@(4,r1)
|
yann@1
|
52 |
#endif
|
yann@1
|
53 |
.align 2
|
yann@1
|
54 |
+#ifdef __PIC__
|
yann@1
|
55 |
+LOCAL(set_fpscr_L0):
|
yann@1
|
56 |
+ .long _GLOBAL_OFFSET_TABLE_
|
yann@1
|
57 |
+LOCAL(set_fpscr_L1):
|
yann@1
|
58 |
+ .long GLOBAL(fpscr_values@GOT)
|
yann@1
|
59 |
+#else
|
yann@1
|
60 |
LOCAL(set_fpscr_L1):
|
yann@1
|
61 |
.long GLOBAL(fpscr_values)
|
yann@1
|
62 |
+#endif
|
yann@1
|
63 |
|
yann@1
|
64 |
ENDFUNC(GLOBAL(set_fpscr))
|
yann@1
|
65 |
#ifndef NO_FPSCR_VALUES
|
yann@1
|
66 |
|
yann@1
|
67 |
|