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)
{
next prev parent 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).