diff options
author | Alan Modra <amodra@gmail.com> | 2025-01-15 09:48:44 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2025-01-16 19:57:19 +1030 |
commit | 6cda040f1b9fa2da682a7721c6d511d420f5e889 (patch) | |
tree | 3fc7261d76a4dbb55c3d8f709422a9e957859179 /opcodes | |
parent | 86790dfe16097f8aee84c007efdef40759065e8c (diff) | |
download | gdb-6cda040f1b9fa2da682a7721c6d511d420f5e889.zip gdb-6cda040f1b9fa2da682a7721c6d511d420f5e889.tar.gz gdb-6cda040f1b9fa2da682a7721c6d511d420f5e889.tar.bz2 |
disassemble_free_powerpc
This fixes leaks in a ppc disassembler buffer. I'm not sure now why I
used a private buffer for section contents, but I'm not going to
change that just now.
* disassemble.h (disassemble_free_powerpc): Declare.
* disassemble.c (disassemble_free_target): Call it.
* ppc-dis.c (disassemble_free_powerpc): New function.
Diffstat (limited to 'opcodes')
-rw-r--r-- | opcodes/disassemble.c | 1 | ||||
-rw-r--r-- | opcodes/disassemble.h | 1 | ||||
-rw-r--r-- | opcodes/ppc-dis.c | 10 |
3 files changed, 12 insertions, 0 deletions
diff --git a/opcodes/disassemble.c b/opcodes/disassemble.c index b6ab3fb..98de1a7 100644 --- a/opcodes/disassemble.c +++ b/opcodes/disassemble.c @@ -767,6 +767,7 @@ disassemble_free_target (struct disassemble_info *info) #endif #ifdef ARCH_powerpc case bfd_arch_powerpc: + disassemble_free_powerpc (info); break; #endif #ifdef ARCH_riscv diff --git a/opcodes/disassemble.h b/opcodes/disassemble.h index 48c2262..5fcd45e 100644 --- a/opcodes/disassemble.h +++ b/opcodes/disassemble.h @@ -105,6 +105,7 @@ extern disassembler_ftype rl78_get_disassembler (bfd *); extern disassembler_ftype riscv_get_disassembler (bfd *); extern void disassemble_free_riscv (disassemble_info *); +extern void disassemble_free_powerpc (disassemble_info *); extern void ATTRIBUTE_NORETURN opcodes_assert (const char *, int); diff --git a/opcodes/ppc-dis.c b/opcodes/ppc-dis.c index 409c81d..3e21034 100644 --- a/opcodes/ppc-dis.c +++ b/opcodes/ppc-dis.c @@ -537,6 +537,16 @@ disassemble_init_powerpc (struct disassemble_info *info) } } +void +disassemble_free_powerpc (struct disassemble_info *info) +{ + if (info->private_data != NULL) + { + free (private_data (info)->special[0].buf); + free (private_data (info)->special[1].buf); + } +} + /* Print a big endian PowerPC instruction. */ int |