diff options
author | Jan Beulich <jbeulich@novell.com> | 2018-07-11 10:23:48 +0200 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2018-07-11 10:23:48 +0200 |
commit | 76d3a78a498e814fa1fea713091849cba7896f7a (patch) | |
tree | 6ba0d4405525d1c09495a663e89b8f858351d702 /gas/config | |
parent | c7df3df443db7b1840735c86a38e00243a2902f7 (diff) | |
download | gdb-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.c | 14 |
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) |