diff options
author | Alan Modra <amodra@gmail.com> | 2020-03-26 16:26:16 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2020-03-26 20:02:42 +1030 |
commit | 832a580781060f54731fcf654d76ac1332037a47 (patch) | |
tree | c1bcb32db186241befa7a78ceec2d2b2cc31e457 /opcodes/disassemble.h | |
parent | ff7685105468702de87b75599b1ea88cc309541c (diff) | |
download | gdb-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.h | 6 |
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 */ |