ansi name abuse changes
authorDavid Henkel-Wallace <gumby@cygnus>
Fri, 15 Nov 1991 23:23:11 +0000 (23:23 +0000)
committerDavid Henkel-Wallace <gumby@cygnus>
Fri, 15 Nov 1991 23:23:11 +0000 (23:23 +0000)
gdb/dwarfread.c
gdb/symtab.c

index bfdddc554bb48445aab8ea9e10d84377f51558cf..2d72310b2e425ea526d77972d6b8d19b2d766bce 100644 (file)
@@ -63,9 +63,12 @@ FIXME: See other FIXME's and "ifdef 0" scattered throughout the code for
 other things to work on, if you get bored. :-)
 
 */
-
 #include <stdio.h>
+#ifdef __STDC__
+#include <stdarg.h>
+#else
 #include <varargs.h>
+#endif
 #include <fcntl.h>
 
 #include "defs.h"
@@ -300,7 +303,8 @@ static int numutypes;               /* Max number of user type pointers */
    more intuitive, since it can be used for both static and external
    definitions. */
 
-static void dwarfwarn ();      /* EXFUN breaks with <varargs.h> (FIXME)*/
+static void
+EXFUN (dwarfwarn, (char *fmt DOTS));
 
 static void
 EXFUN (scan_partial_symbols, (char *thisdie AND char *enddie));
@@ -590,6 +594,26 @@ NOTES
        information for the DIE where the problem was noticed.
 */
 
+#ifdef __STDC__
+static void
+DEFUN(dwarfwarn, (fmt), char *fmt DOTS)
+{
+  va_list ap;
+  
+  va_start (ap, fmt);
+  warning_setup ();
+  fprintf (stderr, "DWARF warning (ref 0x%x): ", curdie -> dieref);
+  if (curdie -> at_name)
+    {
+      fprintf (stderr, "'%s': ", curdie -> at_name);
+    }
+  vfprintf (stderr, fmt, ap);
+  fprintf (stderr, "\n");
+  fflush (stderr);
+  va_end (ap);
+}
+#else
+
 static void
 dwarfwarn (va_alist)
      va_dcl
@@ -610,7 +634,7 @@ dwarfwarn (va_alist)
   fflush (stderr);
   va_end (ap);
 }
-
+#endif
 /*
 
 LOCAL FUNCTION
index 9d4db8f2b2a7073f664f4afa8b1adf0051aca55b..27d4952dfe789f5e8846116d7fe47387bc507a8c 100644 (file)
@@ -165,25 +165,25 @@ type_name_no_tag (type)
      register struct type *type;
 {
   register char *name = TYPE_NAME (type);
-  char *strchr ();
+
   if (name == 0)
     return 0;
 
-#if 0
   switch (TYPE_CODE (type))
     {
     case TYPE_CODE_STRUCT:
-      return name + 7;
+      if(!strncmp(name,"struct ",7))
+       return name + 7;
+      else return name;
     case TYPE_CODE_UNION:
+      if(!strncmp(name,"union ",6))
       return name + 6;
+      else return name;
     case TYPE_CODE_ENUM:
+      if(!strncmp(name,"enum ",5))
       return name + 5;
+      else return name;
     }
-#endif
-
-  name = strchr (name, ' ');
-  if (name)
-    return name + 1;
 
   return TYPE_NAME (type);
 }
@@ -378,6 +378,31 @@ lookup_enum (name, block)
   return SYMBOL_TYPE (sym);
 }
 
+/* Lookup a template type named "template NAME<TYPE>",
+   visible in lexical block BLOCK.  */
+
+struct type *
+lookup_template_type (name, type, block)
+     char *name;
+     struct type *type;
+     struct block *block;
+{
+  struct symbol *sym ;
+  char *nam = (char*) alloca(strlen(name) + strlen(type->name) + 4);
+  strcpy(nam, name);
+  strcat(nam, "<");
+  strcat(nam, type->name);
+  strcat(nam, " >");           /* extra space still introduced in gcc? */
+
+  sym = lookup_symbol (nam, block, VAR_NAMESPACE, 0, (struct symtab **)NULL);
+
+  if (sym == 0)
+    error ("No template type named %s.", name);
+  if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_STRUCT)
+    error ("This context has class, union or enum %s, not a struct.", name);
+  return SYMBOL_TYPE (sym);
+}
+
 /* Given a type TYPE, lookup the type of the component of type named
    NAME.  
    If NOERR is nonzero, return zero if NAME is not suitably defined.  */
@@ -2072,21 +2097,9 @@ decode_line_1 (argptr, funfirstline, default_symtab, default_line)
       /* Extract the file name.  */
       p1 = p;
       while (p != *argptr && p[-1] == ' ') --p;
-      copy = (char *) alloca (p - *argptr + 1 + (q1 - q));
-      if (q1 - q)
-       {
-         copy[0] = 'o';
-         copy[1] = 'p';
-         copy[2] = CPLUS_MARKER;
-         bcopy (q, copy + 3, q1-q);
-         copy[3 + (q1-q)] = 0;
-         p = q1;
-       }
-      else
-       {
-         bcopy (*argptr, copy, p - *argptr);
-         copy[p - *argptr] = 0;
-       }
+      copy = (char *) alloca (p - *argptr + 1);
+      bcopy (*argptr, copy, p - *argptr);
+      copy[p - *argptr] = 0;
 
       /* Find that file's data.  */
       s = lookup_symtab (copy);