* valops.c (call_function_by_hand): If the function has a
authorJim Blandy <jimb@codesourcery.com>
Sat, 22 Nov 1997 00:50:09 +0000 (00:50 +0000)
committerJim Blandy <jimb@codesourcery.com>
Sat, 22 Nov 1997 00:50:09 +0000 (00:50 +0000)
prototype, convert its arguments as if by assignment.  Otherwise,
do the usual promotions.
* stabsread.c (define_symbol): Set the TYPE_FLAG_PROTOTYPED flag
on functions' types when we can; all C++ functions should get it,
and if the Sun-style prototype notation is in the stabs, we can
notice that.

gdb/stabsread.c

index 62c3359c15c1df9b588f4de8242fd52743a89218..e32afd83f208ff58e423dd597c231c7f7876c06d 100644 (file)
@@ -1607,6 +1607,11 @@ define_symbol (valu, string, desc, type, objfile)
         in GDB.  E.g. "int" is converted to "function returning int".  */
       if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_FUNC)
        SYMBOL_TYPE (sym) = lookup_function_type (SYMBOL_TYPE (sym));
+
+      /* All functions in C++ have prototypes.  */
+      if (SYMBOL_LANGUAGE (sym) == language_cplus)
+       TYPE_FLAGS (SYMBOL_TYPE (sym)) |= TYPE_FLAG_PROTOTYPED;
+
       /* fall into process_prototype_types */
 
     process_prototype_types:
@@ -1614,10 +1619,15 @@ define_symbol (valu, string, desc, type, objfile)
         about their actual types (FIXME -- we should remember the whole
         function prototype), but the list may define some new types
         that we have to remember, so we must scan it now.  */
-      while (*p == ';') {
-       p++;
-       read_type (&p, objfile);
-      }
+      if (*p == ';')
+       {
+         TYPE_FLAGS (SYMBOL_TYPE (sym)) |= TYPE_FLAG_PROTOTYPED;
+
+         while (*p == ';') {
+           p++;
+           read_type (&p, objfile);
+         }
+       }
       break;
 
     case 'F':