[binutils-gdb] x86/AT&T: restrict recognition of the "absolute branch" prefix character
Jan Beulich
jbeulich@sourceware.org
Mon Mar 20 15:58:11 GMT 2023
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=ccb05c9c999f274c92b09f4b29c41d91cece88cf
commit ccb05c9c999f274c92b09f4b29c41d91cece88cf
Author: Jan Beulich <jbeulich@suse.com>
Date: Mon Mar 20 16:57:42 2023 +0100
x86/AT&T: restrict recognition of the "absolute branch" prefix character
While in principle merely rejecting this for .insn would be sufficient
for the purposes there, be more generic and reject it for anything that
isn't going to be a branch: All elements of same-mnemonic template
groups either are branches, or are not, and the few cases possibly
requiring a 2nd parsing pass aren't affected either. This then also
improves diagnostics for misuses like
inc *%eax
incl %fs:*(%eax)
add *$1, %eax
Diff:
---
gas/config/tc-i386.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index ebfcda4f364..fb755943aea 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -11423,7 +11423,8 @@ i386_att_operand (char *operand_string)
/* We check for an absolute prefix (differentiating,
for example, 'jmp pc_relative_label' from 'jmp *absolute_label'. */
- if (*op_string == ABSOLUTE_PREFIX)
+ if (*op_string == ABSOLUTE_PREFIX
+ && current_templates->start->opcode_modifier.jump)
{
++op_string;
if (is_space_char (*op_string))
@@ -11454,7 +11455,8 @@ i386_att_operand (char *operand_string)
++op_string;
/* Handle case of %es:*foo. */
- if (!i.jumpabsolute && *op_string == ABSOLUTE_PREFIX)
+ if (!i.jumpabsolute && *op_string == ABSOLUTE_PREFIX
+ && current_templates->start->opcode_modifier.jump)
{
++op_string;
if (is_space_char (*op_string))
More information about the Binutils-cvs
mailing list