patches/gcc/3.3.3/sh-pic-set_fpscr-gcc-3.3.2.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat Jul 28 21:34:41 2007 +0000 (2007-07-28)
changeset 301 2be7232a73ac
permissions -rw-r--r--
Bump version to 0.2.2.
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