summaryrefslogtreecommitdiff
path: root/bfd/dwarf2.c
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2008-05-21 11:46:42 +0000
committerNick Clifton <nickc@redhat.com>2008-05-21 11:46:42 +0000
commitcce4f3daf48254f5c183f0ea8246dd3ce9f5c752 (patch)
tree99f73bf10f49512c182d3a31b50e2b7d8c2ef366 /bfd/dwarf2.c
parent2f3e7dfe833ac7c05e32aead88c5b982699c7156 (diff)
downloadbinutils-redhat-cce4f3daf48254f5c183f0ea8246dd3ce9f5c752.tar.gz
PR 868
* dwarf2.c (_bfd_dwarf2_cleanup_debug_info): Free memory allocated for filenames in function tables and variable tables.
Diffstat (limited to 'bfd/dwarf2.c')
-rw-r--r--bfd/dwarf2.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c
index d0b50ff9a1..34e0138bf7 100644
--- a/bfd/dwarf2.c
+++ b/bfd/dwarf2.c
@@ -3202,6 +3202,8 @@ _bfd_dwarf2_cleanup_debug_info (bfd *abfd)
for (each = stash->all_comp_units; each; each = each->next_unit)
{
struct abbrev_info **abbrevs = each->abbrevs;
+ struct funcinfo *function_table = each->function_table;
+ struct varinfo *variable_table = each->variable_table;
size_t i;
for (i = 0; i < ABBREV_HASH_SIZE; i++)
@@ -3220,6 +3222,33 @@ _bfd_dwarf2_cleanup_debug_info (bfd *abfd)
free (each->line_table->dirs);
free (each->line_table->files);
}
+
+ while (function_table)
+ {
+ if (function_table->file)
+ {
+ free (function_table->file);
+ function_table->file = NULL;
+ }
+
+ if (function_table->caller_file)
+ {
+ free (function_table->caller_file);
+ function_table->caller_file = NULL;
+ }
+ function_table = function_table->prev_func;
+ }
+
+ while (variable_table)
+ {
+ if (variable_table->file)
+ {
+ free (variable_table->file);
+ variable_table->file = NULL;
+ }
+
+ variable_table = variable_table->prev_var;
+ }
}
free (stash->dwarf_abbrev_buffer);