]>
Commit | Line | Data |
---|---|---|
101c6d27 JB |
1 | From binutils-return-33437-listarch-binutils=sources dot redhat dot com at sources dot redhat dot com Wed May 05 17:45:08 2004 |
2 | Return-Path: <binutils-return-33437-listarch-binutils=sources dot redhat dot com at sources dot redhat dot com> | |
3 | Delivered-To: listarch-binutils at sources dot redhat dot com | |
4 | Received: (qmail 20913 invoked by alias); 5 May 2004 17:45:08 -0000 | |
5 | Mailing-List: contact binutils-help at sources dot redhat dot com; run by ezmlm | |
6 | Precedence: bulk | |
7 | List-Subscribe: <mailto:binutils-subscribe at sources dot redhat dot com> | |
8 | List-Archive: <http://sources.redhat.com/ml/binutils/> | |
9 | List-Post: <mailto:binutils at sources dot redhat dot com> | |
10 | List-Help: <mailto:binutils-help at sources dot redhat dot com>, <http://sources dot redhat dot com/ml/#faqs> | |
11 | Sender: binutils-owner at sources dot redhat dot com | |
12 | Delivered-To: mailing list binutils at sources dot redhat dot com | |
13 | Received: (qmail 20904 invoked from network); 5 May 2004 17:45:05 -0000 | |
14 | Received: from unknown (HELO dmz.algor.co.uk) (62.254.210.145) | |
15 | by sources dot redhat dot com with SMTP; 5 May 2004 17:45:05 -0000 | |
16 | Received: from alg158.algor.co.uk ([62.254.210.158] helo=olympia.mips.com) | |
17 | by dmz dot algor dot co dot uk with esmtp (Exim 3 dot 35 #1 (Debian)) | |
18 | id 1BLQgU-0007Tz-00; Wed, 05 May 2004 18:59:54 +0100 | |
19 | Received: from stockwell.mips.com ([192.168.192.238]) | |
20 | by olympia dot mips dot com with esmtp (Exim 3 dot 36 #1 (Debian)) | |
21 | id 1BLQRk-0004Mi-00; Wed, 05 May 2004 18:44:40 +0100 | |
22 | Subject: Re: [mips patch RFC] removal of gas embedded-pic support code | |
23 | From: David Ung <davidu at mips dot com> | |
24 | To: cgd at broadcom dot com, ica2_ts at csv dot ica dot uni-stuttgart dot de, binutils at sources dot redhat dot com | |
25 | Content-Type: text/plain | |
26 | Organization: MIPS Technologies UK | |
27 | Message-Id: <1083779079.31797.223.camel@stockwell.mips.com> | |
28 | Mime-Version: 1.0 | |
29 | Date: Wed, 05 May 2004 18:44:40 +0100 | |
30 | Content-Transfer-Encoding: 7bit | |
31 | X-MTUK-Scanner: Found to be clean | |
32 | X-MTUK-SpamCheck: not spam, SpamAssassin (score=-4.833, required 4, AWL, | |
33 | BAYES_00) | |
34 | ||
35 | >At Thu, 29 Apr 2004 02:46:46 +0000 (UTC), "Thiemo Seufer" wrote: | |
36 | >> I think it is ok. | |
37 | > | |
38 | >Thanks for looking it over. | |
39 | > | |
40 | >I've checked it in. I *really* hope it really doesn't break | |
41 | >anything. 8-) | |
42 | > | |
43 | > | |
44 | >chris | |
45 | ||
46 | Chris, | |
47 | ||
48 | woops. your recent patch seem to have broke building of the compiler on | |
49 | linux. The problem occurs when building for libgcc/./_divdi3.o | |
50 | ||
51 | gas fails with: | |
52 | Error: operation combines symbols in different segments | |
53 | ||
54 | as it is trying to assemble this piece of .s code generated from gcc. | |
55 | ||
56 | .section .eh_frame,"aw",@progbits | |
57 | $Lframe1: | |
58 | .4byte $LECIE1-$LSCIE1 | |
59 | $LSCIE1: | |
60 | .4byte 0x0 | |
61 | .byte 0x1 | |
62 | .ascii "zR\000" | |
63 | .uleb128 0x1 | |
64 | .sleb128 4 | |
65 | .byte 0x1f | |
66 | .uleb128 0x1 | |
67 | .byte 0x1b | |
68 | .byte 0xc | |
69 | .uleb128 0x1d | |
70 | .uleb128 0x0 | |
71 | .align 2 | |
72 | $LECIE1: | |
73 | $LSFDE1: | |
74 | .4byte $LEFDE1-$LASFDE1 | |
75 | $LASFDE1: | |
76 | .4byte $LASFDE1-$Lframe1 | |
77 | .4byte $LFB42-. ** | |
78 | .4byte $LFE42-$LFB42 | |
79 | .uleb128 0x0 | |
80 | ||
81 | ** $LFB42 is from the text section of divdi3. | |
82 | ||
83 | I've reverted back the necessary changes to your patch, so that it now | |
84 | works with the above. | |
85 | ||
86 | David. | |
87 | ||
88 | ||
89 | ||
101c6d27 JB |
90 | Index: gas/ChangeLog |
91 | =================================================================== | |
92 | RCS file: /cvsroot/gcc/src-cvs/src/gas/ChangeLog,v | |
93 | retrieving revision 1.2114 | |
94 | diff -u -r1.2114 ChangeLog | |
95 | --- gas/ChangeLog 29 Apr 2004 05:14:20 -0000 1.2114 | |
96 | +++ gas/ChangeLog 5 May 2004 17:38:51 -0000 | |
97 | @@ -1,0 +1,6 @@ | |
98 | +2004-05-05 David Ung <davidu@mips.com> | |
99 | + | |
100 | + * config/tc-mips.c (md_apply_fix3): Revert last change. | |
101 | + (tc_gen_reloc): Put back pc rel handling. | |
102 | + * config/tc-mips.h: Defines DIFF_EXPR_OK. | |
103 | + | |
b37fb947 JB |
104 | --- gas/config/tc-mips.c.orig 2005-12-20 23:43:56.000000000 +0100 |
105 | +++ gas/config/tc-mips.c 2005-12-21 22:47:56.000000000 +0100 | |
106 | @@ -11401,8 +11401,6 @@ | |
ed5ad4ca | 107 | |
101c6d27 JB |
108 | buf = (bfd_byte *) (fixP->fx_frag->fr_literal + fixP->fx_where); |
109 | ||
b37fb947 | 110 | - assert (! fixP->fx_pcrel || fixP->fx_r_type == BFD_RELOC_16_PCREL_S2); |
ed5ad4ca JB |
111 | - |
112 | /* Don't treat parts of a composite relocation as done. There are two | |
113 | reasons for this: | |
114 | ||
b37fb947 | 115 | @@ -13247,8 +13245,6 @@ |
101c6d27 | 116 | |
b37fb947 JB |
117 | if (fixp->fx_pcrel) |
118 | { | |
119 | - assert (fixp->fx_r_type == BFD_RELOC_16_PCREL_S2); | |
120 | - | |
121 | /* At this point, fx_addnumber is "symbol offset - pcrel address". | |
122 | Relocations want only the symbol offset. */ | |
123 | reloc->addend = fixp->fx_addnumber + reloc->address; | |
124 | @@ -13273,6 +13269,34 @@ | |
101c6d27 JB |
125 | } |
126 | ||
127 | code = fixp->fx_r_type; | |
128 | + if (fixp->fx_pcrel) | |
129 | + { | |
130 | + switch (code) | |
131 | + { | |
132 | + case BFD_RELOC_8: | |
133 | + code = BFD_RELOC_8_PCREL; | |
134 | + break; | |
135 | + case BFD_RELOC_16: | |
136 | + code = BFD_RELOC_16_PCREL; | |
137 | + break; | |
138 | + case BFD_RELOC_32: | |
139 | + code = BFD_RELOC_32_PCREL; | |
140 | + break; | |
141 | + case BFD_RELOC_64: | |
142 | + code = BFD_RELOC_64_PCREL; | |
143 | + break; | |
144 | + case BFD_RELOC_8_PCREL: | |
145 | + case BFD_RELOC_16_PCREL: | |
146 | + case BFD_RELOC_32_PCREL: | |
147 | + case BFD_RELOC_64_PCREL: | |
148 | + case BFD_RELOC_16_PCREL_S2: | |
149 | + break; | |
150 | + default: | |
151 | + as_bad_where (fixp->fx_file, fixp->fx_line, | |
152 | + _("Cannot make %s relocation PC relative"), | |
153 | + bfd_get_reloc_code_name (code)); | |
154 | + } | |
155 | + } | |
156 | ||
b37fb947 JB |
157 | reloc->howto = bfd_reloc_type_lookup (stdoutput, code); |
158 | if (reloc->howto == NULL) | |
101c6d27 JB |
159 | Index: gas/config/tc-mips.h |
160 | =================================================================== | |
161 | RCS file: /cvsroot/gcc/src-cvs/src/gas/config/tc-mips.h,v | |
162 | retrieving revision 1.35 | |
163 | diff -u -r1.35 tc-mips.h | |
164 | --- gas/config/tc-mips.h 29 Apr 2004 05:14:22 -0000 1.35 | |
165 | +++ gas/config/tc-mips.h 5 May 2004 17:38:51 -0000 | |
166 | @@ -58,6 +58,10 @@ | |
167 | ||
168 | #define MAX_MEM_FOR_RS_ALIGN_CODE (1 + 2) | |
169 | ||
170 | +/* We permit PC relative difference expressions when generating | |
171 | + embedded PIC code. */ | |
172 | +#define DIFF_EXPR_OK | |
173 | + | |
174 | /* Tell assembler that we have an itbl_mips.h header file to include. */ | |
175 | #define HAVE_ITBL_CPU | |
176 |