OSDN Git Service

* defs.h (xfree, mcalloc, mmalloc, mrealloc, mfree, xmmalloc,
authorcagney <cagney>
Fri, 23 Mar 2001 23:39:56 +0000 (23:39 +0000)
committercagney <cagney>
Fri, 23 Mar 2001 23:39:56 +0000 (23:39 +0000)
xmrealloc): Move existing declarations to the one place and
re-order to be consistent.
(xmcalloc, xmfree): Declare.
(xmmalloc, xmrealoc): Assume ISO-C - use size_t and void* in
declaration.

* utils.c (size_t): Delete #ifdef defining size_t.
(mmalloc, mrealloc, mcalloc, mfree): Re-order.
(mmalloc, mrealloc, mcalloc): Document as only calls in GDB
corresponding malloc, realloc, calloc.
(mfree): Call free directly.
(xmmalloc, xmrealloc): Clean up. Assume ISO-C.
(xmcalloc, xmfree): New functions. Copy old xcalloc and xfree
function bodies to here.
(xcalloc, xfree): Call xmcalloc and xmfree respectfully.

gdb/ChangeLog
gdb/defs.h
gdb/utils.c

index 6cdbaa5..2067bfe 100644 (file)
@@ -1,3 +1,22 @@
+2001-03-19  Andrew Cagney  <ac131313@redhat.com>
+
+       * defs.h (xfree, mcalloc, mmalloc, mrealloc, mfree, xmmalloc,
+       xmrealloc): Move existing declarations to the one place and
+       re-order to be consistent.
+       (xmcalloc, xmfree): Declare.
+       (xmmalloc, xmrealoc): Assume ISO-C - use size_t and void* in
+       declaration.
+       
+       * utils.c (size_t): Delete #ifdef defining size_t.
+       (mmalloc, mrealloc, mcalloc, mfree): Re-order.
+       (mmalloc, mrealloc, mcalloc): Document as only calls in GDB
+       corresponding malloc, realloc, calloc.
+       (mfree): Call free directly.
+       (xmmalloc, xmrealloc): Clean up. Assume ISO-C.
+       (xmcalloc, xmfree): New functions. Copy old xcalloc and xfree
+       function bodies to here.
+       (xcalloc, xfree): Call xmcalloc and xmfree respectfully.
+       
 2001-03-23  Andrew Cagney  <ac131313@redhat.com>
 
        * fork-child.c (fork_inferior): Make ``argv'', ``exec_file'' and
index 8905698..72f5184 100644 (file)
@@ -510,22 +510,10 @@ extern void free_current_contents (void *);
 
 extern void null_cleanup (void *);
 
-extern void xfree (void *);
-
 extern int myread (int, char *, int);
 
 extern int query (char *, ...) ATTR_FORMAT (printf, 1, 2);
 
-#if !defined (USE_MMALLOC)
-/* NOTE: cagney/2000-03-04: The mmalloc functions need to use PTR
-   rather than void* so that they are consistent with
-   ../mmalloc/mmalloc.h. */
-extern PTR mcalloc (PTR, size_t, size_t);
-extern PTR mmalloc (PTR, size_t);
-extern PTR mrealloc (PTR, PTR, size_t);
-extern void mfree (PTR, PTR);
-#endif
-
 extern void init_page_info (void);
 
 extern CORE_ADDR host_pointer_to_address (void *ptr);
@@ -953,16 +941,27 @@ extern char *msavestring (void *, const char *, size_t);
 
 extern char *mstrsave (void *, const char *);
 
-/* FIXME; was long, but this causes compile errors in msvc if already
-   defined */
-#ifdef _MSC_VER
-extern PTR xmmalloc (PTR, size_t);
-extern PTR xmrealloc (PTR, PTR, size_t);
-#else
-extern PTR xmmalloc (PTR, long);
-extern PTR xmrealloc (PTR, PTR, long);
+#if !defined (USE_MMALLOC)
+/* NOTE: cagney/2000-03-04: The mmalloc functions need to use PTR
+   rather than void* so that they are consistent with the delcaration
+   in ../mmalloc/mmalloc.h. */
+extern PTR mcalloc (PTR, size_t, size_t);
+extern PTR mmalloc (PTR, size_t);
+extern PTR mrealloc (PTR, PTR, size_t);
+extern void mfree (PTR, PTR);
 #endif
 
+/* Robust versions of same.  Throw an internal error when no memory,
+   guard against stray NULL arguments. */
+extern void *xmmalloc (void *md, size_t size);
+extern void *xmrealloc (void *md, void *ptr, size_t size);
+extern void *xmcalloc (void *md, size_t number, size_t size);
+extern void xmfree (void *md, void *ptr);
+
+/* xmalloc(), xrealloc() and xcalloc() have already been declared in
+   "libiberty.h". */
+extern void xfree (void *);
+
 /* Like asprintf/vasprintf but get an internal_error if the call
    fails. */
 extern void xasprintf (char **ret, const char *format, ...) ATTR_FORMAT (printf, 2, 3);
index b1205d6..2f52d4b 100644 (file)
@@ -917,41 +917,36 @@ request_quit (int signo)
 \f
 /* Memory management stuff (malloc friends).  */
 
-/* Make a substitute size_t for non-ANSI compilers. */
-
-#ifndef HAVE_STDDEF_H
-#ifndef size_t
-#define size_t unsigned int
-#endif
-#endif
-
 #if !defined (USE_MMALLOC)
 
-PTR
-mcalloc (PTR md, size_t number, size_t size)
-{
-  return calloc (number, size);
-}
+/* NOTE: These must use PTR so that their definition matches the
+   declaration found in "mmalloc.h". */
 
 PTR
 mmalloc (PTR md, size_t size)
 {
-  return malloc (size);
+  return malloc (size); /* NOTE: GDB's only call to malloc() */
 }
 
 PTR
 mrealloc (PTR md, PTR ptr, size_t size)
 {
   if (ptr == 0)                        /* Guard against old realloc's */
-    return malloc (size);
+    return mmalloc (md, size);
   else
-    return realloc (ptr, size);
+    return realloc (ptr, size); /* NOTE: GDB's only call to ralloc() */
+}
+
+PTR
+mcalloc (PTR md, size_t number, size_t size)
+{
+  return calloc (number, size); /* NOTE: GDB's only call to calloc() */
 }
 
 void
 mfree (PTR md, PTR ptr)
 {
-  xfree (ptr);
+  free (ptr); /* NOTE: GDB's only call to free() */
 }
 
 #endif /* USE_MMALLOC */
@@ -1028,33 +1023,38 @@ nomem (long size)
     }
 }
 
-/* Like mmalloc but get error if no storage available, and protect against
-   the caller wanting to allocate zero bytes.  Whether to return NULL for
-   a zero byte request, or translate the request into a request for one
-   byte of zero'd storage, is a religious issue. */
+/* The xmmalloc() family of memory management routines.
 
-PTR
-xmmalloc (PTR md, long size)
+   These are are like the mmalloc() family except that they implement
+   consistent semantics and guard against typical memory management
+   problems: if a malloc fails, an internal error is thrown; if
+   free(NULL) is called, it is ignored; if *alloc(0) is called, NULL
+   is returned.
+
+   All these routines are implemented using the mmalloc() family. */
+
+void *
+xmmalloc (void *md, size_t size)
 {
-  register PTR val;
+  void *val;
 
   if (size == 0)
     {
       val = NULL;
     }
-  else if ((val = mmalloc (md, size)) == NULL)
+  else
     {
-      nomem (size);
+      val = mmalloc (md, size);
+      if (val == NULL)
+       nomem (size);
     }
   return (val);
 }
 
-/* Like mrealloc but get error if no storage available.  */
-
-PTR
-xmrealloc (PTR md, PTR ptr, long size)
+void *
+xmrealloc (void *md, void *ptr, size_t size)
 {
-  register PTR val;
+  void *val;
 
   if (size == 0)
     {
@@ -1080,49 +1080,61 @@ xmrealloc (PTR md, PTR ptr, long size)
   return (val);
 }
 
-/* Like malloc but get error if no storage available, and protect against
-   the caller wanting to allocate zero bytes.  */
-
-PTR
-xmalloc (size_t size)
-{
-  return (xmmalloc ((PTR) NULL, size));
-}
-
-/* Like calloc but get error if no storage available */
-
-PTR
-xcalloc (size_t number, size_t size)
+void *
+xmcalloc (void *md, size_t number, size_t size)
 {
   void *mem;
-
   if (number == 0 || size == 0)
     mem = NULL;
   else
     {
-      mem = mcalloc (NULL, number, size);
+      mem = mcalloc (md, number, size);
       if (mem == NULL)
        nomem (number * size);
     }
   return mem;
 }
 
-/* Like mrealloc but get error if no storage available.  */
+void
+xmfree (void *md, void *ptr)
+{
+  if (ptr != NULL)
+    mfree (md, ptr);
+}
+
+/* The xmalloc() (libiberty.h) family of memory management routines.
+
+   These are like the ISO-C malloc() family except that they implement
+   consistent semantics and guard against typical memory management
+   problems.  See xmmalloc() above for further information.
+
+   All these routines are wrappers to the xmmalloc() family. */
+
+/* NOTE: These are declared using PTR to ensure consistency with
+   "libiberty.h".  xfree() is GDB local.  */
+
+PTR
+xmalloc (size_t size)
+{
+  return xmmalloc (NULL, size);
+}
 
 PTR
 xrealloc (PTR ptr, size_t size)
 {
-  return (xmrealloc ((PTR) NULL, ptr, size));
+  return xmrealloc (NULL, ptr, size);
 }
 
-/* Free up space allocated by one of xmalloc(), xcalloc(), or
-   xrealloc().  */
+PTR
+xcalloc (size_t number, size_t size)
+{
+  return xmcalloc (NULL, number, size);
+}
 
 void
 xfree (void *ptr)
 {
-  if (ptr != NULL)
-    free (ptr); /* NOTE: GDB's only call to free() */
+  xmfree (NULL, ptr);
 }
 \f