This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [rfc][3/3] Eliminate LOC_BASEREG and LOC_BASEREG_ARG
- From: "Ulrich Weigand" <uweigand at de dot ibm dot com>
- To: drow at false dot org (Daniel Jacobowitz)
- Cc: gdb-patches at sourceware dot org
- Date: Mon, 19 May 2008 19:19:57 +0200 (CEST)
- Subject: Re: [rfc][3/3] Eliminate LOC_BASEREG and LOC_BASEREG_ARG
Daniel Jacobowitz wrote:
> On Mon, May 19, 2008 at 06:53:28PM +0200, Ulrich Weigand wrote:
> > 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?)
>
> IMO, yes. The remaining union member is probably good for any new
> types also.
OK. When I commit the other patches, I'll add this one on top ...
Bye,
Ulrich
ChangeLog:
* symtab.h (struct symbol): Make "aux_value" member a void pointer
instead of a union.
(SYMBOL_LOCATION_BATON): Update.
diff -urNp gdb-orig/gdb/symtab.h gdb-head/gdb/symtab.h
--- gdb-orig/gdb/symtab.h 2008-05-19 19:14:12.966210396 +0200
+++ gdb-head/gdb/symtab.h 2008-05-19 19:13:40.332972514 +0200
@@ -587,25 +587,20 @@ struct symbol
const struct symbol_ops *ops;
- /* Some symbols require additional information to be recorded on a
- per-symbol basis. Stash those values here. */
+ /* An arbitrary data pointer, allowing symbol readers to record
+ additional information on a per-symbol basis. 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
+ find the location information. For a LOC_BLOCK symbol
+ for a function in a compilation unit compiled with DWARF 2
+ information, this is information used internally by the DWARF 2
+ code --- specifically, the location expression for the frame
+ base for this function. */
+ /* FIXME drow/2003-02-21: For the LOC_BLOCK case, it might be better
+ to add a magic symbol to the block containing this information,
+ or to have a generic debug info annotation slot for symbols. */
- union
- {
- /* 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
- find the location information. For a LOC_BLOCK symbol
- for a function in a compilation unit compiled with DWARF 2
- information, this is information used internally by the DWARF 2
- code --- specifically, the location expression for the frame
- base for this function. */
- /* FIXME drow/2003-02-21: For the LOC_BLOCK case, it might be better
- to add a magic symbol to the block containing this information,
- or to have a generic debug info annotation slot for symbols. */
- void *ptr;
- }
- aux_value;
+ void *aux_value;
struct symbol *hash_next;
};
@@ -617,7 +612,7 @@ struct symbol
#define SYMBOL_LINE(symbol) (symbol)->line
#define SYMBOL_SYMTAB(symbol) (symbol)->symtab
#define SYMBOL_OPS(symbol) (symbol)->ops
-#define SYMBOL_LOCATION_BATON(symbol) (symbol)->aux_value.ptr
+#define SYMBOL_LOCATION_BATON(symbol) (symbol)->aux_value
/* A partial_symbol records the name, domain, and address class of
symbols whose types we have not parsed yet. For functions, it also
--
Dr. Ulrich Weigand
GNU Toolchain for Linux on System z and Cell BE
Ulrich.Weigand@de.ibm.com