OSDN Git Service

merge from gcc
authordj <dj>
Thu, 6 Jun 2002 12:55:23 +0000 (12:55 +0000)
committerdj <dj>
Thu, 6 Jun 2002 12:55:23 +0000 (12:55 +0000)
libiberty/ChangeLog
libiberty/configure
libiberty/configure.in
libiberty/hashtab.c

index 89fca1e..916995e 100644 (file)
@@ -1,3 +1,22 @@
+2002-06-05  Geoffrey Keating  <geoffk@redhat.com>
+
+       * hashtab.c (htab_create): New stub function for backward
+       compatibility.
+       (htab_try_create): Likewise.
+
+2002-06-03  Geoffrey Keating  <geoffk@redhat.com>
+
+       * hashtab.c (htab_create): Delete.
+       (htab_try_create): Delete.
+       (htab_create_alloc): New.
+       (htab_delete): Support user-specified memory allocation.
+       (htab_expand): Likewise.
+
+2002-05-22  Roman Lechtchinsky  <rl@cs.tu-berlin.de>
+
+       * configure.in: Fix typo in the code checking for sys_errlist.
+       * configure: Regenerated.
+
 2002-05-13  Andreas Schwab  <schwab@suse.de>
 
        * config.table: Use mh-x86pic also for x86-64.
@@ -30,7 +49,7 @@
 
 2002-03-30  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
 
-       * cp-demangle.c (java_demangle_v3): Don't try to release "demangled"
+       * cp-demangle.c (java_demangle_v3): Don't try to release "demangled" 
        if it is NULL.
 
 2002-03-27  DJ Delorie  <dj@redhat.com>
 
        * xmalloc.c (xmalloc_fail): Clarify error message.
 
-2002-02-21  Jim Blandy  <jimb@redhat.com>
+2002-02-22  Jim Blandy  <jimb@redhat.com>
 
        * splay-tree.c (splay_tree_xmalloc_allocate,
        splay_tree_xmalloc_deallocate): New functions.
index fc89885..7f2c0a9 100755 (executable)
@@ -2860,7 +2860,7 @@ else
 #include "confdefs.h"
 int *p;
 int main() {
-extern int $v []; p = &$v;
+extern int $v []; p = $v;
 ; return 0; }
 EOF
 if { (eval echo configure:2867: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
index f6d92bc..c84ece4 100644 (file)
@@ -401,7 +401,7 @@ if test -z "${setobjs}"; then
   for v in $vars; do
     AC_MSG_CHECKING([for $v])
     AC_CACHE_VAL(libiberty_cv_var_$v,
-      [AC_TRY_LINK([int *p;], [extern int $v []; p = &$v;],
+      [AC_TRY_LINK([int *p;], [extern int $v []; p = $v;],
                   [eval "libiberty_cv_var_$v=yes"],
                   [eval "libiberty_cv_var_$v=no"])])
     if eval "test \"`echo '$libiberty_cv_var_'$v`\" = yes"; then
index 7477c35..6bf59ff 100644 (file)
@@ -158,60 +158,60 @@ eq_pointer (p1, p2)
 /* This function creates table with length slightly longer than given
    source length.  Created hash table is initiated as empty (all the
    hash table entries are EMPTY_ENTRY).  The function returns the
-   created hash table.  Memory allocation must not fail.  */
+   created hash table, or NULL if memory allocation fails.  */
 
 htab_t
-htab_create (size, hash_f, eq_f, del_f)
+htab_create_alloc (size, hash_f, eq_f, del_f, alloc_f, free_f)
      size_t size;
      htab_hash hash_f;
      htab_eq eq_f;
      htab_del del_f;
+     htab_alloc alloc_f;
+     htab_free free_f;
 {
   htab_t result;
 
   size = higher_prime_number (size);
-  result = (htab_t) xcalloc (1, sizeof (struct htab));
-  result->entries = (PTR *) xcalloc (size, sizeof (PTR));
+  result = (htab_t) (*alloc_f) (1, sizeof (struct htab));
+  if (result == NULL)
+    return NULL;
+  result->entries = (PTR *) (*alloc_f) (size, sizeof (PTR));
+  if (result->entries == NULL)
+    {
+      if (free_f != NULL)
+       (*free_f) (result);
+      return NULL;
+    }
   result->size = size;
   result->hash_f = hash_f;
   result->eq_f = eq_f;
   result->del_f = del_f;
-  result->return_allocation_failure = 0;
+  result->alloc_f = alloc_f;
+  result->free_f = free_f;
   return result;
 }
 
-/* This function creates table with length slightly longer than given
-   source length.  The created hash table is initiated as empty (all the
-   hash table entries are EMPTY_ENTRY).  The function returns the created
-   hash table.  Memory allocation may fail; it may return NULL.  */
+/* These functions exist solely for backward compatibility.  */
 
+#undef htab_create
 htab_t
-htab_try_create (size, hash_f, eq_f, del_f)
+htab_create (size, hash_f, eq_f, del_f)
      size_t size;
      htab_hash hash_f;
      htab_eq eq_f;
      htab_del del_f;
 {
-  htab_t result;
-
-  size = higher_prime_number (size);
-  result = (htab_t) calloc (1, sizeof (struct htab));
-  if (result == NULL)
-    return NULL;
-
-  result->entries = (PTR *) calloc (size, sizeof (PTR));
-  if (result->entries == NULL)
-    {
-      free (result);
-      return NULL;
-    }
+  return htab_create_alloc (size, hash_f, eq_f, del_f, xcalloc, free);
+}
 
-  result->size = size;
-  result->hash_f = hash_f;
-  result->eq_f = eq_f;
-  result->del_f = del_f;
-  result->return_allocation_failure = 1;
-  return result;
+htab_t
+htab_try_create (size, hash_f, eq_f, del_f)
+     size_t size;
+     htab_hash hash_f;
+     htab_eq eq_f;
+     htab_del del_f;
+{
+  return htab_create_alloc (size, hash_f, eq_f, del_f, calloc, free);
 }
 
 /* This function frees all memory allocated for given hash table.
@@ -229,8 +229,11 @@ htab_delete (htab)
          && htab->entries[i] != DELETED_ENTRY)
        (*htab->del_f) (htab->entries[i]);
 
-  free (htab->entries);
-  free (htab);
+  if (htab->free_f != NULL)
+    {
+      (*htab->free_f) (htab->entries);
+      (*htab->free_f) (htab);
+    }
 }
 
 /* This function clears all entries in the given hash table.  */
@@ -302,21 +305,17 @@ htab_expand (htab)
   PTR *oentries;
   PTR *olimit;
   PTR *p;
+  PTR *nentries;
 
   oentries = htab->entries;
   olimit = oentries + htab->size;
 
   htab->size = higher_prime_number (htab->size * 2);
 
-  if (htab->return_allocation_failure)
-    {
-      PTR *nentries = (PTR *) calloc (htab->size, sizeof (PTR *));
-      if (nentries == NULL)
-       return 0;
-      htab->entries = nentries;
-    }
-  else
-    htab->entries = (PTR *) xcalloc (htab->size, sizeof (PTR *));
+  nentries = (PTR *) (*htab->alloc_f) (htab->size, sizeof (PTR *));
+  if (nentries == NULL)
+    return 0;
+  htab->entries = nentries;
 
   htab->n_elements -= htab->n_deleted;
   htab->n_deleted = 0;
@@ -337,7 +336,8 @@ htab_expand (htab)
     }
   while (p < olimit);
 
-  free (oentries);
+  if (htab->free_f != NULL)
+    (*htab->free_f) (oentries);
   return 1;
 }