aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/stabsread.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/gdb/stabsread.c b/gdb/stabsread.c
index 62c3359..e32afd8 100644
--- a/gdb/stabsread.c
+++ b/gdb/stabsread.c
@@ -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':