{"block start larger than block end", 0, 0};
struct complaint const_vol_complaint =
- {"const/volatile indicator missing, got '%c'", 0, 0};
+ {"const/volatile indicator missing (ok if using g++ v1.x), got '%c'", 0, 0};
struct complaint error_type_complaint =
{"C++ type mismatch between compiler and debugger", 0, 0};
struct complaint invalid_member_complaint =
{"invalid (minimal) member type data format at symtab pos %d.", 0, 0};
+
+struct complaint range_type_base_complaint =
+ {"base type %d of range type is not defined", 0, 0};
\f
/* Support for Sun changes to dbx symbol format */
/* We need to be able to deal with both N_FN or N_TEXT,
because we have no way of knowing whether the sys-supplied ld
or GNU ld was used to make the executable. */
-#if ! (N_FN & N_EXT)
case N_FN:
-#endif
- case N_FN | N_EXT:
case N_TEXT:
bufp->n_value += addr; /* Relocate */
SET_NAMESTRING();
source file, or a previously included file.
This seems to be a lot of time to be spending on N_SOL, but
- things like "break expread.y:435" need to work (I
+ things like "break c-exp.y:435" need to work (I
suppose the psymtab_include_list could be hashed or put
in a binary tree, if profiling shows this is a major hog). */
if (!strcmp (namestring, pst->filename))
continue;
case N_LSYM: /* Typedef or automatic variable. */
+ case N_STSYM: /* Data seg var -- static */
+ case N_LCSYM: /* BSS " */
+ case N_NBSTS: /* Gould nobase. */
+ case N_NBLCS: /* symbols. */
+
SET_NAMESTRING();
p = (char *) strchr (namestring, ':');
case N_FUN:
case N_GSYM: /* Global (extern) variable; can be
data or bss (sigh). */
- case N_STSYM: /* Data seg var -- static */
- case N_LCSYM: /* BSS " */
-
- case N_NBSTS: /* Gould nobase. */
- case N_NBLCS: /* symbols. */
/* Following may probably be ignored; I'll leave them here
for now (until I do Pascal and Modula 2 extensions). */
case 't':
ADD_PSYMBOL_TO_LIST (namestring, p - namestring,
VAR_NAMESPACE, LOC_TYPEDEF,
- global_psymbols, bufp->n_value);
+ static_psymbols, bufp->n_value);
continue;
case 'f':
local_symbols = new->locals;
break;
- case N_FN | N_EXT:
- /* This kind of symbol supposedly indicates the start
- of an object file. In fact this type does not appear. */
+ case N_FN:
+ /* This kind of symbol indicates the start of an object file. */
break;
case N_SO:
baseclass = read_type (pp);
*pp += 1; /* skip trailing ';' */
-#if 0
-/* One's understanding improves, grasshopper... */
- if (offset != 0)
- {
- static int error_printed = 0;
-
- if (!error_printed)
- {
- fprintf (stderr,
-"\nWarning: GDB has limited understanding of multiple inheritance...");
- if (!info_verbose)
- fprintf(stderr, "\n");
- error_printed = 1;
- }
- }
-#endif
-
/* Make this baseclass visible for structure-printing purposes. */
new = (struct nextfield *) alloca (sizeof (struct nextfield));
new->next = list;
D for `const volatile' member functions. */
if (**pp == 'A' || **pp == 'B' || **pp == 'C' || **pp == 'D')
(*pp)++;
-#if 0
+
/* This probably just means we're processing a file compiled
with g++ version 1. */
else
complain(&const_vol_complaint, **pp);
-#endif /* 0 */
switch (*(*pp)++)
{
TYPE_CODE (result_type) = TYPE_CODE_RANGE;
TYPE_TARGET_TYPE (result_type) = *dbx_lookup_type(rangenums);
+ if (TYPE_TARGET_TYPE (result_type) == 0) {
+ complain (&range_type_base_complaint, rangenums[1]);
+ TYPE_TARGET_TYPE (result_type) = builtin_type_int;
+ }
TYPE_NFIELDS (result_type) = 2;
TYPE_FIELDS (result_type) =