summaryrefslogtreecommitdiff
path: root/opcodes
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 /opcodes
parentd664a6aad2da8e051d210da2e2b851c1e51faab8 (diff)
downloadbinutils-gdb-834e4d716226b4536bfeb4d20023c69c139eeb5a.tar.gz
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.
Diffstat (limited to 'opcodes')
-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 9684dcda746..a414e8c9b1e 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;