From: Jan Beulich Date: Mon, 20 Mar 2023 15:57:42 +0000 (+0100) Subject: x86/AT&T: restrict recognition of the "absolute branch" prefix character X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ccb05c9c999f274c92b09f4b29c41d91cece88cf;p=binutils-gdb.git 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 --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))