x86/Intel: don't accept memory operands with J*CXZ and LOOP*
Commit Message
PR gas/31887
Like for, in particular, J<cc> such should be rejected. Simplify the
respective conditional in i386_intel_operand(), leveraging that
JumpAbsolute will never occur in the first template of a mnemonic-
specific group (thus making it unnecessary to exclude that one case).
At this occasion do the same simplification later in the function as
well: The resulting two operands will uniformly be invalid for all
mnemonics other than CALL and JMP (and their AT&T counterparts, which
we've been wrongly accepting in Intel syntax) anyway.
@@ -907,9 +907,7 @@ i386_intel_operand (char *operand_string
}
/* Operands for jump/call need special consideration. */
- if (current_templates.start->opcode_modifier.jump == JUMP
- || current_templates.start->opcode_modifier.jump == JUMP_DWORD
- || current_templates.start->opcode_modifier.jump == JUMP_INTERSEGMENT
+ if (current_templates.start->opcode_modifier.jump
|| current_templates.start->mnem_off == MN_jmpabs)
{
bool jumpabsolute = false;
@@ -1046,9 +1044,7 @@ i386_intel_operand (char *operand_string
ljmp 0x9090,0x90909090
*/
- if ((current_templates.start->opcode_modifier.jump == JUMP_INTERSEGMENT
- || current_templates.start->opcode_modifier.jump == JUMP_DWORD
- || current_templates.start->opcode_modifier.jump == JUMP)
+ if (current_templates.start->opcode_modifier.jump
&& this_operand == 1
&& intel_state.seg == NULL
&& i.mem_operands == 1