aboutsummaryrefslogtreecommitdiff
path: root/gas/config/rx-parse.y
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2015-04-09 12:48:37 +0100
committerNick Clifton <nickc@redhat.com>2015-04-09 12:48:37 +0100
commit3525236c57a64fdbb534671fd2b16f9f846d36f3 (patch)
tree9b1b9e0a444216011509526254fccedcf34ca1c5 /gas/config/rx-parse.y
parent5a2d4533e2b9cc9c069d47071013cb30f1e0fc7e (diff)
downloadgdb-3525236c57a64fdbb534671fd2b16f9f846d36f3.zip
gdb-3525236c57a64fdbb534671fd2b16f9f846d36f3.tar.gz
gdb-3525236c57a64fdbb534671fd2b16f9f846d36f3.tar.bz2
Add support to the RX toolchain to restrict the use of string instructions.
bfd * elf32-rx.c (describe_flags): Report the settings of the string insn using bits. (rx_elf_merge_private_bfd_data): Handle merging of the string insn using bits. bin * readelf.c (get_machine_flags): Report the setting of the string insn using bits. gas * config/tc-rx.c (enum options): Add OPTION_DISALLOW_STRING_INSNS. (md_longopts): Add -mno-allow-string-insns. (md_parse_option): Handle -mno-allow-string-insns. (md_show_usage): Mention -mno-allow-string-insns. (rx_note_string_insn_use): New function. Produces an error message if a string insn is used when it is not allowed. * config/rx-parse.y (SCMPU): Call rx_note_string_insn_use. (SMOVU, SMOVB, SMOVF, SUNTIL, SWHILE, RMPA): Likewise. * config/rx-defs.h (rx_note_string_insn_use): Prototype. * doc/c-rx.texi: Document -mno-allow-string-insns. elf * rx.h (E_FLAG_RX_SINSNS_SET): New bit in e_flags field. (E_FLAG_RX_SINSNS_YES): Likewise. (E_FLAG_RX_SINSNS_MASK): New define.
Diffstat (limited to 'gas/config/rx-parse.y')
-rw-r--r--gas/config/rx-parse.y14
1 files changed, 7 insertions, 7 deletions
diff --git a/gas/config/rx-parse.y b/gas/config/rx-parse.y
index 645ec99..5269d66 100644
--- a/gas/config/rx-parse.y
+++ b/gas/config/rx-parse.y
@@ -500,27 +500,27 @@ statement :
/* ---------------------------------------------------------------------- */
| SCMPU
- { B2 (0x7f, 0x83); }
+ { B2 (0x7f, 0x83); rx_note_string_insn_use (); }
| SMOVU
- { B2 (0x7f, 0x87); }
+ { B2 (0x7f, 0x87); rx_note_string_insn_use (); }
| SMOVB
- { B2 (0x7f, 0x8b); }
+ { B2 (0x7f, 0x8b); rx_note_string_insn_use (); }
| SMOVF
- { B2 (0x7f, 0x8f); }
+ { B2 (0x7f, 0x8f); rx_note_string_insn_use (); }
/* ---------------------------------------------------------------------- */
| SUNTIL bwl
- { B2 (0x7f, 0x80); F ($2, 14, 2); }
+ { B2 (0x7f, 0x80); F ($2, 14, 2); rx_note_string_insn_use (); }
| SWHILE bwl
- { B2 (0x7f, 0x84); F ($2, 14, 2); }
+ { B2 (0x7f, 0x84); F ($2, 14, 2); rx_note_string_insn_use (); }
| SSTR bwl
{ B2 (0x7f, 0x88); F ($2, 14, 2); }
/* ---------------------------------------------------------------------- */
| RMPA bwl
- { B2 (0x7f, 0x8c); F ($2, 14, 2); }
+ { B2 (0x7f, 0x8c); F ($2, 14, 2); rx_note_string_insn_use (); }
/* ---------------------------------------------------------------------- */