1999-08-09 Jakub Jelinek <jj@ultra.linux.cz>
[deliverable/binutils-gdb.git] / bfd / hash.c
index 8ea4375d5c70172be3d513351fdd4785c6c4ac78..173eaf76eef636e2f7de7f376348e14d7de1d6d0 100644 (file)
@@ -1,5 +1,5 @@
 /* hash.c -- hash table routines for BFD
-   Copyright (C) 1993, 94 Free Software Foundation, Inc.
+   Copyright (C) 1993, 94, 95, 97, 1999 Free Software Foundation, Inc.
    Written by Steve Chamberlain <sac@cygnus.com>
 
 This file is part of BFD, the Binary File Descriptor library.
@@ -21,7 +21,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #include "bfd.h"
 #include "sysdep.h"
 #include "libbfd.h"
-#include "obstack.h"
+#include "objalloc.h"
 
 /*
 SECTION
@@ -73,13 +73,13 @@ SUBSECTION
        The function <<bfd_hash_table_init>> take as an argument a
        function to use to create new entries.  For a basic hash
        table, use the function <<bfd_hash_newfunc>>.  @xref{Deriving
-       a New Hash Table Type} for why you would want to use a
+       a New Hash Table Type}, for why you would want to use a
        different value for this argument.
 
 @findex bfd_hash_allocate
-       <<bfd_hash_table_init>> will create an obstack which will be
+       <<bfd_hash_table_init>> will create an objalloc which will be
        used to allocate new entries.  You may allocate memory on this
-       obstack using <<bfd_hash_allocate>>.
+       objalloc using <<bfd_hash_allocate>>.
 
 @findex bfd_hash_table_free
        Use <<bfd_hash_table_free>> to free up all the memory that has
@@ -111,7 +111,7 @@ SUBSECTION
 
        If the @var{create} argument is <<true>>, and a new entry is
        created, the @var{copy} argument is used to decide whether to
-       copy the string onto the hash table obstack or not.  If
+       copy the string onto the hash table objalloc or not.  If
        @var{copy} is passed as <<false>>, you must be careful not to
        deallocate or modify the string as long as the hash table
        exists.
@@ -293,10 +293,6 @@ SUBSUBSECTION
        <<aout_link_hash_traverse>> in aoutx.h.
 */
 
-/* Obstack allocation and deallocation routines.  */
-#define obstack_chunk_alloc malloc
-#define obstack_chunk_free free
-
 /* The default number of entries to use when creating a hash table.  */
 #define DEFAULT_SIZE (4051)
 
@@ -313,14 +309,16 @@ bfd_hash_table_init_n (table, newfunc, size)
   unsigned int alloc;
 
   alloc = size * sizeof (struct bfd_hash_entry *);
-  if (!obstack_begin (&table->memory, alloc))
+
+  table->memory = (PTR) objalloc_create ();
+  if (table->memory == NULL)
     {
       bfd_set_error (bfd_error_no_memory);
       return false;
     }
   table->table = ((struct bfd_hash_entry **)
-                 obstack_alloc (&table->memory, alloc));
-  if (!table->table)
+                 objalloc_alloc ((struct objalloc *) table->memory, alloc));
+  if (table->table == NULL)
     {
       bfd_set_error (bfd_error_no_memory);
       return false;
@@ -349,7 +347,8 @@ void
 bfd_hash_table_free (table)
      struct bfd_hash_table *table;
 {
-  obstack_free (&table->memory, (PTR) NULL);
+  objalloc_free ((struct objalloc *) table->memory);
+  table->memory = NULL;
 }
 
 /* Look up a string in a hash table.  */
@@ -400,7 +399,8 @@ bfd_hash_lookup (table, string, create, copy)
     {
       char *new;
 
-      new = (char *) obstack_alloc (&table->memory, len + 1);
+      new = (char *) objalloc_alloc ((struct objalloc *) table->memory,
+                                    len + 1);
       if (!new)
        {
          bfd_set_error (bfd_error_no_memory);
@@ -450,7 +450,7 @@ struct bfd_hash_entry *
 bfd_hash_newfunc (entry, table, string)
      struct bfd_hash_entry *entry;
      struct bfd_hash_table *table;
-     const char *string;
+     const char *string ATTRIBUTE_UNUSED;
 {
   if (entry == (struct bfd_hash_entry *) NULL)
     entry = ((struct bfd_hash_entry *)
@@ -467,7 +467,7 @@ bfd_hash_allocate (table, size)
 {
   PTR ret;
 
-  ret = obstack_alloc (&table->memory, size);
+  ret = objalloc_alloc ((struct objalloc *) table->memory, size);
   if (ret == NULL && size != 0)
     bfd_set_error (bfd_error_no_memory);
   return ret;
@@ -582,12 +582,10 @@ _bfd_stringtab_init ()
 {
   struct bfd_strtab_hash *table;
 
-  table = (struct bfd_strtab_hash *) malloc (sizeof (struct bfd_strtab_hash));
+  table = ((struct bfd_strtab_hash *)
+          bfd_malloc (sizeof (struct bfd_strtab_hash)));
   if (table == NULL)
-    {
-      bfd_set_error (bfd_error_no_memory);
-      return NULL;
-    }
+    return NULL;
 
   if (! bfd_hash_table_init (&table->table, strtab_hash_newfunc))
     {
This page took 0.027053 seconds and 4 git commands to generate.