1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
https://gcc.gnu.org/PR86224
From 1d89df42bdaf0745fd2a0d294471ac16f0553707 Mon Sep 17 00:00:00 2001
From: Sergei Trofimovich <slyfox@gentoo.org>
Date: Sat, 28 Jul 2018 11:33:27 +0100
Subject: [PATCH] libgcc: m68k: avoid absolute relocation in shared library
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
---
libgcc/config/m68k/lb1sf68.S | 19 ++++++++++++++-----
1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/libgcc/config/m68k/lb1sf68.S b/libgcc/config/m68k/lb1sf68.S
index 325a7c17d9b..16c6dc3f5a7 100644
--- a/libgcc/config/m68k/lb1sf68.S
+++ b/libgcc/config/m68k/lb1sf68.S
@@ -435,7 +435,10 @@ $_exception_handler:
.text
FUNC(__mulsi3)
.globl SYM (__mulsi3)
+ .globl SYM (__mulsi3_internal)
+ .hidden SYM (__mulsi3_internal)
SYM (__mulsi3):
+SYM (__mulsi3_internal):
movew sp@(4), d0 /* x0 -> d0 */
muluw sp@(10), d0 /* x0*y1 */
movew sp@(6), d1 /* x1 -> d1 */
@@ -458,7 +461,10 @@ SYM (__mulsi3):
.text
FUNC(__udivsi3)
.globl SYM (__udivsi3)
+ .globl SYM (__udivsi3_internal)
+ .hidden SYM (__udivsi3_internal)
SYM (__udivsi3):
+SYM (__udivsi3_internal):
#ifndef __mcoldfire__
movel d2, sp@-
movel sp@(12), d1 /* d1 = divisor */
@@ -534,7 +540,10 @@ L2: subql IMM (1),d4
.text
FUNC(__divsi3)
.globl SYM (__divsi3)
+ .globl SYM (__divsi3_internal)
+ .hidden SYM (__divsi3_internal)
SYM (__divsi3):
+SYM (__divsi3_internal):
movel d2, sp@-
moveq IMM (1), d2 /* sign of result stored in d2 (=1 or =-1) */
@@ -557,7 +566,7 @@ L1: movel sp@(8), d0 /* d0 = dividend */
L2: movel d1, sp@-
movel d0, sp@-
- PICCALL SYM (__udivsi3) /* divide abs(dividend) by abs(divisor) */
+ PICCALL SYM (__udivsi3_internal) /* divide abs(dividend) by abs(divisor) */
addql IMM (8), sp
tstb d2
@@ -577,13 +586,13 @@ SYM (__umodsi3):
movel sp@(4), d0 /* d0 = dividend */
movel d1, sp@-
movel d0, sp@-
- PICCALL SYM (__udivsi3)
+ PICCALL SYM (__udivsi3_internal)
addql IMM (8), sp
movel sp@(8), d1 /* d1 = divisor */
#ifndef __mcoldfire__
movel d1, sp@-
movel d0, sp@-
- PICCALL SYM (__mulsi3) /* d0 = (a/b)*b */
+ PICCALL SYM (__mulsi3_internal) /* d0 = (a/b)*b */
addql IMM (8), sp
#else
mulsl d1,d0
@@ -603,13 +612,13 @@ SYM (__modsi3):
movel sp@(4), d0 /* d0 = dividend */
movel d1, sp@-
movel d0, sp@-
- PICCALL SYM (__divsi3)
+ PICCALL SYM (__divsi3_internal)
addql IMM (8), sp
movel sp@(8), d1 /* d1 = divisor */
#ifndef __mcoldfire__
movel d1, sp@-
movel d0, sp@-
- PICCALL SYM (__mulsi3) /* d0 = (a/b)*b */
+ PICCALL SYM (__mulsi3_internal) /* d0 = (a/b)*b */
addql IMM (8), sp
#else
mulsl d1,d0
--
2.18.0
|