* symtab.h: Clean up SYMBOL_VALUE comments.

This commit is contained in:
Jim Kingdon 1993-04-22 16:12:31 +00:00
parent 5959dcea09
commit fce30fa15e
2 changed files with 34 additions and 37 deletions

View File

@ -1,3 +1,7 @@
Thu Apr 22 09:07:24 1993 Jim Kingdon (kingdon@cygnus.com)
* symtab.h: Clean up SYMBOL_VALUE comments.
Wed Apr 21 14:29:57 1993 Jim Kingdon (kingdon@cygnus.com)
* stack.c (print_frame_arg_vars), printcmd.c (print_frame_args):

View File

@ -37,32 +37,20 @@ struct general_symbol_info
char *name;
/* Constant value, or address if static, or register number,
or offset in arguments, or offset in stack frame. All of
these are in host byte order (though what they point to might
be in target byte order, e.g. LOC_CONST_BYTES).
Note that the address of a function is SYMBOL_VALUE_ADDRESS (pst)
in a partial symbol table, but BLOCK_START (SYMBOL_BLOCK_VALUE (st))
in a symbol table. */
/* Value of the symbol. Which member of this union to use, and what
it means, depends on what kind of symbol this is and its
SYMBOL_CLASS. See comments there for more details. All of these
are in host byte order (though what they point to might be in
target byte order, e.g. LOC_CONST_BYTES). */
union
{
/* for LOC_CONST, LOC_REGISTER, LOC_ARG, LOC_REF_ARG, LOC_REGPARM,
LOC_LOCAL */
long value;
/* for LOC_BLOCK */
struct block *block;
/* for LOC_CONST_BYTES */
char *bytes;
/* for LOC_STATIC, LOC_LABEL */
CORE_ADDR address;
/* for opaque typedef struct chain */
@ -267,7 +255,10 @@ extern int demangle; /* We reference it, so go ahead and declare it. */
struct minimal_symbol
{
/* The general symbol info required for all types of symbols. */
/* The general symbol info required for all types of symbols.
The SYMBOL_VALUE_ADDRESS contains the address that this symbol
corresponds to. */
struct general_symbol_info ginfo;
@ -449,25 +440,26 @@ enum address_class
LOC_STATIC,
/* Value is in register */
/* Value is in register. SYMBOL_VALUE is the register number. */
LOC_REGISTER,
/* Value is at spec'd offset in arglist */
/* It's an argument; the value is at SYMBOL_VALUE offset in arglist. */
LOC_ARG,
/* Value address is at spec'd offset in arglist. Currently this is used
for C++ references (and presumably will be used for Pascal VAR
parameters), and is only dereferenced in certain contexts. */
/* Value address is at SYMBOL_VALUE offset in arglist. Currently
this is used for C++ references (and presumably will be used for
Pascal VAR parameters), and is only dereferenced in certain
contexts. */
LOC_REF_ARG,
/* Value is in specified register. Just like LOC_REGISTER except this is
an argument. Probably the cleaner way to handle this would be to
separate address_class (which would include separate ARG and LOCAL
to deal with FRAME_ARGS_ADDRESS versus FRAME_LOCALS_ADDRESS), and
an is_argument flag.
/* Value is in register number SYMBOL_VALUE. Just like LOC_REGISTER
except this is an argument. Probably the cleaner way to handle
this would be to separate address_class (which would include
separate ARG and LOCAL to deal with FRAME_ARGS_ADDRESS versus
FRAME_LOCALS_ADDRESS), and an is_argument flag.
For some symbol formats (stabs, for some compilers at least),
gdb generates a LOC_ARG and a LOC_REGISTER rather than a LOC_REGPARM.
@ -477,7 +469,7 @@ enum address_class
LOC_REGPARM,
/* Value is at spec'd offset in stack frame */
/* Value is a local variable at SYMBOL_VALUE offset in stack frame. */
LOC_LOCAL,
@ -490,8 +482,9 @@ enum address_class
LOC_LABEL,
/* Value is address SYMBOL_VALUE_BLOCK of a `struct block'. Function names
have this class. */
/* In a symbol table, value is SYMBOL_BLOCK_VALUE of a `struct block'.
In a partial symbol table, SYMBOL_VALUE_ADDRESS is the start address
of the block. Function names have this class. */
LOC_BLOCK,
@ -500,16 +493,16 @@ enum address_class
LOC_CONST_BYTES,
/* Value is arg at spec'd offset in stack frame. Differs from LOC_LOCAL in
that symbol is an argument; differs from LOC_ARG in that we find it
in the frame (FRAME_LOCALS_ADDRESS), not in the arglist
(FRAME_ARGS_ADDRESS). Added for i960, which passes args in regs then
copies to frame. */
/* Value is arg at SYMBOL_VALUE offset in stack frame. Differs from
LOC_LOCAL in that symbol is an argument; differs from LOC_ARG in
that we find it in the frame (FRAME_LOCALS_ADDRESS), not in the
arglist (FRAME_ARGS_ADDRESS). Added for i960, which passes args
in regs then copies to frame. */
LOC_LOCAL_ARG,
/* The variable does not actually exist in the program.
The SYMBOL_VALUE is ignored. */
The value is ignored. */
LOC_OPTIMIZED_OUT
};