start-sanitize-gdbtk

* gdbtk.c (gdb_get_breakpoint_info):  Add string for new
	enumeration del_at_next_stop to bpdisp array.

end-sanitize-gdbtk
	* eval.c (evaluate_subexp_for_sizeof):  Handle dereferencing
	of non-pointer values.

	* symtab.c (gdb_mangle_name):  Improve mangling of nested types,
	their physical names already include the class name.

	* valops.c (value_cast):  Handle upcast of a class pointer.

	From Andreas Schwab (schwab@issan.informatik.uni-dortmund.de):
	* corelow.c (get_core_registers):  Make secname big enough.
This commit is contained in:
Peter Schauer 1997-06-07 09:38:31 +00:00
parent 94d8217d65
commit 27f1958c24
5 changed files with 36 additions and 12 deletions

View File

@ -1,3 +1,21 @@
Sat Jun 7 02:34:19 1997 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
start-sanitize-gdbtk
* gdbtk.c (gdb_get_breakpoint_info): Add string for new
enumeration del_at_next_stop to bpdisp array.
end-sanitize-gdbtk
* eval.c (evaluate_subexp_for_sizeof): Handle dereferencing
of non-pointer values.
* symtab.c (gdb_mangle_name): Improve mangling of nested types,
their physical names already include the class name.
* valops.c (value_cast): Handle upcast of a class pointer.
From Andreas Schwab (schwab@issan.informatik.uni-dortmund.de):
* corelow.c (get_core_registers): Make secname big enough.
Fri Jun 6 14:43:23 1997 Keith Seitz <keiths@pizza.cygnus.com>
* config/sh/tm-sh.h: add define for FPSCR_REGNUM

View File

@ -278,7 +278,7 @@ get_core_registers (regno)
sec_ptr reg_sec;
unsigned size;
char *the_regs;
char secname[10];
char secname[30];
enum bfd_flavour our_flavour = bfd_get_flavour (core_bfd);
struct core_fns *cf = NULL;

View File

@ -1,5 +1,5 @@
/* Evaluate expressions for GDB.
Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996
Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997
Free Software Foundation, Inc.
This file is part of GDB.
@ -524,9 +524,6 @@ evaluate_subexp_standard (expect_type, exp, pos, noside)
low_bound = 0;
high_bound = (TYPE_LENGTH (type) / element_size) - 1;
}
if (nargs > (high_bound - low_bound + 1))
/* to avoid memory corruption */
error ("Too many array elements");
index = low_bound;
memset (VALUE_CONTENTS_RAW (array), 0, TYPE_LENGTH (expect_type));
for (tem = nargs; --nargs >= 0; )
@ -551,6 +548,9 @@ evaluate_subexp_standard (expect_type, exp, pos, noside)
}
else
{
if (index > high_bound)
/* to avoid memory corruption */
error ("Too many array elements");
memcpy (VALUE_CONTENTS_RAW (array)
+ (index - low_bound) * element_size,
VALUE_CONTENTS (element),
@ -1445,7 +1445,8 @@ evaluate_subexp_standard (expect_type, exp, pos, noside)
arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
if (noside == EVAL_SKIP)
goto nosideret;
if (TYPE_CODE (VALUE_TYPE (arg2)) != TYPE_CODE_INT)
type = check_typedef (VALUE_TYPE (arg2));
if (TYPE_CODE (type) != TYPE_CODE_INT)
error ("Non-integral right operand for \"@\" operator.");
if (noside == EVAL_AVOID_SIDE_EFFECTS)
{
@ -1560,7 +1561,8 @@ evaluate_subexp_standard (expect_type, exp, pos, noside)
return value_zero (exp->elts[pc + 1].type, lval_memory);
else
return value_at_lazy (exp->elts[pc + 1].type,
value_as_pointer (arg1));
value_as_pointer (arg1),
NULL);
case UNOP_PREINCREMENT:
arg1 = evaluate_subexp (expect_type, exp, pos, noside);
@ -1801,6 +1803,10 @@ evaluate_subexp_for_sizeof (exp, pos)
(*pos)++;
val = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
type = check_typedef (VALUE_TYPE (val));
if (TYPE_CODE (type) != TYPE_CODE_PTR
&& TYPE_CODE (type) != TYPE_CODE_REF
&& TYPE_CODE (type) != TYPE_CODE_ARRAY)
error ("Attempt to take contents of a non-pointer value.");
type = check_typedef (TYPE_TARGET_TYPE (type));
return value_from_longest (builtin_type_int, (LONGEST)
TYPE_LENGTH (type));

View File

@ -376,7 +376,7 @@ gdb_get_breakpoint_info (clientData, interp, argc, argv)
"longjmp", "longjmp resume", "step resume",
"through sigtramp", "watchpoint scope",
"call dummy" };
static char *bpdisp[] = {"delete", "disable", "donttouch"};
static char *bpdisp[] = {"delete", "delstop", "disable", "donttouch"};
struct command_line *cmd;
int bpnum;
struct breakpoint *b;

View File

@ -305,12 +305,11 @@ gdb_mangle_name (type, i, j)
if (len == 0)
{
sprintf (buf, "__%s%s", const_prefix, volatile_prefix);
if (strcmp(buf, "__") == 0)
buf[0] = '\0';
}
else if (newname != NULL && strchr (newname, '<') != NULL)
else if (physname[0] == 't' || physname[0] == 'Q')
{
/* Template methods are fully mangled. */
/* The physname for template and qualified methods already includes
the class name. */
sprintf (buf, "__%s%s", const_prefix, volatile_prefix);
newname = NULL;
len = 0;
@ -2063,6 +2062,7 @@ decode_line_1 (argptr, funfirstline, default_symtab, default_line, canonical)
xmalloc (sizeof (struct symtab_and_line));
values.nelts = 1;
values.sals[0] = find_pc_line (pc, 0);
values.sals[0].pc = pc;
return values;
}