Annotation of 43BSDReno/contrib/emacs-18.55/gdb/value.h, revision 1.1.1.1

1.1       root        1: /* Definitions for values of C expressions, for GDB.
                      2:    Copyright (C) 1986, 1987 Free Software Foundation, Inc.
                      3: 
                      4: GDB is distributed in the hope that it will be useful, but WITHOUT ANY
                      5: WARRANTY.  No author or distributor accepts responsibility to anyone
                      6: for the consequences of using it or for whether it serves any
                      7: particular purpose or works at all, unless he says so in writing.
                      8: Refer to the GDB General Public License for full details.
                      9: 
                     10: Everyone is granted permission to copy, modify and redistribute GDB,
                     11: but only under the conditions described in the GDB General Public
                     12: License.  A copy of this license is supposed to have been given to you
                     13: along with GDB so you can know your rights and responsibilities.  It
                     14: should be in a file named COPYING.  Among other things, the copyright
                     15: notice and this notice must be preserved on all copies.
                     16: 
                     17: In other words, go ahead and share GDB, but don't try to stop
                     18: anyone else from sharing it farther.  Help stamp out software hoarding!
                     19: */
                     20: 
                     21: enum lval_type { not_lval, lval_memory, lval_register, lval_internalvar,
                     22:                 lval_internalvar_component };
                     23: 
                     24: struct value
                     25:   {
                     26:     enum lval_type lval;
                     27:     union
                     28:       {
                     29:        CORE_ADDR address;
                     30:        struct internalvar *internalvar;
                     31:       } location;
                     32:     int offset;
                     33:     int bitsize;
                     34:     int bitpos;
                     35:     struct type *type;
                     36:     struct value *next;
                     37:     short repeated;
                     38:     short repetitions;
                     39:     short regno;
                     40:     long contents[1];
                     41:   };
                     42: 
                     43: typedef struct value *value;
                     44: 
                     45: #define VALUE_TYPE(val) (val)->type
                     46: #define VALUE_CONTENTS(val) ((char *) (val)->contents)
                     47: #define VALUE_LVAL(val) (val)->lval
                     48: #define VALUE_ADDRESS(val) (val)->location.address
                     49: #define VALUE_INTERNALVAR(val) (val)->location.internalvar
                     50: #define VALUE_OFFSET(val) (val)->offset
                     51: #define VALUE_BITSIZE(val) (val)->bitsize
                     52: #define VALUE_BITPOS(val) (val)->bitpos
                     53: #define VALUE_NEXT(val) (val)->next
                     54: #define VALUE_REPEATED(val) (val)->repeated
                     55: #define VALUE_REPETITIONS(val) (val)->repetitions
                     56: #define VALUE_REGNO(val) (val)->regno
                     57: 
                     58: /* If ARG is an array, convert it to a pointer.
                     59:    If ARG is an enum, convert it to an integer.  */
                     60: 
                     61: #define COERCE_ARRAY(arg)    \
                     62: { if (VALUE_REPEATED (arg)                                             \
                     63:       || TYPE_CODE (VALUE_TYPE (arg)) == TYPE_CODE_ARRAY)              \
                     64:     arg = value_coerce_array (arg);                                    \
                     65:   if (TYPE_CODE (VALUE_TYPE (arg)) == TYPE_CODE_ENUM)                  \
                     66:     arg = value_cast (builtin_type_unsigned_int, arg);                 \
                     67: }
                     68: 
                     69: /* If ARG is an enum, convert it to an integer.  */
                     70: 
                     71: #define COERCE_ENUM(arg)    \
                     72: { if (TYPE_CODE (VALUE_TYPE (arg)) == TYPE_CODE_ENUM)                  \
                     73:     arg = value_cast (builtin_type_unsigned_int, arg);                 \
                     74: }
                     75: 
                     76: /* Internal variables (variables for convenience of use of debugger)
                     77:    are recorded as a chain of these structures.  */
                     78: 
                     79: struct internalvar
                     80: {
                     81:   struct internalvar *next;
                     82:   char *name;
                     83:   value value;
                     84: };
                     85: 
                     86: long value_as_long ();
                     87: double value_as_double ();
                     88: long unpack_long ();
                     89: double unpack_double ();
                     90: long unpack_field_as_long ();
                     91: value value_from_long ();
                     92: value value_from_double ();
                     93: value value_at ();
                     94: value value_of_variable ();
                     95: value value_of_register ();
                     96: value read_var_value ();
                     97: value locate_var_value ();
                     98: value allocate_value ();
                     99: value allocate_repeat_value ();
                    100: value value_string ();
                    101: 
                    102: value value_binop ();
                    103: value value_add ();
                    104: value value_sub ();
                    105: value value_coerce_array ();
                    106: value value_ind ();
                    107: value value_addr ();
                    108: value value_assign ();
                    109: value value_neg ();
                    110: value value_lognot ();
                    111: value value_struct_elt ();
                    112: value value_field ();
                    113: value value_cast ();
                    114: value value_repeat ();
                    115: value value_subscript ();
                    116: 
                    117: value call_function ();
                    118: value value_being_returned ();
                    119: 
                    120: value evaluate_expression ();
                    121: value evaluate_type ();
                    122: value parse_and_eval ();
                    123: value parse_to_comma_and_eval ();
                    124: 
                    125: value access_value_history ();
                    126: value value_of_internalvar ();
                    127: struct internalvar *lookup_internalvar ();
                    128: 
                    129: int value_equal ();
                    130: int value_less ();
                    131: int value_zerop ();

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.