All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] binutils: backport patch to fix mipsel (malta) kernel compile
@ 2016-06-24 10:59 André Draszik
  0 siblings, 0 replies; only message in thread
From: André Draszik @ 2016-06-24 10:59 UTC (permalink / raw)
  To: openembedded-core

From: André Draszik <adraszik@tycoint.com>

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.

Signed-off-by: André Draszik <adraszik@tycoint.com>
---
 meta/recipes-devtools/binutils/binutils-2.26.inc   |   1 +
 ...ISA-override-not-lifting-ABI-restrictions.patch | 273 +++++++++++++++++++++
 2 files changed, 274 insertions(+)
 create mode 100644 meta/recipes-devtools/binutils/binutils/MIPS-GAS-Fix-an-ISA-override-not-lifting-ABI-restrictions.patch

diff --git a/meta/recipes-devtools/binutils/binutils-2.26.inc b/meta/recipes-devtools/binutils/binutils-2.26.inc
index 6d77452..04e0102 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 = "\
      file://0013-Fix-GOT-address-computations-in-initial-PLT-entries-.patch \
      file://0014-Correct-nios2-_gp-address-computation.patch \
      file://0015-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch \
+     file://MIPS-GAS-Fix-an-ISA-override-not-lifting-ABI-restrictions.patch \
 "
 S  = "${WORKDIR}/git"
 
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 0000000..b8c65be
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/MIPS-GAS-Fix-an-ISA-override-not-lifting-ABI-restrictions.patch
@@ -0,0 +1,273 @@
+From 22522f880a8e17a17c4f195796ec89caece7652b Mon Sep 17 00:00:00 2001
+From: Maciej W. Rozycki <macro@imgtec.com>
+Date: Fri, 22 Apr 2016 01:04:52 +0100
+Subject: [PATCH] MIPS/GAS: Fix an ISA override not lifting ABI restrictions
+
+Correct a regression introduced with commit 919731affbef ("Add MIPS
+.module directive") causing code like:
+
+	.set	mips3
+	dli	$2, 0x9000000080000000
+
+to fail assembly with the following error message produced:
+
+Error: number (0x9000000080000000) larger than 32 bits
+
+if built with `mips3' selected as the global ISA (e.g. `-march=mips3').
+This is because a `.set' directive doing an ISA override does not lift
+the ABI restriction on register sizes if the ISA remains unchanged.
+Previously the directive always set register sizes from the ISA chosen,
+which is what some code expects.  Restore the old semantics then.
+
+	gas/
+	* config/tc-mips.c (code_option_type): New enum.
+	(parse_code_option): Return status indicating option type.
+	(s_mipsset): Update `parse_code_option' call site accordingly.
+	Always set register sizes from the ISA with ISA overrides.
+	(s_module): Update `parse_code_option' call site.
+	* testsuite/gas/mips/isa-override-1.d: New test.
+	* testsuite/gas/mips/micromips@isa-override-1.d: New test.
+	* testsuite/gas/mips/mips1@isa-override-1.d: New test.
+	* testsuite/gas/mips/mips2@isa-override-1.d: New test.
+	* testsuite/gas/mips/mips32@isa-override-1.d: New test.
+	* testsuite/gas/mips/mips32r2@isa-override-1.d: New test.
+	* testsuite/gas/mips/mips32r3@isa-override-1.d: New test.
+	* testsuite/gas/mips/mips32r5@isa-override-1.d: New test.
+	* testsuite/gas/mips/mips32r6@isa-override-1.d: New test.
+	* testsuite/gas/mips/mips64r2@isa-override-1.d: New test.
+	* testsuite/gas/mips/mips64r3@isa-override-1.d: New test.
+	* testsuite/gas/mips/mips64r5@isa-override-1.d: New test.
+	* testsuite/gas/mips/mips64r6@isa-override-1.d: New test.
+	* testsuite/gas/mips/r3000@isa-override-1.d: New test.
+	* testsuite/gas/mips/r3900@isa-override-1.d: New test.
+	* testsuite/gas/mips/r5900@isa-override-1.d: New test.
+	* testsuite/gas/mips/octeon@isa-override-1.d: New test.
+	* testsuite/gas/mips/octeon3@isa-override-1.d: New test.
+	* testsuite/gas/mips/isa-override-2.l: New list test.
+	* testsuite/gas/mips/mips1@isa-override-2.l: New list test.
+	* testsuite/gas/mips/mips2@isa-override-2.l: New list test.
+	* testsuite/gas/mips/mips32@isa-override-2.l: New list test.
+	* testsuite/gas/mips/mips32r2@isa-override-2.l: New list test.
+	* testsuite/gas/mips/mips32r3@isa-override-2.l: New list test.
+	* testsuite/gas/mips/mips32r5@isa-override-2.l: New list test.
+	* testsuite/gas/mips/mips32r6@isa-override-2.l: New list test.
+	* testsuite/gas/mips/r3000@isa-override-2.l: New list test.
+	* testsuite/gas/mips/r3900@isa-override-2.l: New list test.
+	* testsuite/gas/mips/octeon3@isa-override-2.l: New list test.
+	* testsuite/gas/mips/octeon3@isa-override-1.l: New stderr
+	output.
+	* testsuite/gas/mips/isa-override-1.s: New test source.
+	* testsuite/gas/mips/r5900@isa-override-1.s: New test source.
+	* testsuite/gas/mips/isa-override-2.s: New test source.
+	* testsuite/gas/mips/mips1@isa-override-2.s: New test source.
+	* testsuite/gas/mips/mips2@isa-override-2.s: New test source.
+	* testsuite/gas/mips/mips32@isa-override-2.s: New test source.
+	* testsuite/gas/mips/mips32r2@isa-override-2.s: New test source.
+	* testsuite/gas/mips/mips32r3@isa-override-2.s: New test source.
+	* testsuite/gas/mips/mips32r5@isa-override-2.s: New test source.
+	* testsuite/gas/mips/mips32r6@isa-override-2.s: New test source.
+	* testsuite/gas/mips/r3000@isa-override-2.s: New test source.
+	* testsuite/gas/mips/r3900@isa-override-2.s: New test source.
+	* testsuite/gas/mips/octeon3@isa-override-2.s: New test source.
+	* testsuite/gas/mips/mips.exp: Run the new tests.
+---
+Upstream-Status: Backport
+http://www.serverphorums.com/read.php?12,1466357
+https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=22522f880a8e17a17c4f195796ec89caece7652b
+
+ gas/ChangeLog                                     |   53 +++++++++++++++++++++
+ gas/config/tc-mips.c                              |   42 +++++++++++++---
+ gas/testsuite/gas/mips/isa-override-1.d           |   49 +++++++++++++++++++
+ gas/testsuite/gas/mips/isa-override-1.s           |   31 ++++++++++++
+ gas/testsuite/gas/mips/isa-override-2.l           |    4 ++
+ gas/testsuite/gas/mips/isa-override-2.s           |   18 +++++++
+ gas/testsuite/gas/mips/micromips@isa-override-1.d |   50 +++++++++++++++++++
+ gas/testsuite/gas/mips/mips.exp                   |    3 +
+ gas/testsuite/gas/mips/mips1@isa-override-1.d     |   53 +++++++++++++++++++++
+ gas/testsuite/gas/mips/mips1@isa-override-2.l     |    4 ++
+ gas/testsuite/gas/mips/mips1@isa-override-2.s     |   18 +++++++
+ gas/testsuite/gas/mips/mips2@isa-override-1.d     |   50 +++++++++++++++++++
+ gas/testsuite/gas/mips/mips2@isa-override-2.l     |    4 ++
+ gas/testsuite/gas/mips/mips2@isa-override-2.s     |   18 +++++++
+ gas/testsuite/gas/mips/mips32@isa-override-1.d    |    5 ++
+ gas/testsuite/gas/mips/mips32@isa-override-2.l    |    4 ++
+ gas/testsuite/gas/mips/mips32@isa-override-2.s    |   18 +++++++
+ gas/testsuite/gas/mips/mips32r2@isa-override-1.d  |   50 +++++++++++++++++++
+ gas/testsuite/gas/mips/mips32r2@isa-override-2.l  |    4 ++
+ gas/testsuite/gas/mips/mips32r2@isa-override-2.s  |   18 +++++++
+ gas/testsuite/gas/mips/mips32r3@isa-override-1.d  |    5 ++
+ gas/testsuite/gas/mips/mips32r3@isa-override-2.l  |    4 ++
+ gas/testsuite/gas/mips/mips32r3@isa-override-2.s  |   18 +++++++
+ gas/testsuite/gas/mips/mips32r5@isa-override-1.d  |    5 ++
+ gas/testsuite/gas/mips/mips32r5@isa-override-2.l  |    4 ++
+ gas/testsuite/gas/mips/mips32r5@isa-override-2.s  |   18 +++++++
+ gas/testsuite/gas/mips/mips32r6@isa-override-1.d  |    5 ++
+ gas/testsuite/gas/mips/mips32r6@isa-override-2.l  |    4 ++
+ gas/testsuite/gas/mips/mips32r6@isa-override-2.s  |   18 +++++++
+ gas/testsuite/gas/mips/mips64r2@isa-override-1.d  |   50 +++++++++++++++++++
+ gas/testsuite/gas/mips/mips64r3@isa-override-1.d  |    5 ++
+ gas/testsuite/gas/mips/mips64r5@isa-override-1.d  |    5 ++
+ gas/testsuite/gas/mips/mips64r6@isa-override-1.d  |    5 ++
+ gas/testsuite/gas/mips/octeon3@isa-override-1.d   |    6 ++
+ gas/testsuite/gas/mips/octeon3@isa-override-1.l   |    2 +
+ gas/testsuite/gas/mips/octeon3@isa-override-2.l   |    5 ++
+ gas/testsuite/gas/mips/octeon3@isa-override-2.s   |   18 +++++++
+ gas/testsuite/gas/mips/octeon@isa-override-1.d    |    5 ++
+ gas/testsuite/gas/mips/r3000@isa-override-1.d     |    5 ++
+ gas/testsuite/gas/mips/r3000@isa-override-2.l     |    4 ++
+ gas/testsuite/gas/mips/r3000@isa-override-2.s     |   18 +++++++
+ gas/testsuite/gas/mips/r3900@isa-override-1.d     |    5 ++
+ gas/testsuite/gas/mips/r3900@isa-override-2.l     |    4 ++
+ gas/testsuite/gas/mips/r3900@isa-override-2.s     |   18 +++++++
+ gas/testsuite/gas/mips/r5900@isa-override-1.d     |   28 +++++++++++
+ gas/testsuite/gas/mips/r5900@isa-override-1.s     |   23 +++++++++
+ 46 files changed, 775 insertions(+), 8 deletions(-)
+ create mode 100644 gas/testsuite/gas/mips/isa-override-1.d
+ create mode 100644 gas/testsuite/gas/mips/isa-override-1.s
+ create mode 100644 gas/testsuite/gas/mips/isa-override-2.l
+ create mode 100644 gas/testsuite/gas/mips/isa-override-2.s
+ create mode 100644 gas/testsuite/gas/mips/micromips@isa-override-1.d
+ create mode 100644 gas/testsuite/gas/mips/mips1@isa-override-1.d
+ create mode 100644 gas/testsuite/gas/mips/mips1@isa-override-2.l
+ create mode 100644 gas/testsuite/gas/mips/mips1@isa-override-2.s
+ create mode 100644 gas/testsuite/gas/mips/mips2@isa-override-1.d
+ create mode 100644 gas/testsuite/gas/mips/mips2@isa-override-2.l
+ create mode 100644 gas/testsuite/gas/mips/mips2@isa-override-2.s
+ create mode 100644 gas/testsuite/gas/mips/mips32@isa-override-1.d
+ create mode 100644 gas/testsuite/gas/mips/mips32@isa-override-2.l
+ create mode 100644 gas/testsuite/gas/mips/mips32@isa-override-2.s
+ create mode 100644 gas/testsuite/gas/mips/mips32r2@isa-override-1.d
+ create mode 100644 gas/testsuite/gas/mips/mips32r2@isa-override-2.l
+ create mode 100644 gas/testsuite/gas/mips/mips32r2@isa-override-2.s
+ create mode 100644 gas/testsuite/gas/mips/mips32r3@isa-override-1.d
+ create mode 100644 gas/testsuite/gas/mips/mips32r3@isa-override-2.l
+ create mode 100644 gas/testsuite/gas/mips/mips32r3@isa-override-2.s
+ create mode 100644 gas/testsuite/gas/mips/mips32r5@isa-override-1.d
+ create mode 100644 gas/testsuite/gas/mips/mips32r5@isa-override-2.l
+ create mode 100644 gas/testsuite/gas/mips/mips32r5@isa-override-2.s
+ create mode 100644 gas/testsuite/gas/mips/mips32r6@isa-override-1.d
+ create mode 100644 gas/testsuite/gas/mips/mips32r6@isa-override-2.l
+ create mode 100644 gas/testsuite/gas/mips/mips32r6@isa-override-2.s
+ create mode 100644 gas/testsuite/gas/mips/mips64r2@isa-override-1.d
+ create mode 100644 gas/testsuite/gas/mips/mips64r3@isa-override-1.d
+ create mode 100644 gas/testsuite/gas/mips/mips64r5@isa-override-1.d
+ create mode 100644 gas/testsuite/gas/mips/mips64r6@isa-override-1.d
+ create mode 100644 gas/testsuite/gas/mips/octeon3@isa-override-1.d
+ create mode 100644 gas/testsuite/gas/mips/octeon3@isa-override-1.l
+ create mode 100644 gas/testsuite/gas/mips/octeon3@isa-override-2.l
+ create mode 100644 gas/testsuite/gas/mips/octeon3@isa-override-2.s
+ create mode 100644 gas/testsuite/gas/mips/octeon@isa-override-1.d
+ create mode 100644 gas/testsuite/gas/mips/r3000@isa-override-1.d
+ create mode 100644 gas/testsuite/gas/mips/r3000@isa-override-2.l
+ create mode 100644 gas/testsuite/gas/mips/r3000@isa-override-2.s
+ create mode 100644 gas/testsuite/gas/mips/r3900@isa-override-1.d
+ create mode 100644 gas/testsuite/gas/mips/r3900@isa-override-2.l
+ create mode 100644 gas/testsuite/gas/mips/r3900@isa-override-2.s
+ create mode 100644 gas/testsuite/gas/mips/r5900@isa-override-1.d
+ create mode 100644 gas/testsuite/gas/mips/r5900@isa-override-1.s
+
+diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c
+index bfc639e..daceef1 100644
+--- a/gas/config/tc-mips.c
++++ b/gas/config/tc-mips.c
+@@ -15513,10 +15513,29 @@ struct mips_option_stack
+ 
+ static struct mips_option_stack *mips_opts_stack;
+ 
+-static bfd_boolean
++/* Return status for .set/.module option handling.  */
++
++enum code_option_type
++{
++  /* Unrecognized option.  */
++  OPTION_TYPE_BAD = -1,
++
++  /* Ordinary option.  */
++  OPTION_TYPE_NORMAL,
++
++  /* ISA changing option.  */
++  OPTION_TYPE_ISA
++};
++
++/* Handle common .set/.module options.  Return status indicating option
++   type.  */
++
++static enum code_option_type
+ parse_code_option (char * name)
+ {
++  bfd_boolean isa_set = FALSE;
+   const struct mips_ase *ase;
++
+   if (strncmp (name, "at=", 3) == 0)
+     {
+       char *s = name + 3;
+@@ -15589,6 +15608,7 @@ parse_code_option (char * name)
+ 	    {
+ 	      mips_opts.arch = p->cpu;
+ 	      mips_opts.isa = p->isa;
++	      isa_set = TRUE;
+ 	    }
+ 	}
+       else if (strncmp (name, "mips", 4) == 0)
+@@ -15602,6 +15622,7 @@ parse_code_option (char * name)
+ 	    {
+ 	      mips_opts.arch = p->cpu;
+ 	      mips_opts.isa = p->isa;
++	      isa_set = TRUE;
+ 	    }
+ 	}
+       else
+@@ -15620,8 +15641,9 @@ parse_code_option (char * name)
+   else if (strcmp (name, "nosym32") == 0)
+     mips_opts.sym32 = FALSE;
+   else
+-    return FALSE;
+-  return TRUE;
++    return OPTION_TYPE_BAD;
++
++  return isa_set ? OPTION_TYPE_ISA : OPTION_TYPE_NORMAL;
+ }
+ 
+ /* Handle the .set pseudo-op.  */
+@@ -15629,8 +15651,8 @@ parse_code_option (char * name)
+ static void
+ s_mipsset (int x ATTRIBUTE_UNUSED)
+ {
++  enum code_option_type type = OPTION_TYPE_NORMAL;
+   char *name = input_line_pointer, ch;
+-  int prev_isa = mips_opts.isa;
+ 
+   file_mips_check_options ();
+ 
+@@ -15707,12 +15729,16 @@ s_mipsset (int x ATTRIBUTE_UNUSED)
+ 	  free (s);
+ 	}
+     }
+-  else if (!parse_code_option (name))
+-    as_warn (_("tried to set unrecognized symbol: %s\n"), name);
++  else
++    {
++      type = parse_code_option (name);
++      if (type == OPTION_TYPE_BAD)
++	as_warn (_("tried to set unrecognized symbol: %s\n"), name);
++    }
+ 
+   /* The use of .set [arch|cpu]= historically 'fixes' the width of gp and fp
+      registers based on what is supported by the arch/cpu.  */
+-  if (mips_opts.isa != prev_isa)
++  if (type == OPTION_TYPE_ISA)
+     {
+       switch (mips_opts.isa)
+ 	{
+@@ -15779,7 +15805,7 @@ s_module (int ignore ATTRIBUTE_UNUSED)
+ 
+   if (!file_mips_opts_checked)
+     {
+-      if (!parse_code_option (name))
++      if (parse_code_option (name) == OPTION_TYPE_BAD)
+ 	as_bad (_(".module used with unrecognized symbol: %s\n"), name);
+ 
+       /* Update module level settings from mips_opts.  */
+-- 
+1.7.1
+
-- 
2.8.1



^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2016-06-24 10:59 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-24 10:59 [PATCH] binutils: backport patch to fix mipsel (malta) kernel compile André Draszik

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.