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
This commit is contained in:
Jan Beulich
2023-03-20 16:57:42 +01:00
parent 3f155099ad
commit ccb05c9c99

View File

@@ -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))