aboutsummaryrefslogtreecommitdiff
path: root/gas/config
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@novell.com>2018-07-11 10:23:48 +0200
committerJan Beulich <jbeulich@suse.com>2018-07-11 10:23:48 +0200
commit76d3a78a498e814fa1fea713091849cba7896f7a (patch)
tree6ba0d4405525d1c09495a663e89b8f858351d702 /gas/config
parentc7df3df443db7b1840735c86a38e00243a2902f7 (diff)
downloadgdb-76d3a78a498e814fa1fea713091849cba7896f7a.zip
gdb-76d3a78a498e814fa1fea713091849cba7896f7a.tar.gz
gdb-76d3a78a498e814fa1fea713091849cba7896f7a.tar.bz2
x86: fix "REP RET" with -madd-bnd-prefix
Just like any other branches, RET should gain a BND prefix also when already prefixed in source by REP.
Diffstat (limited to 'gas/config')
-rw-r--r--gas/config/tc-i386.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 2d20f1c..a7b8400 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -4112,10 +4112,16 @@ md_assemble (char *line)
}
/* Insert BND prefix. */
- if (add_bnd_prefix
- && i.tm.opcode_modifier.bndprefixok
- && !i.prefix[BND_PREFIX])
- add_prefix (BND_PREFIX_OPCODE);
+ if (add_bnd_prefix && i.tm.opcode_modifier.bndprefixok)
+ {
+ if (!i.prefix[BND_PREFIX])
+ add_prefix (BND_PREFIX_OPCODE);
+ else if (i.prefix[BND_PREFIX] != BND_PREFIX_OPCODE)
+ {
+ as_warn (_("replacing `rep'/`repe' prefix by `bnd'"));
+ i.prefix[BND_PREFIX] = BND_PREFIX_OPCODE;
+ }
+ }
/* Check string instruction segment overrides. */
if (i.tm.opcode_modifier.isstring && i.mem_operands != 0)