aboutsummaryrefslogtreecommitdiff
path: root/opcodes/disassemble.h
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2020-03-26 16:26:16 +1030
committerAlan Modra <amodra@gmail.com>2020-03-26 20:02:42 +1030
commit832a580781060f54731fcf654d76ac1332037a47 (patch)
treec1bcb32db186241befa7a78ceec2d2b2cc31e457 /opcodes/disassemble.h
parentff7685105468702de87b75599b1ea88cc309541c (diff)
downloadgdb-832a580781060f54731fcf654d76ac1332037a47.zip
gdb-832a580781060f54731fcf654d76ac1332037a47.tar.gz
gdb-832a580781060f54731fcf654d76ac1332037a47.tar.bz2
Re: H8300 use of uninitialised value
This patch also had some problems. Calculation of maxlen was wrong, and the insn arg loop needed rearranging to work with a correct length. * disassemble.h (opcodes_assert): Declare. (OPCODES_ASSERT): Define. * disassemble.c: Don't include assert.h. Include opintl.h. (opcodes_assert): New function. * h8300-dis.c (bfd_h8_disassemble_init): Use OPCODES_ASSERT. (bfd_h8_disassemble): Reduce size of data array. Correctly calculate maxlen. Omit insn decoding when insn length exceeds maxlen. Exit from nibble loop when looking for E, before accessing next data byte. Move processing of E outside loop. Replace tests of maxlen in loop with assertions.
Diffstat (limited to 'opcodes/disassemble.h')
-rw-r--r--opcodes/disassemble.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/opcodes/disassemble.h b/opcodes/disassemble.h
index 0365176..89db886 100644
--- a/opcodes/disassemble.h
+++ b/opcodes/disassemble.h
@@ -103,4 +103,10 @@ extern int print_insn_z8002 (bfd_vma, disassemble_info *);
extern disassembler_ftype csky_get_disassembler (bfd *);
extern disassembler_ftype rl78_get_disassembler (bfd *);
+
+extern void ATTRIBUTE_NORETURN opcodes_assert (const char *, int);
+
+#define OPCODES_ASSERT(x) \
+ do { if (!(x)) opcodes_assert (__FILE__, __LINE__); } while (0)
+
#endif /* DISASSEMBLE_H */