diff options
author | Jan Beulich <jbeulich@suse.com> | 2020-06-26 16:44:31 +0200 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2020-06-26 16:44:31 +0200 |
commit | d1c361252ba4902046fd7725f880fa166e88e3e4 (patch) | |
tree | 93c559d124592fb11853c2c30c1db8a75bcd8116 | |
parent | 198e1db737e636c8defe2c7300396330650c2967 (diff) | |
download | gdb-d1c361252ba4902046fd7725f880fa166e88e3e4.zip gdb-d1c361252ba4902046fd7725f880fa166e88e3e4.tar.gz gdb-d1c361252ba4902046fd7725f880fa166e88e3e4.tar.bz2 |
x86: make I disassembler macro available for new use
The {Q|Q} construct on lgdt/lidt and the slightly different {Q|IQ}
struck me as odd when encountering. Realizing they both have the same
effect, let's free up the I macro by using the former form of construct
where needed (there aren't that many uses overall).
With there now being several multi-character macros also re-do "alt"
handling slightly: Terminate it when finding the closing brace, rather
than after the next single character. Also set the flag only when
actually in Intel syntax mode.
-rw-r--r-- | opcodes/ChangeLog | 7 | ||||
-rw-r--r-- | opcodes/i386-dis.c | 23 |
2 files changed, 17 insertions, 13 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index dfc94fb..8cb5960 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,5 +1,12 @@ 2020-06-26 Jan Beulich <jbeulich@suse.com> + * i386-dis.c: Adjust description of I macro. + (x86_64_table): Drop use of I. + (float_mem): Replace use of I. + (putop): Remove handling of I. Adjust setting/clearing of "alt". + +2020-06-26 Jan Beulich <jbeulich@suse.com> + * i386-dis.c: (print_insn): Avoid straight assignment to priv.orig_sizeflag when processing -M sub-options. diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c index f57409d..e1ebb48 100644 --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -2250,8 +2250,7 @@ struct dis386 { 'F' => print 'w' or 'l' depending on address size prefix (loop insns) 'G' => print 'w' or 'l' depending on operand size prefix (i/o insns) 'H' => print ",pt" or ",pn" branch hint - 'I' => honor following macro letter even in Intel mode (implemented only - for some of the macro letters) + 'I' unused. 'J' unused. 'K' => print 'd' or 'q' if rex prefix is present. 'L' => print 'l' if suffix_always is true @@ -6918,13 +6917,13 @@ static const struct dis386 x86_64_table[][2] = { /* X86_64_0F01_REG_0 */ { - { "sgdt{Q|IQ}", { M }, 0 }, + { "sgdt{Q|Q}", { M }, 0 }, { "sgdt", { M }, 0 }, }, /* X86_64_0F01_REG_1 */ { - { "sidt{Q|IQ}", { M }, 0 }, + { "sidt{Q|Q}", { M }, 0 }, { "sidt", { M }, 0 }, }, @@ -12323,9 +12322,9 @@ static const char *float_mem[] = { "(bad)", "fst{s|}", "fstp{s|}", - "fldenvIC", + "fldenv{C|C}", "fldcw", - "fNstenvIC", + "fNstenv{C|C}", "fNstcw", /* da */ "fiadd{l|}", @@ -12359,9 +12358,9 @@ static const char *float_mem[] = { "fisttp{ll|}", "fst{l||}", "fstp{l|}", - "frstorIC", + "frstor{C|C}", "(bad)", - "fNsaveIC", + "fNsave{C|C}", "fNstsw", /* de */ "fiadd{s|}", @@ -12735,11 +12734,9 @@ putop (const char *in_template, int sizeflag) while (*++p != '|') if (*p == '}' || *p == '\0') abort (); + alt = 1; } - /* Fall through. */ - case 'I': - alt = 1; - continue; + break; case '|': while (*++p != '}') { @@ -12748,6 +12745,7 @@ putop (const char *in_template, int sizeflag) } break; case '}': + alt = 0; break; case 'A': if (intel_syntax) @@ -13283,7 +13281,6 @@ putop (const char *in_template, int sizeflag) } break; } - alt = 0; } *obufp = 0; mnemonicendp = obufp; |