LOC_BASEREG_ARG.
(struct symbol): Remove "basereg" member of "aux_value" union.
(SYMBOL_BASEREG): Remove.
* ada-exp.y (select_possible_type_sym): Do not handle LOC_BASEREG
or LOC_BASEREG_ARG.
* ada-lang.c (resolve_subexp, symtab_for_sym): Likewise.
(ada_add_block_symbols): Likewise.
* ax-gdb.c (gen_var_ref): Likewise.
* buildsym.c (finish_block): Likewise.
* findvar.c (symbol_read_needs_frame, read_var_value): Likewise.
* m2-exp.y (yylex): Likewise.
* mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
* printcmd.c (address_info): Likewise.
* stack.c (print_frame_args, print_block_frame_locals): Likewise.
(print_frame_arg_vars): Likewise.
* symmisc.c (print_symbol): Likewise.
* symtab.c (lookup_block_symbol): Likewise.
* tracepoint.c (collect_symbol, add_local_symbols): Likewise.
(scope_info): Likewise.
+2008-05-22 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * symtab.h (enum address_class): Remove LOC_BASEREG and
+ LOC_BASEREG_ARG.
+ (struct symbol): Remove "basereg" member of "aux_value" union.
+ (SYMBOL_BASEREG): Remove.
+
+ * ada-exp.y (select_possible_type_sym): Do not handle LOC_BASEREG
+ or LOC_BASEREG_ARG.
+ * ada-lang.c (resolve_subexp, symtab_for_sym): Likewise.
+ (ada_add_block_symbols): Likewise.
+ * ax-gdb.c (gen_var_ref): Likewise.
+ * buildsym.c (finish_block): Likewise.
+ * findvar.c (symbol_read_needs_frame, read_var_value): Likewise.
+ * m2-exp.y (yylex): Likewise.
+ * mi/mi-cmd-stack.c (list_args_or_locals): Likewise.
+ * printcmd.c (address_info): Likewise.
+ * stack.c (print_frame_args, print_block_frame_locals): Likewise.
+ (print_frame_arg_vars): Likewise.
+ * symmisc.c (print_symbol): Likewise.
+ * symtab.c (lookup_block_symbol): Likewise.
+ * tracepoint.c (collect_symbol, add_local_symbols): Likewise.
+ (scope_info): Likewise.
+
2008-05-22 Ulrich Weigand <uweigand@de.ibm.com>
* symtab.h (enum address_class): Remove LOC_LOCAL_ARG.
case LOC_REGPARM:
case LOC_REGPARM_ADDR:
case LOC_LOCAL:
- case LOC_BASEREG:
- case LOC_BASEREG_ARG:
case LOC_COMPUTED:
case LOC_COMPUTED_ARG:
return NULL;
case LOC_REGPARM:
case LOC_REGPARM_ADDR:
case LOC_LOCAL:
- case LOC_BASEREG:
- case LOC_BASEREG_ARG:
case LOC_COMPUTED:
case LOC_COMPUTED_ARG:
goto FoundNonType;
case LOC_REGPARM_ADDR:
case LOC_LOCAL:
case LOC_TYPEDEF:
- case LOC_BASEREG:
- case LOC_BASEREG_ARG:
case LOC_COMPUTED:
case LOC_COMPUTED_ARG:
for (j = FIRST_LOCAL_BLOCK;
case LOC_REF_ARG:
case LOC_REGPARM:
case LOC_REGPARM_ADDR:
- case LOC_BASEREG_ARG:
case LOC_COMPUTED_ARG:
arg_sym = sym;
break;
case LOC_REF_ARG:
case LOC_REGPARM:
case LOC_REGPARM_ADDR:
- case LOC_BASEREG_ARG:
case LOC_COMPUTED_ARG:
arg_sym = sym;
break;
case LOC_REF_ARG:
case LOC_REGPARM:
case LOC_REGPARM_ADDR:
- case LOC_BASEREG_ARG:
case LOC_COMPUTED_ARG:
arg_sym = sym;
break;
value->kind = axs_lvalue_memory;
break;
- case LOC_BASEREG: /* relative to some base register */
- case LOC_BASEREG_ARG:
- ax_reg (ax, SYMBOL_BASEREG (var));
- gen_sym_offset (ax, var);
- value->kind = axs_lvalue_memory;
- break;
-
case LOC_TYPEDEF:
error (_("Cannot compute value of typedef `%s'."),
SYMBOL_PRINT_NAME (var));
case LOC_REF_ARG:
case LOC_REGPARM:
case LOC_REGPARM_ADDR:
- case LOC_BASEREG_ARG:
case LOC_COMPUTED_ARG:
nparams++;
break;
case LOC_LABEL:
case LOC_BLOCK:
case LOC_CONST_BYTES:
- case LOC_BASEREG:
case LOC_UNRESOLVED:
case LOC_OPTIMIZED_OUT:
case LOC_COMPUTED:
case LOC_REF_ARG:
case LOC_REGPARM:
case LOC_REGPARM_ADDR:
- case LOC_BASEREG_ARG:
case LOC_COMPUTED_ARG:
TYPE_FIELD_TYPE (ftype, iparams) = SYMBOL_TYPE (sym);
TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
case LOC_LABEL:
case LOC_BLOCK:
case LOC_CONST_BYTES:
- case LOC_BASEREG:
case LOC_UNRESOLVED:
case LOC_OPTIMIZED_OUT:
case LOC_COMPUTED:
case LOC_REGPARM:
case LOC_REGPARM_ADDR:
case LOC_LOCAL:
- case LOC_BASEREG:
- case LOC_BASEREG_ARG:
return 1;
case LOC_UNDEF:
addr += SYMBOL_VALUE (var);
break;
- case LOC_BASEREG:
- case LOC_BASEREG_ARG:
- {
- struct value *regval;
-
- regval = value_from_register (lookup_pointer_type (type),
- SYMBOL_BASEREG (var), frame);
- if (regval == NULL)
- error (_("Value of base register not available."));
- addr = value_as_address (regval);
- addr += SYMBOL_VALUE (var);
- break;
- }
-
case LOC_TYPEDEF:
error (_("Cannot look up value of a typedef"));
break;
case LOC_REGPARM:
case LOC_REGPARM_ADDR:
case LOC_LOCAL:
- case LOC_BASEREG:
- case LOC_BASEREG_ARG:
case LOC_CONST:
case LOC_CONST_BYTES:
case LOC_OPTIMIZED_OUT:
case LOC_REF_ARG: /* reference arg */
case LOC_REGPARM: /* register arg */
case LOC_REGPARM_ADDR: /* indirect register arg */
- case LOC_BASEREG_ARG: /* basereg arg */
case LOC_COMPUTED_ARG: /* arg with computed location */
if (!locals)
print_me = 1;
break;
case LOC_LOCAL: /* stack local */
- case LOC_BASEREG: /* basereg local */
case LOC_STATIC: /* static */
case LOC_REGISTER: /* register */
case LOC_COMPUTED: /* computed location */
struct symbol *sym;
struct minimal_symbol *msymbol;
long val;
- long basereg;
asection *section;
CORE_ADDR load_addr;
int is_a_field_of_this; /* C++: lookup_symbol sets this to nonzero
current_language->la_language, DMGL_ANSI);
printf_filtered ("\" is ");
val = SYMBOL_VALUE (sym);
- basereg = SYMBOL_BASEREG (sym);
section = SYMBOL_BFD_SECTION (sym);
switch (SYMBOL_CLASS (sym))
printf_filtered (_("a reference argument at offset %ld"), val);
break;
- case LOC_BASEREG:
- printf_filtered (_("a variable at offset %ld from register %s"),
- val, gdbarch_register_name (current_gdbarch, basereg));
- break;
-
- case LOC_BASEREG_ARG:
- printf_filtered (_("an argument at offset %ld from register %s"),
- val, gdbarch_register_name (current_gdbarch, basereg));
- break;
-
case LOC_TYPEDEF:
printf_filtered (_("a typedef"));
break;
keep track of stack offsets in them. */
case LOC_REGPARM:
case LOC_REGPARM_ADDR:
- case LOC_BASEREG_ARG:
case LOC_COMPUTED_ARG:
break;
case LOC_LOCAL:
case LOC_REGISTER:
case LOC_STATIC:
- case LOC_BASEREG:
case LOC_COMPUTED:
values_printed = 1;
for (j = 0; j < num_tabs; j++)
case LOC_REF_ARG:
case LOC_REGPARM:
case LOC_REGPARM_ADDR:
- case LOC_BASEREG_ARG:
case LOC_COMPUTED_ARG:
values_printed = 1;
fputs_filtered (SYMBOL_PRINT_NAME (sym), stream);
SYMBOL_VALUE (symbol));
break;
- case LOC_BASEREG:
- fprintf_filtered (outfile, "local at 0x%lx from register %d",
- SYMBOL_VALUE (symbol), SYMBOL_BASEREG (symbol));
- break;
-
- case LOC_BASEREG_ARG:
- fprintf_filtered (outfile, "arg at 0x%lx from register %d",
- SYMBOL_VALUE (symbol), SYMBOL_BASEREG (symbol));
- break;
-
case LOC_TYPEDEF:
break;
SYMBOL_CLASS (sym) != LOC_REF_ARG &&
SYMBOL_CLASS (sym) != LOC_REGPARM &&
SYMBOL_CLASS (sym) != LOC_REGPARM_ADDR &&
- SYMBOL_CLASS (sym) != LOC_BASEREG_ARG &&
SYMBOL_CLASS (sym) != LOC_COMPUTED_ARG)
{
break;
LOC_CONST_BYTES,
- /* Value is at SYMBOL_VALUE offset from the current value of
- register number SYMBOL_BASEREG. This exists mainly for the same
- things that LOC_LOCAL and LOC_ARG do; but we need to do this
- instead because on 88k DWARF gives us the offset from the
- frame/stack pointer, rather than the offset from the "canonical
- frame address" used by COFF, stabs, etc., and we don't know how
- to convert between these until we start examining prologues.
-
- Note that LOC_BASEREG is much less general than a DWARF expression.
- We don't need the generality (at least not yet), and storing a general
- DWARF expression would presumably take up more space than the existing
- scheme. */
-
- LOC_BASEREG,
-
- /* Same as LOC_BASEREG but it is an argument. */
-
- LOC_BASEREG_ARG,
-
/* Value is at fixed address, but the address of the variable has
to be determined from the minimal symbol table whenever the
variable is referenced.
union
{
- /* Used by LOC_BASEREG and LOC_BASEREG_ARG. */
- short basereg;
/* An arbitrary data pointer. Note that this data must be
allocated using the same obstack as the symbol itself. */
/* So far it is only used by LOC_COMPUTED and LOC_COMPUTED_ARG to
#define SYMBOL_TYPE(symbol) (symbol)->type
#define SYMBOL_LINE(symbol) (symbol)->line
#define SYMBOL_SYMTAB(symbol) (symbol)->symtab
-#define SYMBOL_BASEREG(symbol) (symbol)->aux_value.basereg
#define SYMBOL_OPS(symbol) (symbol)->ops
#define SYMBOL_LOCATION_BATON(symbol) (symbol)->aux_value.ptr
\f
}
add_memrange (collect, reg, offset, len);
break;
- case LOC_BASEREG:
- case LOC_BASEREG_ARG:
- reg = SYMBOL_BASEREG (sym);
- offset = SYMBOL_VALUE (sym);
- if (info_verbose)
- {
- printf_filtered ("LOC_BASEREG %s: collect %ld bytes at offset ",
- DEPRECATED_SYMBOL_NAME (sym), len);
- printf_vma (offset);
- printf_filtered (" from basereg %d\n", reg);
- }
- add_memrange (collect, reg, offset, len);
- break;
case LOC_UNRESOLVED:
printf_filtered ("Don't know LOC_UNRESOLVED %s\n",
DEPRECATED_SYMBOL_NAME (sym));
case LOC_LOCAL:
case LOC_STATIC:
case LOC_REGISTER:
- case LOC_BASEREG:
if (type == 'L') /* collecting Locals */
{
count++;
case LOC_REF_ARG:
case LOC_REGPARM:
case LOC_REGPARM_ADDR:
- case LOC_BASEREG_ARG:
if (type == 'A') /* collecting Arguments */
{
count++;
printf_filtered ("a function at address ");
printf_filtered ("%s", paddress (BLOCK_START (SYMBOL_BLOCK_VALUE (sym))));
break;
- case LOC_BASEREG:
- printf_filtered ("a variable at offset %ld from register $%s",
- SYMBOL_VALUE (sym),
- gdbarch_register_name
- (current_gdbarch, SYMBOL_BASEREG (sym)));
- break;
- case LOC_BASEREG_ARG:
- printf_filtered ("an argument at offset %ld from register $%s",
- SYMBOL_VALUE (sym),
- gdbarch_register_name
- (current_gdbarch, SYMBOL_BASEREG (sym)));
- break;
case LOC_UNRESOLVED:
msym = lookup_minimal_symbol (DEPRECATED_SYMBOL_NAME (sym),
NULL, NULL);