summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/binutils
diff options
context:
space:
mode:
authorAndré Draszik <adraszik@tycoint.com>2016-06-24 11:59:40 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-07-01 16:22:44 +0100
commit1b29aff0e0ca00c9125e29f8d229ec22ef0350d8 (patch)
tree5d006f7d13e6bacbaa3f78f02f1a4d471f7cd148 /meta/recipes-devtools/binutils
parentaa9fb3f5d4471fae734b136c9f5913bf11c8f9cd (diff)
downloadpoky-1b29aff0e0ca00c9125e29f8d229ec22ef0350d8.tar.gz
binutils: backport patch to fix mipsel (malta) kernel compile
This fixes the following compilation error when building a mipsel yocto kernel for qemu: | CC arch/mips/mm/sc-ip22.o | {standard input}: Assembler messages: | {standard input}:128: Error: number (0x9000000080000000) larger than 32 bits | {standard input}:151: Error: number (0x9000000080000000) larger than 32 bits | {standard input}:186: Error: number (0x9000000080000000) larger than 32 bits We leave out the testsuite bits and the changelog in this backport. (From OE-Core rev: 8b378a17bf6d6c43f097b9df491e5c6ec59bf316) Signed-off-by: André Draszik <adraszik@tycoint.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools/binutils')
-rw-r--r--meta/recipes-devtools/binutils/binutils-2.26.inc1
-rw-r--r--meta/recipes-devtools/binutils/binutils/MIPS-GAS-Fix-an-ISA-override-not-lifting-ABI-restrictions.patch273
2 files changed, 274 insertions, 0 deletions
diff --git a/meta/recipes-devtools/binutils/binutils-2.26.inc b/meta/recipes-devtools/binutils/binutils-2.26.inc
index 6d77452f5f..04e0102b6e 100644
--- a/meta/recipes-devtools/binutils/binutils-2.26.inc
+++ b/meta/recipes-devtools/binutils/binutils-2.26.inc
@@ -35,6 +35,7 @@ SRC_URI = "\
35 file://0013-Fix-GOT-address-computations-in-initial-PLT-entries-.patch \ 35 file://0013-Fix-GOT-address-computations-in-initial-PLT-entries-.patch \
36 file://0014-Correct-nios2-_gp-address-computation.patch \ 36 file://0014-Correct-nios2-_gp-address-computation.patch \
37 file://0015-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch \ 37 file://0015-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch \
38 file://MIPS-GAS-Fix-an-ISA-override-not-lifting-ABI-restrictions.patch \
38" 39"
39S = "${WORKDIR}/git" 40S = "${WORKDIR}/git"
40 41
diff --git a/meta/recipes-devtools/binutils/binutils/MIPS-GAS-Fix-an-ISA-override-not-lifting-ABI-restrictions.patch b/meta/recipes-devtools/binutils/binutils/MIPS-GAS-Fix-an-ISA-override-not-lifting-ABI-restrictions.patch
new file mode 100644
index 0000000000..b8c65be7ff
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/MIPS-GAS-Fix-an-ISA-override-not-lifting-ABI-restrictions.patch
@@ -0,0 +1,273 @@
1From 22522f880a8e17a17c4f195796ec89caece7652b Mon Sep 17 00:00:00 2001
2From: Maciej W. Rozycki <macro@imgtec.com>
3Date: Fri, 22 Apr 2016 01:04:52 +0100
4Subject: [PATCH] MIPS/GAS: Fix an ISA override not lifting ABI restrictions
5
6Correct a regression introduced with commit 919731affbef ("Add MIPS
7.module directive") causing code like:
8
9 .set mips3
10 dli $2, 0x9000000080000000
11
12to fail assembly with the following error message produced:
13
14Error: number (0x9000000080000000) larger than 32 bits
15
16if built with `mips3' selected as the global ISA (e.g. `-march=mips3').
17This is because a `.set' directive doing an ISA override does not lift
18the ABI restriction on register sizes if the ISA remains unchanged.
19Previously the directive always set register sizes from the ISA chosen,
20which is what some code expects. Restore the old semantics then.
21
22 gas/
23 * config/tc-mips.c (code_option_type): New enum.
24 (parse_code_option): Return status indicating option type.
25 (s_mipsset): Update `parse_code_option' call site accordingly.
26 Always set register sizes from the ISA with ISA overrides.
27 (s_module): Update `parse_code_option' call site.
28 * testsuite/gas/mips/isa-override-1.d: New test.
29 * testsuite/gas/mips/micromips@isa-override-1.d: New test.
30 * testsuite/gas/mips/mips1@isa-override-1.d: New test.
31 * testsuite/gas/mips/mips2@isa-override-1.d: New test.
32 * testsuite/gas/mips/mips32@isa-override-1.d: New test.
33 * testsuite/gas/mips/mips32r2@isa-override-1.d: New test.
34 * testsuite/gas/mips/mips32r3@isa-override-1.d: New test.
35 * testsuite/gas/mips/mips32r5@isa-override-1.d: New test.
36 * testsuite/gas/mips/mips32r6@isa-override-1.d: New test.
37 * testsuite/gas/mips/mips64r2@isa-override-1.d: New test.
38 * testsuite/gas/mips/mips64r3@isa-override-1.d: New test.
39 * testsuite/gas/mips/mips64r5@isa-override-1.d: New test.
40 * testsuite/gas/mips/mips64r6@isa-override-1.d: New test.
41 * testsuite/gas/mips/r3000@isa-override-1.d: New test.
42 * testsuite/gas/mips/r3900@isa-override-1.d: New test.
43 * testsuite/gas/mips/r5900@isa-override-1.d: New test.
44 * testsuite/gas/mips/octeon@isa-override-1.d: New test.
45 * testsuite/gas/mips/octeon3@isa-override-1.d: New test.
46 * testsuite/gas/mips/isa-override-2.l: New list test.
47 * testsuite/gas/mips/mips1@isa-override-2.l: New list test.
48 * testsuite/gas/mips/mips2@isa-override-2.l: New list test.
49 * testsuite/gas/mips/mips32@isa-override-2.l: New list test.
50 * testsuite/gas/mips/mips32r2@isa-override-2.l: New list test.
51 * testsuite/gas/mips/mips32r3@isa-override-2.l: New list test.
52 * testsuite/gas/mips/mips32r5@isa-override-2.l: New list test.
53 * testsuite/gas/mips/mips32r6@isa-override-2.l: New list test.
54 * testsuite/gas/mips/r3000@isa-override-2.l: New list test.
55 * testsuite/gas/mips/r3900@isa-override-2.l: New list test.
56 * testsuite/gas/mips/octeon3@isa-override-2.l: New list test.
57 * testsuite/gas/mips/octeon3@isa-override-1.l: New stderr
58 output.
59 * testsuite/gas/mips/isa-override-1.s: New test source.
60 * testsuite/gas/mips/r5900@isa-override-1.s: New test source.
61 * testsuite/gas/mips/isa-override-2.s: New test source.
62 * testsuite/gas/mips/mips1@isa-override-2.s: New test source.
63 * testsuite/gas/mips/mips2@isa-override-2.s: New test source.
64 * testsuite/gas/mips/mips32@isa-override-2.s: New test source.
65 * testsuite/gas/mips/mips32r2@isa-override-2.s: New test source.
66 * testsuite/gas/mips/mips32r3@isa-override-2.s: New test source.
67 * testsuite/gas/mips/mips32r5@isa-override-2.s: New test source.
68 * testsuite/gas/mips/mips32r6@isa-override-2.s: New test source.
69 * testsuite/gas/mips/r3000@isa-override-2.s: New test source.
70 * testsuite/gas/mips/r3900@isa-override-2.s: New test source.
71 * testsuite/gas/mips/octeon3@isa-override-2.s: New test source.
72 * testsuite/gas/mips/mips.exp: Run the new tests.
73---
74Upstream-Status: Backport
75http://www.serverphorums.com/read.php?12,1466357
76https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=22522f880a8e17a17c4f195796ec89caece7652b
77
78 gas/ChangeLog | 53 +++++++++++++++++++++
79 gas/config/tc-mips.c | 42 +++++++++++++---
80 gas/testsuite/gas/mips/isa-override-1.d | 49 +++++++++++++++++++
81 gas/testsuite/gas/mips/isa-override-1.s | 31 ++++++++++++
82 gas/testsuite/gas/mips/isa-override-2.l | 4 ++
83 gas/testsuite/gas/mips/isa-override-2.s | 18 +++++++
84 gas/testsuite/gas/mips/micromips@isa-override-1.d | 50 +++++++++++++++++++
85 gas/testsuite/gas/mips/mips.exp | 3 +
86 gas/testsuite/gas/mips/mips1@isa-override-1.d | 53 +++++++++++++++++++++
87 gas/testsuite/gas/mips/mips1@isa-override-2.l | 4 ++
88 gas/testsuite/gas/mips/mips1@isa-override-2.s | 18 +++++++
89 gas/testsuite/gas/mips/mips2@isa-override-1.d | 50 +++++++++++++++++++
90 gas/testsuite/gas/mips/mips2@isa-override-2.l | 4 ++
91 gas/testsuite/gas/mips/mips2@isa-override-2.s | 18 +++++++
92 gas/testsuite/gas/mips/mips32@isa-override-1.d | 5 ++
93 gas/testsuite/gas/mips/mips32@isa-override-2.l | 4 ++
94 gas/testsuite/gas/mips/mips32@isa-override-2.s | 18 +++++++
95 gas/testsuite/gas/mips/mips32r2@isa-override-1.d | 50 +++++++++++++++++++
96 gas/testsuite/gas/mips/mips32r2@isa-override-2.l | 4 ++
97 gas/testsuite/gas/mips/mips32r2@isa-override-2.s | 18 +++++++
98 gas/testsuite/gas/mips/mips32r3@isa-override-1.d | 5 ++
99 gas/testsuite/gas/mips/mips32r3@isa-override-2.l | 4 ++
100 gas/testsuite/gas/mips/mips32r3@isa-override-2.s | 18 +++++++
101 gas/testsuite/gas/mips/mips32r5@isa-override-1.d | 5 ++
102 gas/testsuite/gas/mips/mips32r5@isa-override-2.l | 4 ++
103 gas/testsuite/gas/mips/mips32r5@isa-override-2.s | 18 +++++++
104 gas/testsuite/gas/mips/mips32r6@isa-override-1.d | 5 ++
105 gas/testsuite/gas/mips/mips32r6@isa-override-2.l | 4 ++
106 gas/testsuite/gas/mips/mips32r6@isa-override-2.s | 18 +++++++
107 gas/testsuite/gas/mips/mips64r2@isa-override-1.d | 50 +++++++++++++++++++
108 gas/testsuite/gas/mips/mips64r3@isa-override-1.d | 5 ++
109 gas/testsuite/gas/mips/mips64r5@isa-override-1.d | 5 ++
110 gas/testsuite/gas/mips/mips64r6@isa-override-1.d | 5 ++
111 gas/testsuite/gas/mips/octeon3@isa-override-1.d | 6 ++
112 gas/testsuite/gas/mips/octeon3@isa-override-1.l | 2 +
113 gas/testsuite/gas/mips/octeon3@isa-override-2.l | 5 ++
114 gas/testsuite/gas/mips/octeon3@isa-override-2.s | 18 +++++++
115 gas/testsuite/gas/mips/octeon@isa-override-1.d | 5 ++
116 gas/testsuite/gas/mips/r3000@isa-override-1.d | 5 ++
117 gas/testsuite/gas/mips/r3000@isa-override-2.l | 4 ++
118 gas/testsuite/gas/mips/r3000@isa-override-2.s | 18 +++++++
119 gas/testsuite/gas/mips/r3900@isa-override-1.d | 5 ++
120 gas/testsuite/gas/mips/r3900@isa-override-2.l | 4 ++
121 gas/testsuite/gas/mips/r3900@isa-override-2.s | 18 +++++++
122 gas/testsuite/gas/mips/r5900@isa-override-1.d | 28 +++++++++++
123 gas/testsuite/gas/mips/r5900@isa-override-1.s | 23 +++++++++
124 46 files changed, 775 insertions(+), 8 deletions(-)
125 create mode 100644 gas/testsuite/gas/mips/isa-override-1.d
126 create mode 100644 gas/testsuite/gas/mips/isa-override-1.s
127 create mode 100644 gas/testsuite/gas/mips/isa-override-2.l
128 create mode 100644 gas/testsuite/gas/mips/isa-override-2.s
129 create mode 100644 gas/testsuite/gas/mips/micromips@isa-override-1.d
130 create mode 100644 gas/testsuite/gas/mips/mips1@isa-override-1.d
131 create mode 100644 gas/testsuite/gas/mips/mips1@isa-override-2.l
132 create mode 100644 gas/testsuite/gas/mips/mips1@isa-override-2.s
133 create mode 100644 gas/testsuite/gas/mips/mips2@isa-override-1.d
134 create mode 100644 gas/testsuite/gas/mips/mips2@isa-override-2.l
135 create mode 100644 gas/testsuite/gas/mips/mips2@isa-override-2.s
136 create mode 100644 gas/testsuite/gas/mips/mips32@isa-override-1.d
137 create mode 100644 gas/testsuite/gas/mips/mips32@isa-override-2.l
138 create mode 100644 gas/testsuite/gas/mips/mips32@isa-override-2.s
139 create mode 100644 gas/testsuite/gas/mips/mips32r2@isa-override-1.d
140 create mode 100644 gas/testsuite/gas/mips/mips32r2@isa-override-2.l
141 create mode 100644 gas/testsuite/gas/mips/mips32r2@isa-override-2.s
142 create mode 100644 gas/testsuite/gas/mips/mips32r3@isa-override-1.d
143 create mode 100644 gas/testsuite/gas/mips/mips32r3@isa-override-2.l
144 create mode 100644 gas/testsuite/gas/mips/mips32r3@isa-override-2.s
145 create mode 100644 gas/testsuite/gas/mips/mips32r5@isa-override-1.d
146 create mode 100644 gas/testsuite/gas/mips/mips32r5@isa-override-2.l
147 create mode 100644 gas/testsuite/gas/mips/mips32r5@isa-override-2.s
148 create mode 100644 gas/testsuite/gas/mips/mips32r6@isa-override-1.d
149 create mode 100644 gas/testsuite/gas/mips/mips32r6@isa-override-2.l
150 create mode 100644 gas/testsuite/gas/mips/mips32r6@isa-override-2.s
151 create mode 100644 gas/testsuite/gas/mips/mips64r2@isa-override-1.d
152 create mode 100644 gas/testsuite/gas/mips/mips64r3@isa-override-1.d
153 create mode 100644 gas/testsuite/gas/mips/mips64r5@isa-override-1.d
154 create mode 100644 gas/testsuite/gas/mips/mips64r6@isa-override-1.d
155 create mode 100644 gas/testsuite/gas/mips/octeon3@isa-override-1.d
156 create mode 100644 gas/testsuite/gas/mips/octeon3@isa-override-1.l
157 create mode 100644 gas/testsuite/gas/mips/octeon3@isa-override-2.l
158 create mode 100644 gas/testsuite/gas/mips/octeon3@isa-override-2.s
159 create mode 100644 gas/testsuite/gas/mips/octeon@isa-override-1.d
160 create mode 100644 gas/testsuite/gas/mips/r3000@isa-override-1.d
161 create mode 100644 gas/testsuite/gas/mips/r3000@isa-override-2.l
162 create mode 100644 gas/testsuite/gas/mips/r3000@isa-override-2.s
163 create mode 100644 gas/testsuite/gas/mips/r3900@isa-override-1.d
164 create mode 100644 gas/testsuite/gas/mips/r3900@isa-override-2.l
165 create mode 100644 gas/testsuite/gas/mips/r3900@isa-override-2.s
166 create mode 100644 gas/testsuite/gas/mips/r5900@isa-override-1.d
167 create mode 100644 gas/testsuite/gas/mips/r5900@isa-override-1.s
168
169diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c
170index bfc639e..daceef1 100644
171--- a/gas/config/tc-mips.c
172+++ b/gas/config/tc-mips.c
173@@ -15513,10 +15513,29 @@ struct mips_option_stack
174
175 static struct mips_option_stack *mips_opts_stack;
176
177-static bfd_boolean
178+/* Return status for .set/.module option handling. */
179+
180+enum code_option_type
181+{
182+ /* Unrecognized option. */
183+ OPTION_TYPE_BAD = -1,
184+
185+ /* Ordinary option. */
186+ OPTION_TYPE_NORMAL,
187+
188+ /* ISA changing option. */
189+ OPTION_TYPE_ISA
190+};
191+
192+/* Handle common .set/.module options. Return status indicating option
193+ type. */
194+
195+static enum code_option_type
196 parse_code_option (char * name)
197 {
198+ bfd_boolean isa_set = FALSE;
199 const struct mips_ase *ase;
200+
201 if (strncmp (name, "at=", 3) == 0)
202 {
203 char *s = name + 3;
204@@ -15589,6 +15608,7 @@ parse_code_option (char * name)
205 {
206 mips_opts.arch = p->cpu;
207 mips_opts.isa = p->isa;
208+ isa_set = TRUE;
209 }
210 }
211 else if (strncmp (name, "mips", 4) == 0)
212@@ -15602,6 +15622,7 @@ parse_code_option (char * name)
213 {
214 mips_opts.arch = p->cpu;
215 mips_opts.isa = p->isa;
216+ isa_set = TRUE;
217 }
218 }
219 else
220@@ -15620,8 +15641,9 @@ parse_code_option (char * name)
221 else if (strcmp (name, "nosym32") == 0)
222 mips_opts.sym32 = FALSE;
223 else
224- return FALSE;
225- return TRUE;
226+ return OPTION_TYPE_BAD;
227+
228+ return isa_set ? OPTION_TYPE_ISA : OPTION_TYPE_NORMAL;
229 }
230
231 /* Handle the .set pseudo-op. */
232@@ -15629,8 +15651,8 @@ parse_code_option (char * name)
233 static void
234 s_mipsset (int x ATTRIBUTE_UNUSED)
235 {
236+ enum code_option_type type = OPTION_TYPE_NORMAL;
237 char *name = input_line_pointer, ch;
238- int prev_isa = mips_opts.isa;
239
240 file_mips_check_options ();
241
242@@ -15707,12 +15729,16 @@ s_mipsset (int x ATTRIBUTE_UNUSED)
243 free (s);
244 }
245 }
246- else if (!parse_code_option (name))
247- as_warn (_("tried to set unrecognized symbol: %s\n"), name);
248+ else
249+ {
250+ type = parse_code_option (name);
251+ if (type == OPTION_TYPE_BAD)
252+ as_warn (_("tried to set unrecognized symbol: %s\n"), name);
253+ }
254
255 /* The use of .set [arch|cpu]= historically 'fixes' the width of gp and fp
256 registers based on what is supported by the arch/cpu. */
257- if (mips_opts.isa != prev_isa)
258+ if (type == OPTION_TYPE_ISA)
259 {
260 switch (mips_opts.isa)
261 {
262@@ -15779,7 +15805,7 @@ s_module (int ignore ATTRIBUTE_UNUSED)
263
264 if (!file_mips_opts_checked)
265 {
266- if (!parse_code_option (name))
267+ if (parse_code_option (name) == OPTION_TYPE_BAD)
268 as_bad (_(".module used with unrecognized symbol: %s\n"), name);
269
270 /* Update module level settings from mips_opts. */
271--
2721.7.1
273