From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8297 invoked by alias); 19 May 2008 16:54:19 -0000 Received: (qmail 8283 invoked by uid 22791); 19 May 2008 16:54:17 -0000 X-Spam-Check-By: sourceware.org Received: from mtagate8.de.ibm.com (HELO mtagate8.de.ibm.com) (195.212.29.157) by sourceware.org (qpsmtpd/0.31) with ESMTP; Mon, 19 May 2008 16:53:54 +0000 Received: from d12nrmr1607.megacenter.de.ibm.com (d12nrmr1607.megacenter.de.ibm.com [9.149.167.49]) by mtagate8.de.ibm.com (8.13.8/8.13.8) with ESMTP id m4JGrSQ4574216 for ; Mon, 19 May 2008 16:53:28 GMT Received: from d12av02.megacenter.de.ibm.com (d12av02.megacenter.de.ibm.com [9.149.165.228]) by d12nrmr1607.megacenter.de.ibm.com (8.13.8/8.13.8/NCO v8.7) with ESMTP id m4JGrSsX4001912 for ; Mon, 19 May 2008 18:53:28 +0200 Received: from d12av02.megacenter.de.ibm.com (loopback [127.0.0.1]) by d12av02.megacenter.de.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id m4JGrSKm016851 for ; Mon, 19 May 2008 18:53:28 +0200 Received: from tuxmaker.boeblingen.de.ibm.com (tuxmaker.boeblingen.de.ibm.com [9.152.85.9]) by d12av02.megacenter.de.ibm.com (8.12.11.20060308/8.12.11) with SMTP id m4JGrSZS016848 for ; Mon, 19 May 2008 18:53:28 +0200 Message-Id: <200805191653.m4JGrSZS016848@d12av02.megacenter.de.ibm.com> Received: by tuxmaker.boeblingen.de.ibm.com (sSMTP sendmail emulation); Mon, 19 May 2008 18:53:28 +0200 Subject: [rfc][3/3] Eliminate LOC_BASEREG and LOC_BASEREG_ARG To: gdb-patches@sourceware.org Date: Mon, 19 May 2008 18:49:00 -0000 From: "Ulrich Weigand" X-Mailer: ELM [version 2.5 PL2] MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2008-05/txt/msg00567.txt.bz2 Hello, finally, the LOC_BASEREG and LOC_BASEREG_ARG address classes are also no longer set anywhere. I don't know exactly since when they're no longer used, but in any case the functionality is completely superseeded by LOC_COMPUTED (which is used by the DWARF-2 reader anyway). Removing this also allows us to get rid of the basereg member of the aux_value union in struct symbol. (At which point there is only one member of the union remaining. Should we remove the union?) Any objections to removing those address classes? Bye, Ulrich ChangeLog: * 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. diff -urNp gdb-orig/gdb/ada-exp.y gdb-head/gdb/ada-exp.y --- gdb-orig/gdb/ada-exp.y 2008-05-19 18:16:58.193650538 +0200 +++ gdb-head/gdb/ada-exp.y 2008-05-19 18:15:44.104943900 +0200 @@ -1059,8 +1059,6 @@ select_possible_type_sym (struct ada_sym 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; diff -urNp gdb-orig/gdb/ada-lang.c gdb-head/gdb/ada-lang.c --- gdb-orig/gdb/ada-lang.c 2008-05-19 18:16:58.235644530 +0200 +++ gdb-head/gdb/ada-lang.c 2008-05-19 18:14:23.044303562 +0200 @@ -2893,8 +2893,6 @@ resolve_subexp (struct expression **expp 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; @@ -4321,8 +4319,6 @@ symtab_for_sym (struct symbol *sym) 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; @@ -5223,7 +5219,6 @@ ada_add_block_symbols (struct obstack *o case LOC_REF_ARG: case LOC_REGPARM: case LOC_REGPARM_ADDR: - case LOC_BASEREG_ARG: case LOC_COMPUTED_ARG: arg_sym = sym; break; @@ -5256,7 +5251,6 @@ ada_add_block_symbols (struct obstack *o case LOC_REF_ARG: case LOC_REGPARM: case LOC_REGPARM_ADDR: - case LOC_BASEREG_ARG: case LOC_COMPUTED_ARG: arg_sym = sym; break; @@ -5311,7 +5305,6 @@ ada_add_block_symbols (struct obstack *o case LOC_REF_ARG: case LOC_REGPARM: case LOC_REGPARM_ADDR: - case LOC_BASEREG_ARG: case LOC_COMPUTED_ARG: arg_sym = sym; break; diff -urNp gdb-orig/gdb/ax-gdb.c gdb-head/gdb/ax-gdb.c --- gdb-orig/gdb/ax-gdb.c 2008-05-19 18:16:58.280638093 +0200 +++ gdb-head/gdb/ax-gdb.c 2008-05-19 18:15:13.164714383 +0200 @@ -569,13 +569,6 @@ gen_var_ref (struct agent_expr *ax, stru 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)); diff -urNp gdb-orig/gdb/buildsym.c gdb-head/gdb/buildsym.c --- gdb-orig/gdb/buildsym.c 2008-05-19 18:16:58.287637091 +0200 +++ gdb-head/gdb/buildsym.c 2008-05-19 18:12:04.095033082 +0200 @@ -289,7 +289,6 @@ finish_block (struct symbol *symbol, str case LOC_REF_ARG: case LOC_REGPARM: case LOC_REGPARM_ADDR: - case LOC_BASEREG_ARG: case LOC_COMPUTED_ARG: nparams++; break; @@ -302,7 +301,6 @@ finish_block (struct symbol *symbol, str case LOC_LABEL: case LOC_BLOCK: case LOC_CONST_BYTES: - case LOC_BASEREG: case LOC_UNRESOLVED: case LOC_OPTIMIZED_OUT: case LOC_COMPUTED: @@ -328,7 +326,6 @@ finish_block (struct symbol *symbol, str 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; @@ -343,7 +340,6 @@ finish_block (struct symbol *symbol, str case LOC_LABEL: case LOC_BLOCK: case LOC_CONST_BYTES: - case LOC_BASEREG: case LOC_UNRESOLVED: case LOC_OPTIMIZED_OUT: case LOC_COMPUTED: diff -urNp gdb-orig/gdb/findvar.c gdb-head/gdb/findvar.c --- gdb-orig/gdb/findvar.c 2008-05-19 18:16:58.293636233 +0200 +++ gdb-head/gdb/findvar.c 2008-05-19 18:11:28.285702212 +0200 @@ -359,8 +359,6 @@ symbol_read_needs_frame (struct symbol * case LOC_REGPARM: case LOC_REGPARM_ADDR: case LOC_LOCAL: - case LOC_BASEREG: - case LOC_BASEREG_ARG: return 1; case LOC_UNDEF: @@ -485,20 +483,6 @@ read_var_value (struct symbol *var, stru 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; diff -urNp gdb-orig/gdb/m2-exp.y gdb-head/gdb/m2-exp.y --- gdb-orig/gdb/m2-exp.y 2008-05-19 18:16:58.299635375 +0200 +++ gdb-head/gdb/m2-exp.y 2008-05-19 18:15:04.015560866 +0200 @@ -1044,8 +1044,6 @@ yylex () 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: diff -urNp gdb-orig/gdb/mi/mi-cmd-stack.c gdb-head/gdb/mi/mi-cmd-stack.c --- gdb-orig/gdb/mi/mi-cmd-stack.c 2008-05-19 18:16:58.305634516 +0200 +++ gdb-head/gdb/mi/mi-cmd-stack.c 2008-05-19 18:10:39.854314110 +0200 @@ -254,14 +254,12 @@ list_args_or_locals (int locals, int val 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 */ diff -urNp gdb-orig/gdb/printcmd.c gdb-head/gdb/printcmd.c --- gdb-orig/gdb/printcmd.c 2008-05-19 18:16:58.314633229 +0200 +++ gdb-head/gdb/printcmd.c 2008-05-19 18:15:36.612951133 +0200 @@ -1041,7 +1041,6 @@ address_info (char *exp, int from_tty) 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 @@ -1099,7 +1098,6 @@ address_info (char *exp, int from_tty) 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)) @@ -1172,16 +1170,6 @@ address_info (char *exp, int from_tty) 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; diff -urNp gdb-orig/gdb/stack.c gdb-head/gdb/stack.c --- gdb-orig/gdb/stack.c 2008-05-19 18:16:58.322632084 +0200 +++ gdb-head/gdb/stack.c 2008-05-19 18:11:39.466832530 +0200 @@ -264,7 +264,6 @@ print_frame_args (struct symbol *func, s keep track of stack offsets in them. */ case LOC_REGPARM: case LOC_REGPARM_ADDR: - case LOC_BASEREG_ARG: case LOC_COMPUTED_ARG: break; @@ -1375,7 +1374,6 @@ print_block_frame_locals (struct block * 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++) @@ -1579,7 +1577,6 @@ print_frame_arg_vars (struct frame_info 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); diff -urNp gdb-orig/gdb/symmisc.c gdb-head/gdb/symmisc.c --- gdb-orig/gdb/symmisc.c 2008-05-19 18:16:58.329631083 +0200 +++ gdb-head/gdb/symmisc.c 2008-05-19 18:11:52.242866446 +0200 @@ -668,16 +668,6 @@ print_symbol (void *args) 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; diff -urNp gdb-orig/gdb/symtab.c gdb-head/gdb/symtab.c --- gdb-orig/gdb/symtab.c 2008-05-19 18:16:58.342629223 +0200 +++ gdb-head/gdb/symtab.c 2008-05-19 18:12:17.036176544 +0200 @@ -1961,7 +1961,6 @@ lookup_block_symbol (const struct block 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; diff -urNp gdb-orig/gdb/symtab.h gdb-head/gdb/symtab.h --- gdb-orig/gdb/symtab.h 2008-05-19 18:16:58.381623644 +0200 +++ gdb-head/gdb/symtab.h 2008-05-19 18:13:47.234973402 +0200 @@ -485,25 +485,6 @@ enum address_class 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. @@ -611,8 +592,6 @@ struct symbol 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 @@ -637,7 +616,6 @@ struct symbol #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 diff -urNp gdb-orig/gdb/tracepoint.c gdb-head/gdb/tracepoint.c --- gdb-orig/gdb/tracepoint.c 2008-05-19 18:16:58.390622357 +0200 +++ gdb-head/gdb/tracepoint.c 2008-05-19 18:14:57.993490418 +0200 @@ -1290,19 +1290,6 @@ collect_symbol (struct collection_list * } 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)); @@ -1338,7 +1325,6 @@ add_local_symbols (struct collection_lis case LOC_LOCAL: case LOC_STATIC: case LOC_REGISTER: - case LOC_BASEREG: if (type == 'L') /* collecting Locals */ { count++; @@ -1350,7 +1336,6 @@ add_local_symbols (struct collection_lis case LOC_REF_ARG: case LOC_REGPARM: case LOC_REGPARM_ADDR: - case LOC_BASEREG_ARG: if (type == 'A') /* collecting Arguments */ { count++; @@ -2491,18 +2476,6 @@ scope_info (char *args, int from_tty) 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); -- Dr. Ulrich Weigand GNU Toolchain for Linux on System z and Cell BE Ulrich.Weigand@de.ibm.com