public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] MIPS/GAS: Disable PIC pseudo-ops in the MIPS16 mode
@ 2011-10-24 21:57 Maciej W. Rozycki
  2011-11-15 17:36 ` Richard Sandiford
  0 siblings, 1 reply; 5+ messages in thread
From: Maciej W. Rozycki @ 2011-10-24 21:57 UTC (permalink / raw)
  To: binutils; +Cc: Richard Sandiford

Hi,

 We don't really support the PIC pseudo-ops in the MIPS16 mode, and 
frankly I have doubts if they make sense in that mode in the first place 
-- we just don't have the complementing infrastructure, e.g. the MIPS16 
counterpart of the PIC JAL macro and the limitations of the instruction 
set likely make it infeasible.

 Worse yet, some of these pseudo-ops trigger assertion failures, e.g.:

$ cat cpload16.s
	.set	mips16
	.set	noreorder
foo:
	.cpload	$25
$ mips-linux-gnu-as -KPIC cpload16.s
cpload16.s: Assembler messages:
cpload16.s:4: Internal error!
Assertion failure in macro_build_lui at [...]/gas/config/tc-mips.c line 5284.
Please report this bug.
$

so let's just disable them all altogether.

 Regression-tested successfully, for the mips-linux-gnu and mips-sde-elf 
targets.  OK to apply?

2011-10-24  Maciej W. Rozycki  <macro@codesourcery.com>

	gas/
	* config/tc-mips.c (s_cpload, s_cpsetup): Fail if MIPS16 mode.
	(s_cplocal, s_cprestore, s_cpreturn): Likewise.

  Maciej

binutils-gas-cpmips16-fix.diff
Index: binutils-fsf-trunk-quilt/gas/config/tc-mips.c
===================================================================
--- binutils-fsf-trunk-quilt.orig/gas/config/tc-mips.c	2011-10-24 22:15:38.555969862 +0100
+++ binutils-fsf-trunk-quilt/gas/config/tc-mips.c	2011-10-24 22:15:38.735905037 +0100
@@ -16315,6 +16315,9 @@ s_cpload (int ignore ATTRIBUTE_UNUSED)
       return;
     }
 
+  if (mips_opts.mips16)
+    as_bad (_("%s not supported in MIPS16 mode"), ".cpload");
+
   /* .cpload should be in a .set noreorder section.  */
   if (mips_opts.noreorder == 0)
     as_warn (_(".cpload not in noreorder section"));
@@ -16381,6 +16384,9 @@ s_cpsetup (int ignore ATTRIBUTE_UNUSED)
       return;
     }
 
+  if (mips_opts.mips16)
+    as_bad (_("%s not supported in MIPS16 mode"), ".cpsetup");
+
   reg1 = tc_get_register (0);
   SKIP_WHITESPACE ();
   if (*input_line_pointer != ',')
@@ -16473,6 +16479,9 @@ s_cplocal (int ignore ATTRIBUTE_UNUSED)
       return;
     }
 
+  if (mips_opts.mips16)
+    as_bad (_("%s not supported in MIPS16 mode"), ".cplocal");
+
   mips_gp_register = tc_get_register (0);
   demand_empty_rest_of_line ();
 }
@@ -16494,6 +16503,9 @@ s_cprestore (int ignore ATTRIBUTE_UNUSED
       return;
     }
 
+  if (mips_opts.mips16)
+    as_bad (_("%s not supported in MIPS16 mode"), ".cprestore");
+
   mips_cprestore_offset = get_absolute_expression ();
   mips_cprestore_valid = 1;
 
@@ -16530,6 +16542,9 @@ s_cpreturn (int ignore ATTRIBUTE_UNUSED)
       return;
     }
 
+  if (mips_opts.mips16)
+    as_bad (_("%s not supported in MIPS16 mode"), ".cpreturn");
+
   macro_start ();
   if (mips_cpreturn_register == -1)
     {

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2012-08-13 14:10 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-10-24 21:57 [PATCH] MIPS/GAS: Disable PIC pseudo-ops in the MIPS16 mode Maciej W. Rozycki
2011-11-15 17:36 ` Richard Sandiford
2012-08-09 12:06   ` Maciej W. Rozycki
2012-08-13  3:49     ` Richard Sandiford
2012-08-13 14:10       ` Maciej W. Rozycki

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).