public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
From: "Maciej W. Rozycki" <macro@codesourcery.com>
To: Richard Sandiford <rdsandiford@googlemail.com>
Cc: <binutils@sourceware.org>
Subject: Re: [PATCH] MIPS/GAS: Disable PIC pseudo-ops in the MIPS16 mode
Date: Thu, 09 Aug 2012 12:06:00 -0000	[thread overview]
Message-ID: <alpine.DEB.1.10.1208090040170.20608@tp.orcam.me.uk> (raw)
In-Reply-To: <87ipmluw4g.fsf@firetop.home>

On Tue, 15 Nov 2011, Richard Sandiford wrote:

> > 	gas/
> > 	* config/tc-mips.c (s_cpload, s_cpsetup): Fail if MIPS16 mode.
> > 	(s_cplocal, s_cprestore, s_cpreturn): Likewise.
> 
> I think these as_bad()s should be followed by a "return;".  OK with
> that change.

 That results in 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: Error: .cpload not supported in MIPS16 mode
cpload16.s:4: Error: unknown opcode `$25'
$ 

 I have updated the patch as follows, this now just discards any following 
arguments.  I think there's little sense in bending backwards and parsing 
them properly, we don't do that for some other cases either -- see 
existing code nearby (that however uses s_ignore instead for a reason 
unknown to me, and) that doesn't even bail out (also for unknown reason -- 
I find it silly as finding these macros in non-PIC or wrong-ABI code is 
usually a sign of a user error).

 No regressions in the 23 MIPS targets.  OK to apply?

2012-08-09  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	2012-08-09 00:44:38.000000000 +0100
+++ binutils-fsf-trunk-quilt/gas/config/tc-mips.c	2012-08-09 00:56:48.261195291 +0100
@@ -16439,6 +16439,13 @@ s_cpload (int ignore ATTRIBUTE_UNUSED)
       return;
     }
 
+  if (mips_opts.mips16)
+    {
+      as_bad (_("%s not supported in MIPS16 mode"), ".cpload");
+      ignore_rest_of_line ();
+      return;
+    }
+
   /* .cpload should be in a .set noreorder section.  */
   if (mips_opts.noreorder == 0)
     as_warn (_(".cpload not in noreorder section"));
@@ -16505,6 +16512,13 @@ s_cpsetup (int ignore ATTRIBUTE_UNUSED)
       return;
     }
 
+  if (mips_opts.mips16)
+    {
+      as_bad (_("%s not supported in MIPS16 mode"), ".cpsetup");
+      ignore_rest_of_line ();
+      return;
+    }
+
   reg1 = tc_get_register (0);
   SKIP_WHITESPACE ();
   if (*input_line_pointer != ',')
@@ -16597,6 +16611,13 @@ s_cplocal (int ignore ATTRIBUTE_UNUSED)
       return;
     }
 
+  if (mips_opts.mips16)
+    {
+      as_bad (_("%s not supported in MIPS16 mode"), ".cplocal");
+      ignore_rest_of_line ();
+      return;
+    }
+
   mips_gp_register = tc_get_register (0);
   demand_empty_rest_of_line ();
 }
@@ -16618,6 +16639,13 @@ s_cprestore (int ignore ATTRIBUTE_UNUSED
       return;
     }
 
+  if (mips_opts.mips16)
+    {
+      as_bad (_("%s not supported in MIPS16 mode"), ".cprestore");
+      ignore_rest_of_line ();
+      return;
+    }
+
   mips_cprestore_offset = get_absolute_expression ();
   mips_cprestore_valid = 1;
 
@@ -16654,6 +16682,13 @@ s_cpreturn (int ignore ATTRIBUTE_UNUSED)
       return;
     }
 
+  if (mips_opts.mips16)
+    {
+      as_bad (_("%s not supported in MIPS16 mode"), ".cpreturn");
+      ignore_rest_of_line ();
+      return;
+    }
+
   macro_start ();
   if (mips_cpreturn_register == -1)
     {

  reply	other threads:[~2012-08-09 11:19 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-10-24 21:57 Maciej W. Rozycki
2011-11-15 17:36 ` Richard Sandiford
2012-08-09 12:06   ` Maciej W. Rozycki [this message]
2012-08-13  3:49     ` Richard Sandiford
2012-08-13 14:10       ` Maciej W. Rozycki

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=alpine.DEB.1.10.1208090040170.20608@tp.orcam.me.uk \
    --to=macro@codesourcery.com \
    --cc=binutils@sourceware.org \
    --cc=rdsandiford@googlemail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).