summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Wilson <wilson@tuliptree.org>2000-08-02 21:24:54 +0000
committerJim Wilson <wilson@tuliptree.org>2000-08-02 21:24:54 +0000
commit3d56ab850cf81361423699ed8d78c40199d22862 (patch)
tree5a84e31d0909eb00794cb5865f447bf7841b9d18
parent63266560e98843b391a571290bc6d5dfb788d0f5 (diff)
downloadbinutils-gdb-3d56ab850cf81361423699ed8d78c40199d22862.tar.gz
Fix memory leaks for IA-64 opcode idescs.
gas/ * config/tc-ia64.c (emit_one_bundle): Call ia64_free_opcode before ia64_find_opcode. (md_assemble): Likewise. opcodes/ * ia64-dis.c (print_insn_ia64): Call ia64_free_opcode at end.
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/config/tc-ia64.c3
-rw-r--r--opcodes/ChangeLog4
-rw-r--r--opcodes/ia64-dis.c1
4 files changed, 14 insertions, 0 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 57f6fde1606..be071af7bf2 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2000-08-02 Jim Wilson <wilson@cygnus.com>
+
+ * config/tc-ia64.c (emit_one_bundle): Call ia64_free_opcode
+ before ia64_find_opcode.
+ (md_assemble): Likewise.
+
2000-08-01 Nick Clifton <nickc@cygnus.com>
* config/tc-arm.c (do_mrs): Fix skip fo 'cpsr_all' flag.
diff --git a/gas/config/tc-ia64.c b/gas/config/tc-ia64.c
index abcfe63cb0c..c704cc68df3 100644
--- a/gas/config/tc-ia64.c
+++ b/gas/config/tc-ia64.c
@@ -5390,6 +5390,7 @@ emit_one_bundle ()
as_fatal ("emit_one_bundle: unexpected dynamic op");
sprintf (mnemonic, "%s.%c", idesc->name, "?imbf??"[insn_unit]);
+ ia64_free_opcode (idesc);
md.slot[curr].idesc = idesc = ia64_find_opcode (mnemonic);
#if 0
know (!idesc->next); /* no resolved dynamic ops have collisions */
@@ -8493,6 +8494,7 @@ md_assemble (str)
mnemonic = "addl";
else
mnemonic = "adds";
+ ia64_free_opcode (idesc);
idesc = ia64_find_opcode (mnemonic);
#if 0
know (!idesc->next);
@@ -8516,6 +8518,7 @@ md_assemble (str)
mnemonic = "mov.i";
else
mnemonic = "mov.m";
+ ia64_free_opcode (idesc);
idesc = ia64_find_opcode (mnemonic);
while (idesc != NULL
&& (idesc->operands[0] != opnd1
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 4d34acaeb7e..d4af2a2395f 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,7 @@
+2000-08-02 Jim Wilson <wilson@cygnus.com>
+
+ * ia64-dis.c (print_insn_ia64): Call ia64_free_opcode at end.
+
2000-07-28 Ben Elliston <bje@redhat.com>
* Makefile.am (CGEN, CGENDEPS, CGENDIR, CGENFLAGS): New.
diff --git a/opcodes/ia64-dis.c b/opcodes/ia64-dis.c
index 7a68597de15..d4ea62b505d 100644
--- a/opcodes/ia64-dis.c
+++ b/opcodes/ia64-dis.c
@@ -254,6 +254,7 @@ print_insn_ia64 (bfd_vma memaddr, struct disassemble_info *info)
(*info->fprintf_func) (info->stream, ";;");
done:
+ ia64_free_opcode (idesc);
if (slotnum == 2)
retval += 16 - 3*slot_multiplier;
return retval;