aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2023-03-20 20:56:57 +1030
committerAlan Modra <amodra@gmail.com>2023-03-20 21:02:14 +1030
commit834e4d716226b4536bfeb4d20023c69c139eeb5a (patch)
tree9164c45016b2de02adc81946c6c7d2970bcba537
parentd664a6aad2da8e051d210da2e2b851c1e51faab8 (diff)
downloadgdb-834e4d716226b4536bfeb4d20023c69c139eeb5a.zip
gdb-834e4d716226b4536bfeb4d20023c69c139eeb5a.tar.gz
gdb-834e4d716226b4536bfeb4d20023c69c139eeb5a.tar.bz2
Revert "segfault at i386-dis.c:9815"
This reverts commit 92d450c79ad321e42f9a77692b5db10d0f7b9344. Accessing these local var structs using a volatile qualified pointer may indeed read the object, but I don't think changed values are guaranteed to be written back to the object unless the actual object is declared volatile. That would probably slow down i386 disassembly unacceptably.
-rw-r--r--opcodes/i386-dis.c13
1 files changed, 4 insertions, 9 deletions
diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c
index 9684dcd..a414e8c 100644
--- a/opcodes/i386-dis.c
+++ b/opcodes/i386-dis.c
@@ -9808,17 +9808,12 @@ print_insn (bfd_vma pc, disassemble_info *info, int intel_syntax)
/* Getting here means we tried for data but didn't get it. That
means we have an incomplete instruction of some sort. Just
print the first byte as a prefix or a .byte pseudo-op. */
- volatile struct dis_private *ppriv = &priv;
- volatile instr_info *pins = &ins;
- if (pins->codep > ppriv->the_buffer)
+ if (ins.codep > priv.the_buffer)
{
const char *name = NULL;
- if (pins->prefixes
- || pins->fwait_prefix >= 0
- || (pins->rex & REX_OPCODE))
- name = prefix_name (&ins, ppriv->the_buffer[0],
- ppriv->orig_sizeflag);
+ if (ins.prefixes || ins.fwait_prefix >= 0 || (ins.rex & REX_OPCODE))
+ name = prefix_name (&ins, priv.the_buffer[0], priv.orig_sizeflag);
if (name != NULL)
i386_dis_printf (&ins, dis_style_mnemonic, "%s", name);
else
@@ -9827,7 +9822,7 @@ print_insn (bfd_vma pc, disassemble_info *info, int intel_syntax)
i386_dis_printf (&ins, dis_style_assembler_directive,
".byte ");
i386_dis_printf (&ins, dis_style_immediate, "0x%x",
- (unsigned int) ppriv->the_buffer[0]);
+ (unsigned int) priv.the_buffer[0]);
}
return 1;