diff options
author | Jan Beulich <jbeulich@suse.com> | 2019-11-14 08:47:03 +0100 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2019-11-14 08:47:03 +0100 |
commit | 6f2f06bea87613a6851607829e5893d74007f5bf (patch) | |
tree | 5ec0036f1cdfa57127f3cfa8d173e6b7c0afcf28 /gas/config/tc-i386-intel.c | |
parent | 601e8564220b94b991ce1729edfc04fd9da52906 (diff) | |
download | gdb-6f2f06bea87613a6851607829e5893d74007f5bf.zip gdb-6f2f06bea87613a6851607829e5893d74007f5bf.tar.gz gdb-6f2f06bea87613a6851607829e5893d74007f5bf.tar.bz2 |
x86: make JumpAbsolute an insn attribute
... instead of an operand one: There's only ever one operand here
anyway.
Diffstat (limited to 'gas/config/tc-i386-intel.c')
-rw-r--r-- | gas/config/tc-i386-intel.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/gas/config/tc-i386-intel.c b/gas/config/tc-i386-intel.c index 2116e49..fd71afb 100644 --- a/gas/config/tc-i386-intel.c +++ b/gas/config/tc-i386-intel.c @@ -743,17 +743,19 @@ i386_intel_operand (char *operand_string, int got_a_float) || current_templates->start->opcode_modifier.jumpdword || current_templates->start->opcode_modifier.jumpintersegment) { + bfd_boolean jumpabsolute = FALSE; + if (i.op[this_operand].regs || intel_state.base || intel_state.index || intel_state.is_mem > 1) - i.types[this_operand].bitfield.jumpabsolute = 1; + jumpabsolute = TRUE; else switch (intel_state.op_modifier) { case O_near_ptr: if (intel_state.seg) - i.types[this_operand].bitfield.jumpabsolute = 1; + jumpabsolute = TRUE; else intel_state.is_mem = 1; break; @@ -765,14 +767,14 @@ i386_intel_operand (char *operand_string, int got_a_float) if (intel_state.op_modifier == O_absent) { if (intel_state.is_indirect == 1) - i.types[this_operand].bitfield.jumpabsolute = 1; + jumpabsolute = TRUE; break; } as_bad (_("cannot infer the segment part of the operand")); return 0; } else if (S_GET_SEGMENT (intel_state.seg) == reg_section) - i.types[this_operand].bitfield.jumpabsolute = 1; + jumpabsolute = TRUE; else { i386_operand_type types; @@ -806,11 +808,14 @@ i386_intel_operand (char *operand_string, int got_a_float) } break; default: - i.types[this_operand].bitfield.jumpabsolute = 1; + jumpabsolute = TRUE; break; } - if (i.types[this_operand].bitfield.jumpabsolute) - intel_state.is_mem |= 1; + if (jumpabsolute) + { + i.jumpabsolute = TRUE; + intel_state.is_mem |= 1; + } } else if (intel_state.seg) intel_state.is_mem |= 1; |