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
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>
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,
35 >At Thu, 29 Apr 2004 02:46:46 +0000 (UTC), "Thiemo Seufer" wrote:
38 >Thanks for looking it over.
40 >I've checked it in. I *really* hope it really doesn't break
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
52 Error: operation combines symbols in different segments
54 as it is trying to assemble this piece of .s code generated from gcc.
56 .section .eh_frame,"aw",@progbits
58 .4byte $LECIE1-$LSCIE1
74 .4byte $LEFDE1-$LASFDE1
76 .4byte $LASFDE1-$Lframe1
81 ** $LFB42 is from the text section of divdi3.
83 I've reverted back the necessary changes to your patch, so that it now
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
98 +2004-05-05 David Ung <davidu@mips.com>
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.
104 Index: gas/config/tc-mips.c
105 ===================================================================
106 RCS file: /cvsroot/gcc/src-cvs/src/gas/config/tc-mips.c,v
107 retrieving revision 1.263
108 diff -u -r1.263 tc-mips.c
109 --- gas/config/tc-mips.c.orig 2004-11-22 21:33:32.000000000 +0100
110 +++ gas/config/tc-mips.c 2004-11-23 23:59:24.000000000 +0100
111 @@ -10932,8 +10932,6 @@
113 buf = (bfd_byte *) (fixP->fx_frag->fr_literal + fixP->fx_where);
115 - assert (! fixP->fx_pcrel);
117 /* Don't treat parts of a composite relocation as done. There are two
120 @@ -10944,7 +10942,7 @@
121 constants. The easiest way of dealing with the pathological
122 exceptions is to generate a relocation against STN_UNDEF and
123 leave everything up to the linker. */
124 - if (fixP->fx_addsy == NULL && fixP->fx_tcbit == 0)
125 + if (fixP->fx_addsy == NULL && (! fixP->fx_pcrel) && fixP->fx_tcbit == 0)
128 switch (fixP->fx_r_type)
129 @@ -12800,8 +12798,27 @@
130 *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
131 reloc->address = fixp->fx_frag->fr_address + fixp->fx_where;
133 - assert (! fixp->fx_pcrel);
134 - reloc->addend = fixp->fx_addnumber;
135 + if (fixp->fx_pcrel)
137 + bfd_vma pcrel_address;
139 + pcrel_address = reloc->address;
141 + if (OUTPUT_FLAVOR == bfd_target_elf_flavour)
143 + /* At this point, fx_addnumber is "symbol offset - pcrel_address".
144 + Relocations want only the symbol offset. */
145 + reloc->addend = fixp->fx_addnumber + pcrel_address;
149 + /* A gruesome hack which is a result of the gruesome gas reloc
151 + reloc->addend = pcrel_address;
155 + reloc->addend = fixp->fx_addnumber;
157 /* Since the old MIPS ELF ABI uses Rel instead of Rela, encode the vtable
158 entry to be used in the relocation's section offset. */
159 @@ -12812,6 +12829,34 @@
162 code = fixp->fx_r_type;
163 + if (fixp->fx_pcrel)
168 + code = BFD_RELOC_8_PCREL;
171 + code = BFD_RELOC_16_PCREL;
174 + code = BFD_RELOC_32_PCREL;
177 + code = BFD_RELOC_64_PCREL;
179 + case BFD_RELOC_8_PCREL:
180 + case BFD_RELOC_16_PCREL:
181 + case BFD_RELOC_32_PCREL:
182 + case BFD_RELOC_64_PCREL:
183 + case BFD_RELOC_16_PCREL_S2:
186 + as_bad_where (fixp->fx_file, fixp->fx_line,
187 + _("Cannot make %s relocation PC relative"),
188 + bfd_get_reloc_code_name (code));
192 /* To support a PC relative reloc, we used a Cygnus extension.
193 We check for that here to make sure that we don't let such a
194 Index: gas/config/tc-mips.h
195 ===================================================================
196 RCS file: /cvsroot/gcc/src-cvs/src/gas/config/tc-mips.h,v
197 retrieving revision 1.35
198 diff -u -r1.35 tc-mips.h
199 --- gas/config/tc-mips.h 29 Apr 2004 05:14:22 -0000 1.35
200 +++ gas/config/tc-mips.h 5 May 2004 17:38:51 -0000
203 #define MAX_MEM_FOR_RS_ALIGN_CODE (1 + 2)
205 +/* We permit PC relative difference expressions when generating
206 + embedded PIC code. */
207 +#define DIFF_EXPR_OK
209 /* Tell assembler that we have an itbl_mips.h header file to include. */
210 #define HAVE_ITBL_CPU