This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] unify initialization of obstack



[I thought I sent this in the morning, but I guess not]

Use the same mechanism to initialize the obstacks that gdb uses.
obstack_init is the one I opted for. Now all the obstacks use obstack_init.

elena

2004-02-09  Elena Zannoni  <ezannoni@redhat.com>

	* bcache.c (bcache_xmalloc): Use obstack_init instead of
	obstack_specify_allocation.
	* objfiles.c (allocate_objfile): Ditto.
	* solib-sunos.c (solib_add_common_symbols) 
	(allocate_rt_common_objfile): Ditto.
	* symfile.c (reread_symbols): Ditto.
	* gdb_obstack.h: Add comment.


Index: bcache.c
===================================================================
RCS file: /cvs/src/src/gdb/bcache.c,v
retrieving revision 1.13
diff -u -p -r1.13 bcache.c
--- bcache.c	15 Nov 2003 19:39:04 -0000	1.13
+++ bcache.c	9 Feb 2004 15:49:19 -0000
@@ -266,7 +266,10 @@ bcache_xmalloc (void)
 {
   /* Allocate the bcache pre-zeroed.  */
   struct bcache *b = XCALLOC (1, struct bcache);
-  obstack_specify_allocation (&b->cache, 0, 0, xmalloc, xfree);
+  /* We could use obstack_specify_allocation here instead, but
+     gdb_obstack.h specifies the allocation/deallocation
+     functions.  */
+  obstack_init (&b->cache);
   return b;
 }
 
Index: gdb_obstack.h
===================================================================
RCS file: /cvs/src/src/gdb/gdb_obstack.h,v
retrieving revision 1.1
diff -u -p -r1.1 gdb_obstack.h
--- gdb_obstack.h	29 Jul 2002 22:55:26 -0000	1.1
+++ gdb_obstack.h	9 Feb 2004 15:49:19 -0000
@@ -26,6 +26,13 @@
 
 /* Unless explicitly specified, GDB obstacks always use xmalloc() and
    xfree().  */
+/* Note: ezannoni 2004-02-09: One could also specify the allocation
+   functions using a special init function for each obstack,
+   obstack_specify_allocation.  However we just use obstack_init and
+   let these defines here do the job.  While one could argue the
+   superiority of one approach over the other, we just chose one
+   throughout.  */
+
 #define obstack_chunk_alloc xmalloc
 #define obstack_chunk_free xfree
 
Index: objfiles.c
===================================================================
RCS file: /cvs/src/src/gdb/objfiles.c,v
retrieving revision 1.47
diff -u -p -r1.47 objfiles.c
--- objfiles.c	7 Feb 2004 23:13:47 -0000	1.47
+++ objfiles.c	9 Feb 2004 15:49:20 -0000
@@ -165,8 +165,9 @@ allocate_objfile (bfd *abfd, int flags)
       objfile->md = NULL;
       objfile->psymbol_cache = bcache_xmalloc ();
       objfile->macro_cache = bcache_xmalloc ();
-      obstack_specify_allocation (&objfile->objfile_obstack, 0, 0, xmalloc,
-				  xfree);
+      /* We could use obstack_specify_allocation here instead, but
+	 gdb_obstack.h specifies the alloc/dealloc functions.  */
+      obstack_init (&objfile->objfile_obstack);
       terminate_minimal_symbol_table (objfile);
     }
 
Index: solib-sunos.c
===================================================================
RCS file: /cvs/src/src/gdb/solib-sunos.c,v
retrieving revision 1.13
diff -u -p -r1.13 solib-sunos.c
--- solib-sunos.c	7 Feb 2004 23:13:47 -0000	1.13
+++ solib-sunos.c	9 Feb 2004 15:49:21 -0000
@@ -145,8 +145,7 @@ allocate_rt_common_objfile (void)
   objfile->md = NULL;
   objfile->psymbol_cache = bcache_xmalloc ();
   objfile->macro_cache = bcache_xmalloc ();
-  obstack_specify_allocation (&objfile->objfile_obstack, 0, 0, xmalloc,
-			      xfree);
+  obstack_init (&objfile->objfile_obstack);
   objfile->name = mstrsave (objfile->md, "rt_common");
 
   /* Add this file onto the tail of the linked list of other such files. */
@@ -182,8 +181,7 @@ solib_add_common_symbols (CORE_ADDR rtc_
   if (rt_common_objfile != NULL && rt_common_objfile->minimal_symbol_count)
     {
       obstack_free (&rt_common_objfile->objfile_obstack, 0);
-      obstack_specify_allocation (&rt_common_objfile->objfile_obstack, 0, 0,
-				  xmalloc, xfree);
+      obstack_init (&rt_common_objfile->objfile_obstack);
       rt_common_objfile->minimal_symbol_count = 0;
       rt_common_objfile->msymbols = NULL;
       terminate_minimal_symbol_table (rt_common_objfile);
Index: symfile.c
===================================================================
RCS file: /cvs/src/src/gdb/symfile.c,v
retrieving revision 1.120
diff -u -p -r1.120 symfile.c
--- symfile.c	7 Feb 2004 23:13:47 -0000	1.120
+++ symfile.c	9 Feb 2004 15:49:26 -0000
@@ -1933,12 +1933,13 @@ reread_symbols (void)
 
 	      /* We never make this a mapped file.  */
 	      objfile->md = NULL;
-	      /* obstack_specify_allocation also initializes the obstack so
-	         it is empty.  */
 	      objfile->psymbol_cache = bcache_xmalloc ();
 	      objfile->macro_cache = bcache_xmalloc ();
-	      obstack_specify_allocation (&objfile->objfile_obstack, 0, 0,
-					  xmalloc, xfree);
+	      /* obstack_init also initializes the obstack so it is
+	         empty.  We could use obstack_specify_allocation but
+	         gdb_obstack.h specifies the alloc/dealloc
+	         functions.  */
+	      obstack_init (&objfile->objfile_obstack);
 	      if (build_objfile_section_table (objfile))
 		{
 		  error ("Can't find the file sections in `%s': %s",


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]