]> git.pld-linux.org Git - packages/crossmipsel-binutils.git/blob - binutils-mips-relocs.patch
- updated gettext BR
[packages/crossmipsel-binutils.git] / binutils-mips-relocs.patch
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
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 +
104 --- gas/config/tc-mips.c.orig   2006-07-15 20:23:51.000000000 +0200
105 +++ gas/config/tc-mips.c        2006-07-17 10:51:06.164440000 +0200
106 @@ -11736,8 +11736,6 @@
107  
108    buf = (bfd_byte *) (fixP->fx_frag->fr_literal + fixP->fx_where);
109  
110 -  assert (!fixP->fx_pcrel || fixP->fx_r_type == BFD_RELOC_16_PCREL_S2);
111 -
112    /* Don't treat parts of a composite relocation as done.  There are two
113       reasons for this:
114  
115 @@ -13562,8 +13560,6 @@
116  
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 @@ -13588,6 +13584,34 @@
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  
157    reloc->howto = bfd_reloc_type_lookup (stdoutput, code);
158    if (reloc->howto == NULL)
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  
This page took 0.066797 seconds and 3 git commands to generate.