Various changes to clean up ADD_PSYMBOL_TO_LIST and ADD_PSYMBOL_ADDR_TO_LIST
authorFred Fish <fnf@specifix.com>
Fri, 27 Dec 1991 03:55:12 +0000 (03:55 +0000)
committerFred Fish <fnf@specifix.com>
Fri, 27 Dec 1991 03:55:12 +0000 (03:55 +0000)
usages.

gdb/ChangeLog
gdb/dbxread.c
gdb/dwarfread.c
gdb/ieee-float.c
gdb/partial-stab.h
gdb/symmisc.c

index 31eb0ffdd8b040cdd7ccef07850832fcec005f43..01bd5e4453e9dfb9b2fd9bdc0eaf3b3d2c55a683 100644 (file)
@@ -1,3 +1,21 @@
+Thu Dec 26 19:52:01 1991  Fred Fish  (fnf at cygnus.com)
+
+       * dbxread.c, symmisc.c:  Move add_psymbol_to_plist() from
+       dbxread.c to symmisc and change name to add_psymbol_to_list.
+       Ditto for add_psymbol_addr_to_plist().  Also expand their
+       body to not use ADD_PSYMBOL_VT_TO_LIST.
+
+       * dwarfread.c:  Remove add_psymbol_to_list() and convert usages
+       to the ADD_PSYMBOL_TO_LIST macro.
+
+       * ieee-float.c:  Change "#ifdef DEBUG" to "#ifdef IEEE_DEBUG"
+       to avoid collision with the DEBUG for ADD_PSYMBOL_VT_TO_LIST.
+
+       * partial-stab.h, symfile.h:  Move definitions of the macros
+       ADD_PSYMBOL_TO_LIST and ADD_PSYMBOL_ADDR_TO_LIST from
+       partial-stab.h to symfile.h.  They aren't stab specific.
+       Change ADD_PSYMBOL_VT_TO_LIST to use memcpy rather than strncpy.
+
 Tue Dec 24 11:38:08 1991  John Gilmore  (gnu at cygnus.com)
 
        * Makefile.in:  Roll VERSION to 4.3.2.
index 482f12c91047461278de079011633b12e1bd6db3..c80ff1611e7e3bf7a50cdbde2a70cdd3391d3a30 100644 (file)
@@ -660,37 +660,6 @@ free_bincl_list ()
   bincls_allocated = 0;
 }
 
-#ifdef DEBUG
-/* This is normally a macro defined in read_dbx_symtab, but this
-   is a lot easier to debug.  */
-
-void
-add_psymbol_to_plist(name, namelength, namespace, class, plist, value)
-     char *name;
-     int namelength;
-     enum namespace namespace;
-     enum address_class class;
-     struct psymbol_allocation_list *plist;
-     unsigned long value;
-{
-    ADD_PSYMBOL_VT_TO_LIST(name, namelength, namespace,
-                          class, *plist, value, SYMBOL_VALUE);
-}
-
-void
-add_psymbol_addr_to_plist(name, namelength, namespace, class, plist, value)
-     char *name;
-     int namelength;
-     enum namespace namespace;
-     enum address_class class;
-     struct psymbol_allocation_list *plist;
-     CORE_ADDR value;
-{
-    ADD_PSYMBOL_VT_TO_LIST(name, namelength, namespace,
-                          class, *plist, value, SYMBOL_VALUE_ADDRESS);
-}
-#endif /* DEBUG */
-
 /* Given pointers to an a.out symbol table in core containing dbx
    style data, setup partial_symtab's describing each source file for
    which debugging information is available.  NLISTLEN is the number
index e0c286bdc9684a766f114552104ad847dc770fb4..780e0c3d1e43145a35e30d068b9ca061dd1cb2df 100644 (file)
@@ -331,25 +331,6 @@ EXFUN(start_psymtab, (struct objfile *objfile AND CORE_ADDR addr
 static void
 EXFUN(add_partial_symbol, (struct dieinfo *dip));
 
-#ifdef DEBUG
-static void
-DEFUN(add_psymbol_to_list,
-      (listp, name, space, class, value),
-      struct psymbol_allocation_list *listp AND
-      char *name AND
-      enum namespace space AND
-      enum address_class class AND
-      CORE_ADDR value)
-{
-    ADD_PSYMBOL_VT_TO_LIST(name, strlen(name), space, class,
-                          listp, value, SYMBOL_VALUE);
-}
-#else
-#define add_psymbol_to_list(listp, name, space, class, value) \
-    ADD_PSYMBOL_VT_TO_LIST(name, strlen(name), space, class, \
-                          *(listp), value, SYMBOL_VALUE)
-#endif
-
 static void
 EXFUN(init_psymbol_list, (int total_symbols));
 
@@ -2665,50 +2646,6 @@ DEFUN(start_psymtab,
   return result;
 }
 
-#if 0
-/*
-
-LOCAL FUNCTION
-
-       add_psymbol_to_list -- add a partial symbol to given list
-
-DESCRIPTION
-
-       Add a partial symbol to one of the partial symbol vectors (pointed to
-       by listp).  The vector is grown as necessary.
-
- */
-
-static void
-DEFUN(add_psymbol_to_list,
-      (listp, name, space, class, value),
-      struct psymbol_allocation_list *listp AND
-      char *name AND
-      enum namespace space AND
-      enum address_class class AND
-      CORE_ADDR value)
-{
-  struct partial_symbol *psym;
-  int newsize;
-  
-  if (listp -> next >= listp -> list + listp -> size)
-    {
-      newsize = listp -> size * 2;
-      listp -> list = (struct partial_symbol *)
-       xrealloc (listp -> list, (newsize * sizeof (struct partial_symbol)));
-      /* Next assumes we only went one over.  Should be good if program works
-        correctly */
-      listp -> next = listp -> list + listp -> size;
-      listp -> size = newsize;
-    }
-  psym = listp -> next++;
-  SYMBOL_NAME (psym) = create_name (name, psymbol_obstack);
-  SYMBOL_NAMESPACE (psym) = space;
-  SYMBOL_CLASS (psym) = class;
-  SYMBOL_VALUE (psym) = value;
-}
-#endif
-
 /*
 
 LOCAL FUNCTION
@@ -2747,8 +2684,8 @@ DEFUN(add_enum_psymbol, (dip), struct dieinfo *dip)
       while (scan < listend)
        {
          scan += sizeof (long);
-         add_psymbol_to_list (&static_psymbols, scan, VAR_NAMESPACE,
-                              LOC_CONST, 0);
+         ADD_PSYMBOL_TO_LIST (scan, strlen (scan), VAR_NAMESPACE, LOC_CONST,
+                              static_psymbols, 0);
          scan += strlen (scan) + 1;
        }
     }
@@ -2775,37 +2712,44 @@ DEFUN(add_partial_symbol, (dip), struct dieinfo *dip)
     {
     case TAG_global_subroutine:
       record_misc_function (dip -> at_name, dip -> at_low_pc, mf_text);
-      add_psymbol_to_list (&global_psymbols, dip -> at_name, VAR_NAMESPACE,
-                          LOC_BLOCK, dip -> at_low_pc);
+      ADD_PSYMBOL_TO_LIST (dip -> at_name, strlen (dip -> at_name),
+                          VAR_NAMESPACE, LOC_BLOCK, global_psymbols,
+                          dip -> at_low_pc);
       break;
     case TAG_global_variable:
       record_misc_function (dip -> at_name, locval (dip -> at_location),
                            mf_data);
-      add_psymbol_to_list (&global_psymbols, dip -> at_name, VAR_NAMESPACE,
-                          LOC_STATIC, 0);
+      ADD_PSYMBOL_TO_LIST (dip -> at_name, strlen (dip -> at_name),
+                          VAR_NAMESPACE, LOC_STATIC, global_psymbols,
+                          0);
       break;
     case TAG_subroutine:
-      add_psymbol_to_list (&static_psymbols, dip -> at_name, VAR_NAMESPACE,
-                          LOC_BLOCK, dip -> at_low_pc);
+      ADD_PSYMBOL_TO_LIST (dip -> at_name, strlen (dip -> at_name),
+                          VAR_NAMESPACE, LOC_BLOCK, static_psymbols,
+                          dip -> at_low_pc);
       break;
     case TAG_local_variable:
-      add_psymbol_to_list (&static_psymbols, dip -> at_name, VAR_NAMESPACE,
-                          LOC_STATIC, 0);
+      ADD_PSYMBOL_TO_LIST (dip -> at_name, strlen (dip -> at_name),
+                          VAR_NAMESPACE, LOC_STATIC, static_psymbols,
+                          0);
       break;
     case TAG_typedef:
-      add_psymbol_to_list (&static_psymbols, dip -> at_name, VAR_NAMESPACE,
-                          LOC_TYPEDEF, 0);
+      ADD_PSYMBOL_TO_LIST (dip -> at_name, strlen (dip -> at_name),
+                          VAR_NAMESPACE, LOC_TYPEDEF, static_psymbols,
+                          0);
       break;
     case TAG_structure_type:
     case TAG_union_type:
-      add_psymbol_to_list (&static_psymbols, dip -> at_name, STRUCT_NAMESPACE,
-                          LOC_TYPEDEF, 0);
+      ADD_PSYMBOL_TO_LIST (dip -> at_name, strlen (dip -> at_name),
+                          STRUCT_NAMESPACE, LOC_TYPEDEF, static_psymbols,
+                          0);
       break;
     case TAG_enumeration_type:
       if (dip -> at_name)
        {
-         add_psymbol_to_list (&static_psymbols, dip -> at_name,
-                              STRUCT_NAMESPACE, LOC_TYPEDEF, 0);
+         ADD_PSYMBOL_TO_LIST (dip -> at_name, strlen (dip -> at_name),
+                              STRUCT_NAMESPACE, LOC_TYPEDEF, static_psymbols,
+                              0);
        }
       add_enum_psymbol (dip);
       break;
index f1e503b2864fd6b656014553412c3ad2ecc290e8..9ab3d4805b667373227acb44b16a9759aae047b8 100644 (file)
@@ -123,7 +123,7 @@ double_to_ieee_extended (ext_format, from, to)
 }
 
 
-#ifdef DEBUG
+#ifdef IEEE_DEBUG
 
 /* Test some numbers to see that extended/double conversion works for them.  */
 
index d90179539021c2febb8a9f1c4c3a1cb993b828b0..d4b3dea7f5bab31158d179a6a64d7801a27cde01 100644 (file)
@@ -23,22 +23,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
    CUR_SYMBOL_VALUE --Value field of current symbol.  May be adjusted here.
  */
 
-#ifdef DEBUG
-/* Since one arg is a struct, we have to pass in a ptr and deref it (sigh) */
-#define        ADD_PSYMBOL_TO_LIST(NAME, NAMELENGTH, NAMESPACE, CLASS,  LIST, VALUE) \
-       add_psymbol_to_plist(NAME, NAMELENGTH, NAMESPACE, CLASS, &LIST, VALUE)
-#define        ADD_PSYMBOL_ADDR_TO_LIST(NAME, NAMELENGTH, NAMESPACE, CLASS,  LIST, VALUE) \
-       add_psymbol_to_plist(NAME, NAMELENGTH, NAMESPACE, CLASS, &LIST, VALUE)
-#else
-/* Add a symbol with an integer value to a psymtab. */
-#define ADD_PSYMBOL_TO_LIST(NAME, NAMELENGTH, NAMESPACE, CLASS, LIST, VALUE) \
-  ADD_PSYMBOL_VT_TO_LIST(NAME, NAMELENGTH, NAMESPACE, CLASS, LIST, VALUE, SYMBOL_VALUE)
-
-/* Add a symbol with a CORE_ADDR value to a psymtab. */
-#define        ADD_PSYMBOL_ADDR_TO_LIST(NAME,NAMELENGTH, NAMESPACE,CLASS, LIST,VALUE)\
-  ADD_PSYMBOL_VT_TO_LIST(NAME, NAMELENGTH, NAMESPACE, CLASS, LIST, VALUE, SYMBOL_VALUE_ADDRESS)
-#endif
-
 /* End of macro definitions, now let's handle them symbols!  */
 
       switch (CUR_SYMBOL_TYPE)
index 507ec1825f30e5026e20171414ac27f61e33af02..3c1df3e1f7af93a67c41b1d9c46f61c911457d8d 100644 (file)
@@ -567,6 +567,64 @@ extend_psymbol_list(listp)
   listp->size = new_size;
 }
 
+#ifdef DEBUG
+
+/* The work performed by this function is normally done by the macro
+   ADD_PSYMBOL_TO_LIST defined in symfile.h.  When debugging gdb, this
+   function makes things easier. */
+
+void
+add_psymbol_to_list (name, namelength, namespace, class, listp, psymval)
+     char *name;
+     int namelength;
+     enum namespace namespace;
+     enum address_class class;
+     struct psymbol_allocation_list *listp;
+     unsigned long psymval;
+{
+  register struct partial_symbol *psym;
+
+  if (listp -> next >= listp -> list + listp -> size)
+    extend_psymbol_list (listp);
+  psym = listp -> next++;
+  SYMBOL_NAME (psym) = (char *) obstack_alloc (psymbol_obstack,
+                                              namelength + 1);
+  memcpy (SYMBOL_NAME (psym), name, namelength);
+  SYMBOL_NAME (psym)[namelength] = '\0';
+  SYMBOL_NAMESPACE (psym) = namespace;
+  SYMBOL_CLASS (psym) = class;
+  SYMBOL_VALUE (psym) = psymval;
+}
+
+/* The work performed by this function is normally done by the macro
+   ADD_PSYMBOL_ADDR_TO_LIST defined in symfile.h.  When debugging gdb, this
+   function makes things easier. */
+
+void
+add_psymbol_addr_to_list (name, namelength, namespace, class, listp, psymval)
+     char *name;
+     int namelength;
+     enum namespace namespace;
+     enum address_class class;
+     struct psymbol_allocation_list *listp;
+     CORE_ADDR psymval;
+{
+  register struct partial_symbol *psym;
+
+  if (listp -> next >= listp -> list + listp -> size)
+    extend_psymbol_list (listp);
+  psym = listp -> next++;
+  SYMBOL_NAME (psym) = (char *) obstack_alloc (psymbol_obstack,
+                                              namelength + 1);
+  memcpy (SYMBOL_NAME (psym), name, namelength);
+  SYMBOL_NAME (psym)[namelength] = '\0';
+  SYMBOL_NAMESPACE (psym) = namespace;
+  SYMBOL_CLASS (psym) = class;
+  SYMBOL_VALUE_ADDRESS (psym) = psymval;
+}
+
+#endif /* DEBUG */
+
 void
 _initialize_symmisc ()
 {