aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog13
-rw-r--r--gdb/dwarf2read.c4
-rw-r--r--gdb/objfiles.c4
-rw-r--r--gdb/objfiles.h4
-rw-r--r--gdb/symfile.c2
-rw-r--r--gdb/symmisc.c5
6 files changed, 23 insertions, 9 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 3b2bc5b..571c9b6 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,18 @@
2012-08-22 Tom Tromey <tromey@redhat.com>
+ * dwarf2read.c (macro_start_file): Update.
+ * objfiles.c (get_objfile_bfd_data): Initialize macro_cache.
+ (free_objfile_per_bfd_storage): Destroy macro_cache.
+ (allocate_objfile, free_objfile): Update.
+ * objfiles.h (struct objfile_per_bfd_storage) <macro_cache>:
+ New field.
+ (struct objfile) <macro_cache>: Remove.
+ * symfile.c (reread_symbols): Update.
+ * symmisc.c (print_symbol_bcache_statistics): Update.
+ (print_objfile_statistics): Update.
+
+2012-08-22 Tom Tromey <tromey@redhat.com>
+
* elfread.c (elf_symtab_read): Update.
* objfiles.c (objfiles_bfd_data): New global.
(get_objfile_bfd_data, free_objfile_per_bfd_storage)
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index 099b67a..682fd0f 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -17082,8 +17082,8 @@ macro_start_file (int file, int line,
/* We don't create a macro table for this compilation unit
at all until we actually get a filename. */
if (! pending_macros)
- pending_macros = new_macro_table (&objfile->objfile_obstack,
- objfile->macro_cache);
+ pending_macros = new_macro_table (&objfile->per_bfd->storage_obstack,
+ objfile->per_bfd->macro_cache);
if (! current_file)
{
diff --git a/gdb/objfiles.c b/gdb/objfiles.c
index 250cf35..d5317a8 100644
--- a/gdb/objfiles.c
+++ b/gdb/objfiles.c
@@ -141,6 +141,7 @@ get_objfile_bfd_data (struct objfile *objfile, struct bfd *abfd)
obstack_init (&storage->storage_obstack);
storage->filename_cache = bcache_xmalloc (NULL, NULL);
+ storage->macro_cache = bcache_xmalloc (NULL, NULL);
}
return storage;
@@ -152,6 +153,7 @@ static void
free_objfile_per_bfd_storage (struct objfile_per_bfd_storage *storage)
{
bcache_xfree (storage->filename_cache);
+ bcache_xfree (storage->macro_cache);
obstack_free (&storage->storage_obstack, 0);
}
@@ -251,7 +253,6 @@ allocate_objfile (bfd *abfd, int flags)
objfile = (struct objfile *) xzalloc (sizeof (struct objfile));
objfile->psymbol_cache = psymbol_bcache_init ();
- objfile->macro_cache = bcache_xmalloc (NULL, NULL);
/* We could use obstack_specify_allocation here instead, but
gdb_obstack.h specifies the alloc/dealloc functions. */
obstack_init (&objfile->objfile_obstack);
@@ -676,7 +677,6 @@ free_objfile (struct objfile *objfile)
xfree (objfile->static_psymbols.list);
/* Free the obstacks for non-reusable objfiles. */
psymbol_bcache_free (objfile->psymbol_cache);
- bcache_xfree (objfile->macro_cache);
if (objfile->demangled_names_hash)
htab_delete (objfile->demangled_names_hash);
obstack_free (&objfile->objfile_obstack, 0);
diff --git a/gdb/objfiles.h b/gdb/objfiles.h
index 2b95ce4..24124fe 100644
--- a/gdb/objfiles.h
+++ b/gdb/objfiles.h
@@ -174,6 +174,9 @@ struct objfile_per_bfd_storage
/* Byte cache for file names. */
struct bcache *filename_cache;
+
+ /* Byte cache for macros. */
+ struct bcache *macro_cache;
};
/* Master structure for keeping track of each file from which
@@ -269,7 +272,6 @@ struct objfile
will not change. */
struct psymbol_bcache *psymbol_cache; /* Byte cache for partial syms. */
- struct bcache *macro_cache; /* Byte cache for macros. */
/* Hash table for mapping symbol names to demangled names. Each
entry in the hash table is actually two consecutive strings,
diff --git a/gdb/symfile.c b/gdb/symfile.c
index 6ef1ac1..6c93ba6 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
@@ -2548,8 +2548,6 @@ reread_symbols (void)
/* Free the obstacks for non-reusable objfiles. */
psymbol_bcache_free (objfile->psymbol_cache);
objfile->psymbol_cache = psymbol_bcache_init ();
- bcache_xfree (objfile->macro_cache);
- objfile->macro_cache = bcache_xmalloc (NULL, NULL);
if (objfile->demangled_names_hash != NULL)
{
htab_delete (objfile->demangled_names_hash);
diff --git a/gdb/symmisc.c b/gdb/symmisc.c
index 3e9ca82..9ce7679 100644
--- a/gdb/symmisc.c
+++ b/gdb/symmisc.c
@@ -92,7 +92,8 @@ print_symbol_bcache_statistics (void)
printf_filtered (_("Byte cache statistics for '%s':\n"), objfile->name);
print_bcache_statistics (psymbol_bcache_get_bcache (objfile->psymbol_cache),
"partial symbol cache");
- print_bcache_statistics (objfile->macro_cache, "preprocessor macro cache");
+ print_bcache_statistics (objfile->per_bfd->macro_cache,
+ "preprocessor macro cache");
print_bcache_statistics (objfile->per_bfd->filename_cache,
"file name cache");
}
@@ -154,7 +155,7 @@ print_objfile_statistics (void)
bcache_memory_used (psymbol_bcache_get_bcache
(objfile->psymbol_cache)));
printf_filtered (_(" Total memory used for macro cache: %d\n"),
- bcache_memory_used (objfile->macro_cache));
+ bcache_memory_used (objfile->per_bfd->macro_cache));
printf_filtered (_(" Total memory used for file name cache: %d\n"),
bcache_memory_used (objfile->per_bfd->filename_cache));
}