Home | History | Annotate | Line # | Download | only in gdb
value.h revision 1.1.1.4
      1 /* Definitions for values of C expressions, for GDB.
      2 
      3    Copyright (C) 1986-2016 Free Software Foundation, Inc.
      4 
      5    This file is part of GDB.
      6 
      7    This program is free software; you can redistribute it and/or modify
      8    it under the terms of the GNU General Public License as published by
      9    the Free Software Foundation; either version 3 of the License, or
     10    (at your option) any later version.
     11 
     12    This program is distributed in the hope that it will be useful,
     13    but WITHOUT ANY WARRANTY; without even the implied warranty of
     14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     15    GNU General Public License for more details.
     16 
     17    You should have received a copy of the GNU General Public License
     18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
     19 
     20 #if !defined (VALUE_H)
     21 #define VALUE_H 1
     22 
     23 #include "doublest.h"
     24 #include "frame.h"		/* For struct frame_id.  */
     25 
     26 struct block;
     27 struct expression;
     28 struct regcache;
     29 struct symbol;
     30 struct type;
     31 struct ui_file;
     32 struct language_defn;
     33 struct value_print_options;
     34 struct xmethod_worker;
     35 
     36 /* Values can be partially 'optimized out' and/or 'unavailable'.
     37    These are distinct states and have different string representations
     38    and related error strings.
     39 
     40    'unavailable' has a specific meaning in this context.  It means the
     41    value exists in the program (at the machine level), but GDB has no
     42    means to get to it.  Such a value is normally printed as
     43    <unavailable>.  Examples of how to end up with an unavailable value
     44    would be:
     45 
     46     - We're inspecting a traceframe, and the memory or registers the
     47       debug information says the value lives on haven't been collected.
     48 
     49     - We're inspecting a core dump, the memory or registers the debug
     50       information says the value lives aren't present in the dump
     51       (that is, we have a partial/trimmed core dump, or we don't fully
     52       understand/handle the core dump's format).
     53 
     54     - We're doing live debugging, but the debug API has no means to
     55       get at where the value lives in the machine, like e.g., ptrace
     56       not having access to some register or register set.
     57 
     58     - Any other similar scenario.
     59 
     60   OTOH, "optimized out" is about what the compiler decided to generate
     61   (or not generate).  A chunk of a value that was optimized out does
     62   not actually exist in the program.  There's no way to get at it
     63   short of compiling the program differently.
     64 
     65   A register that has not been saved in a frame is likewise considered
     66   optimized out, except not-saved registers have a different string
     67   representation and related error strings.  E.g., we'll print them as
     68   <not-saved> instead of <optimized out>, as in:
     69 
     70     (gdb) p/x $rax
     71     $1 = <not saved>
     72     (gdb) info registers rax
     73     rax            <not saved>
     74 
     75   If the debug info describes a variable as being in such a register,
     76   we'll still print the variable as <optimized out>.  IOW, <not saved>
     77   is reserved for inspecting registers at the machine level.
     78 
     79   When comparing value contents, optimized out chunks, unavailable
     80   chunks, and valid contents data are all considered different.  See
     81   value_contents_eq for more info.
     82 */
     83 
     84 /* The structure which defines the type of a value.  It should never
     85    be possible for a program lval value to survive over a call to the
     86    inferior (i.e. to be put into the history list or an internal
     87    variable).  */
     88 
     89 struct value;
     90 
     91 /* Values are stored in a chain, so that they can be deleted easily
     92    over calls to the inferior.  Values assigned to internal variables,
     93    put into the value history or exposed to Python are taken off this
     94    list.  */
     95 
     96 struct value *value_next (const struct value *);
     97 
     98 /* Type of the value.  */
     99 
    100 extern struct type *value_type (const struct value *);
    101 
    102 /* Return the gdbarch associated with the value. */
    103 
    104 extern struct gdbarch *get_value_arch (const struct value *value);
    105 
    106 /* This is being used to change the type of an existing value, that
    107    code should instead be creating a new value with the changed type
    108    (but possibly shared content).  */
    109 
    110 extern void deprecated_set_value_type (struct value *value,
    111 				       struct type *type);
    112 
    113 /* Only used for bitfields; number of bits contained in them.  */
    114 
    115 extern LONGEST value_bitsize (const struct value *);
    116 extern void set_value_bitsize (struct value *, LONGEST bit);
    117 
    118 /* Only used for bitfields; position of start of field.  For
    119    gdbarch_bits_big_endian=0 targets, it is the position of the LSB.  For
    120    gdbarch_bits_big_endian=1 targets, it is the position of the MSB.  */
    121 
    122 extern LONGEST value_bitpos (const struct value *);
    123 extern void set_value_bitpos (struct value *, LONGEST bit);
    124 
    125 /* Only used for bitfields; the containing value.  This allows a
    126    single read from the target when displaying multiple
    127    bitfields.  */
    128 
    129 struct value *value_parent (const struct value *);
    130 extern void set_value_parent (struct value *value, struct value *parent);
    131 
    132 /* Describes offset of a value within lval of a structure in bytes.
    133    If lval == lval_memory, this is an offset to the address.  If lval
    134    == lval_register, this is a further offset from location.address
    135    within the registers structure.  Note also the member
    136    embedded_offset below.  */
    137 
    138 extern LONGEST value_offset (const struct value *);
    139 extern void set_value_offset (struct value *, LONGEST offset);
    140 
    141 /* The comment from "struct value" reads: ``Is it modifiable?  Only
    142    relevant if lval != not_lval.''.  Shouldn't the value instead be
    143    not_lval and be done with it?  */
    144 
    145 extern int deprecated_value_modifiable (const struct value *value);
    146 
    147 /* If a value represents a C++ object, then the `type' field gives the
    148    object's compile-time type.  If the object actually belongs to some
    149    class derived from `type', perhaps with other base classes and
    150    additional members, then `type' is just a subobject of the real
    151    thing, and the full object is probably larger than `type' would
    152    suggest.
    153 
    154    If `type' is a dynamic class (i.e. one with a vtable), then GDB can
    155    actually determine the object's run-time type by looking at the
    156    run-time type information in the vtable.  When this information is
    157    available, we may elect to read in the entire object, for several
    158    reasons:
    159 
    160    - When printing the value, the user would probably rather see the
    161      full object, not just the limited portion apparent from the
    162      compile-time type.
    163 
    164    - If `type' has virtual base classes, then even printing `type'
    165      alone may require reaching outside the `type' portion of the
    166      object to wherever the virtual base class has been stored.
    167 
    168    When we store the entire object, `enclosing_type' is the run-time
    169    type -- the complete object -- and `embedded_offset' is the offset
    170    of `type' within that larger type, in bytes.  The value_contents()
    171    macro takes `embedded_offset' into account, so most GDB code
    172    continues to see the `type' portion of the value, just as the
    173    inferior would.
    174 
    175    If `type' is a pointer to an object, then `enclosing_type' is a
    176    pointer to the object's run-time type, and `pointed_to_offset' is
    177    the offset in bytes from the full object to the pointed-to object
    178    -- that is, the value `embedded_offset' would have if we followed
    179    the pointer and fetched the complete object.  (I don't really see
    180    the point.  Why not just determine the run-time type when you
    181    indirect, and avoid the special case?  The contents don't matter
    182    until you indirect anyway.)
    183 
    184    If we're not doing anything fancy, `enclosing_type' is equal to
    185    `type', and `embedded_offset' is zero, so everything works
    186    normally.  */
    187 
    188 extern struct type *value_enclosing_type (const struct value *);
    189 extern void set_value_enclosing_type (struct value *val,
    190 				      struct type *new_type);
    191 
    192 /* Returns value_type or value_enclosing_type depending on
    193    value_print_options.objectprint.
    194 
    195    If RESOLVE_SIMPLE_TYPES is 0 the enclosing type will be resolved
    196    only for pointers and references, else it will be returned
    197    for all the types (e.g. structures).  This option is useful
    198    to prevent retrieving enclosing type for the base classes fields.
    199 
    200    REAL_TYPE_FOUND is used to inform whether the real type was found
    201    (or just static type was used).  The NULL may be passed if it is not
    202    necessary. */
    203 
    204 extern struct type *value_actual_type (struct value *value,
    205 				       int resolve_simple_types,
    206 				       int *real_type_found);
    207 
    208 extern LONGEST value_pointed_to_offset (const struct value *value);
    209 extern void set_value_pointed_to_offset (struct value *value, LONGEST val);
    210 extern LONGEST value_embedded_offset (const struct value *value);
    211 extern void set_value_embedded_offset (struct value *value, LONGEST val);
    212 
    213 /* For lval_computed values, this structure holds functions used to
    214    retrieve and set the value (or portions of the value).
    215 
    216    For each function, 'V' is the 'this' pointer: an lval_funcs
    217    function F may always assume that the V it receives is an
    218    lval_computed value, and has F in the appropriate slot of its
    219    lval_funcs structure.  */
    220 
    221 struct lval_funcs
    222 {
    223   /* Fill in VALUE's contents.  This is used to "un-lazy" values.  If
    224      a problem arises in obtaining VALUE's bits, this function should
    225      call 'error'.  If it is NULL value_fetch_lazy on "un-lazy"
    226      non-optimized-out value is an internal error.  */
    227   void (*read) (struct value *v);
    228 
    229   /* Handle an assignment TOVAL = FROMVAL by writing the value of
    230      FROMVAL to TOVAL's location.  The contents of TOVAL have not yet
    231      been updated.  If a problem arises in doing so, this function
    232      should call 'error'.  If it is NULL such TOVAL assignment is an error as
    233      TOVAL is not considered as an lvalue.  */
    234   void (*write) (struct value *toval, struct value *fromval);
    235 
    236   /* If non-NULL, this is used to implement pointer indirection for
    237      this value.  This method may return NULL, in which case value_ind
    238      will fall back to ordinary indirection.  */
    239   struct value *(*indirect) (struct value *value);
    240 
    241   /* If non-NULL, this is used to implement reference resolving for
    242      this value.  This method may return NULL, in which case coerce_ref
    243      will fall back to ordinary references resolving.  */
    244   struct value *(*coerce_ref) (const struct value *value);
    245 
    246   /* If non-NULL, this is used to determine whether the indicated bits
    247      of VALUE are a synthetic pointer.  */
    248   int (*check_synthetic_pointer) (const struct value *value,
    249 				  LONGEST offset, int length);
    250 
    251   /* Return a duplicate of VALUE's closure, for use in a new value.
    252      This may simply return the same closure, if VALUE's is
    253      reference-counted or statically allocated.
    254 
    255      This may be NULL, in which case VALUE's closure is re-used in the
    256      new value.  */
    257   void *(*copy_closure) (const struct value *v);
    258 
    259   /* Drop VALUE's reference to its closure.  Maybe this frees the
    260      closure; maybe this decrements a reference count; maybe the
    261      closure is statically allocated and this does nothing.
    262 
    263      This may be NULL, in which case no action is taken to free
    264      VALUE's closure.  */
    265   void (*free_closure) (struct value *v);
    266 };
    267 
    268 /* Create a computed lvalue, with type TYPE, function pointers FUNCS,
    269    and closure CLOSURE.  */
    270 
    271 extern struct value *allocate_computed_value (struct type *type,
    272 					      const struct lval_funcs *funcs,
    273 					      void *closure);
    274 
    275 /* Helper function to check the validity of some bits of a value.
    276 
    277    If TYPE represents some aggregate type (e.g., a structure), return 1.
    278 
    279    Otherwise, any of the bytes starting at OFFSET and extending for
    280    TYPE_LENGTH(TYPE) bytes are invalid, print a message to STREAM and
    281    return 0.  The checking is done using FUNCS.
    282 
    283    Otherwise, return 1.  */
    284 
    285 extern int valprint_check_validity (struct ui_file *stream, struct type *type,
    286 				    LONGEST embedded_offset,
    287 				    const struct value *val);
    288 
    289 extern struct value *allocate_optimized_out_value (struct type *type);
    290 
    291 /* If VALUE is lval_computed, return its lval_funcs structure.  */
    292 
    293 extern const struct lval_funcs *value_computed_funcs (const struct value *);
    294 
    295 /* If VALUE is lval_computed, return its closure.  The meaning of the
    296    returned value depends on the functions VALUE uses.  */
    297 
    298 extern void *value_computed_closure (const struct value *value);
    299 
    300 /* If zero, contents of this value are in the contents field.  If
    301    nonzero, contents are in inferior.  If the lval field is lval_memory,
    302    the contents are in inferior memory at location.address plus offset.
    303    The lval field may also be lval_register.
    304 
    305    WARNING: This field is used by the code which handles watchpoints
    306    (see breakpoint.c) to decide whether a particular value can be
    307    watched by hardware watchpoints.  If the lazy flag is set for some
    308    member of a value chain, it is assumed that this member of the
    309    chain doesn't need to be watched as part of watching the value
    310    itself.  This is how GDB avoids watching the entire struct or array
    311    when the user wants to watch a single struct member or array
    312    element.  If you ever change the way lazy flag is set and reset, be
    313    sure to consider this use as well!  */
    314 
    315 extern int value_lazy (const struct value *);
    316 extern void set_value_lazy (struct value *value, int val);
    317 
    318 extern int value_stack (const struct value *);
    319 extern void set_value_stack (struct value *value, int val);
    320 
    321 /* Throw an error complaining that the value has been optimized
    322    out.  */
    323 
    324 extern void error_value_optimized_out (void);
    325 
    326 /* value_contents() and value_contents_raw() both return the address
    327    of the gdb buffer used to hold a copy of the contents of the lval.
    328    value_contents() is used when the contents of the buffer are needed
    329    -- it uses value_fetch_lazy() to load the buffer from the process
    330    being debugged if it hasn't already been loaded
    331    (value_contents_writeable() is used when a writeable but fetched
    332    buffer is required)..  value_contents_raw() is used when data is
    333    being stored into the buffer, or when it is certain that the
    334    contents of the buffer are valid.
    335 
    336    Note: The contents pointer is adjusted by the offset required to
    337    get to the real subobject, if the value happens to represent
    338    something embedded in a larger run-time object.  */
    339 
    340 extern gdb_byte *value_contents_raw (struct value *);
    341 
    342 /* Actual contents of the value.  For use of this value; setting it
    343    uses the stuff above.  Not valid if lazy is nonzero.  Target
    344    byte-order.  We force it to be aligned properly for any possible
    345    value.  Note that a value therefore extends beyond what is
    346    declared here.  */
    347 
    348 extern const gdb_byte *value_contents (struct value *);
    349 extern gdb_byte *value_contents_writeable (struct value *);
    350 
    351 /* The ALL variants of the above two macros do not adjust the returned
    352    pointer by the embedded_offset value.  */
    353 
    354 extern gdb_byte *value_contents_all_raw (struct value *);
    355 extern const gdb_byte *value_contents_all (struct value *);
    356 
    357 /* Like value_contents_all, but does not require that the returned
    358    bits be valid.  This should only be used in situations where you
    359    plan to check the validity manually.  */
    360 extern const gdb_byte *value_contents_for_printing (struct value *value);
    361 
    362 /* Like value_contents_for_printing, but accepts a constant value
    363    pointer.  Unlike value_contents_for_printing however, the pointed
    364    value must _not_ be lazy.  */
    365 extern const gdb_byte *
    366   value_contents_for_printing_const (const struct value *value);
    367 
    368 extern void value_fetch_lazy (struct value *val);
    369 
    370 /* If nonzero, this is the value of a variable which does not actually
    371    exist in the program, at least partially.  If the value is lazy,
    372    this may fetch it now.  */
    373 extern int value_optimized_out (struct value *value);
    374 
    375 /* Given a value, return true if any of the contents bits starting at
    376    OFFSET and extending for LENGTH bits is optimized out, false
    377    otherwise.  */
    378 
    379 extern int value_bits_any_optimized_out (const struct value *value,
    380 					 int bit_offset, int bit_length);
    381 
    382 /* Like value_optimized_out, but return true iff the whole value is
    383    optimized out.  */
    384 extern int value_entirely_optimized_out (struct value *value);
    385 
    386 /* Mark VALUE's content bytes starting at OFFSET and extending for
    387    LENGTH bytes as optimized out.  */
    388 
    389 extern void mark_value_bytes_optimized_out (struct value *value,
    390 					    int offset, int length);
    391 
    392 /* Mark VALUE's content bits starting at OFFSET and extending for
    393    LENGTH bits as optimized out.  */
    394 
    395 extern void mark_value_bits_optimized_out (struct value *value,
    396 					   LONGEST offset, LONGEST length);
    397 
    398 /* Set or return field indicating whether a variable is initialized or
    399    not, based on debugging information supplied by the compiler.
    400    1 = initialized; 0 = uninitialized.  */
    401 extern int value_initialized (const struct value *);
    402 extern void set_value_initialized (struct value *, int);
    403 
    404 /* Set COMPONENT's location as appropriate for a component of WHOLE
    405    --- regardless of what kind of lvalue WHOLE is.  */
    406 extern void set_value_component_location (struct value *component,
    407                                           const struct value *whole);
    408 
    409 /* While the following fields are per- VALUE .CONTENT .PIECE (i.e., a
    410    single value might have multiple LVALs), this hacked interface is
    411    limited to just the first PIECE.  Expect further change.  */
    412 /* Type of value; either not an lval, or one of the various different
    413    possible kinds of lval.  */
    414 extern enum lval_type *deprecated_value_lval_hack (struct value *);
    415 #define VALUE_LVAL(val) (*deprecated_value_lval_hack (val))
    416 
    417 /* Like VALUE_LVAL, except the parameter can be const.  */
    418 extern enum lval_type value_lval_const (const struct value *value);
    419 
    420 /* If lval == lval_memory, return the address in the inferior.  If
    421    lval == lval_register, return the byte offset into the registers
    422    structure.  Otherwise, return 0.  The returned address
    423    includes the offset, if any.  */
    424 extern CORE_ADDR value_address (const struct value *);
    425 
    426 /* Like value_address, except the result does not include value's
    427    offset.  */
    428 extern CORE_ADDR value_raw_address (const struct value *);
    429 
    430 /* Set the address of a value.  */
    431 extern void set_value_address (struct value *, CORE_ADDR);
    432 
    433 /* Pointer to internal variable.  */
    434 extern struct internalvar **deprecated_value_internalvar_hack (struct value *);
    435 #define VALUE_INTERNALVAR(val) (*deprecated_value_internalvar_hack (val))
    436 
    437 /* Frame register value is relative to.  This will be described in the
    438    lval enum above as "lval_register".  */
    439 extern struct frame_id *deprecated_value_frame_id_hack (struct value *);
    440 #define VALUE_FRAME_ID(val) (*deprecated_value_frame_id_hack (val))
    441 
    442 /* Register number if the value is from a register.  */
    443 extern short *deprecated_value_regnum_hack (struct value *);
    444 #define VALUE_REGNUM(val) (*deprecated_value_regnum_hack (val))
    445 
    446 /* Return value after lval_funcs->coerce_ref (after check_typedef).  Return
    447    NULL if lval_funcs->coerce_ref is not applicable for whatever reason.  */
    448 
    449 extern struct value *coerce_ref_if_computed (const struct value *arg);
    450 
    451 /* Setup a new value type and enclosing value type for dereferenced value VALUE.
    452    ENC_TYPE is the new enclosing type that should be set.  ORIGINAL_TYPE and
    453    ORIGINAL_VAL are the type and value of the original reference or pointer.
    454 
    455    Note, that VALUE is modified by this function.
    456 
    457    It is a common implementation for coerce_ref and value_ind.  */
    458 
    459 extern struct value * readjust_indirect_value_type (struct value *value,
    460 						    struct type *enc_type,
    461 						    const struct type *original_type,
    462 						    const struct value *original_val);
    463 
    464 /* Convert a REF to the object referenced.  */
    465 
    466 extern struct value *coerce_ref (struct value *value);
    467 
    468 /* If ARG is an array, convert it to a pointer.
    469    If ARG is a function, convert it to a function pointer.
    470 
    471    References are dereferenced.  */
    472 
    473 extern struct value *coerce_array (struct value *value);
    474 
    475 /* Given a value, determine whether the bits starting at OFFSET and
    476    extending for LENGTH bits are a synthetic pointer.  */
    477 
    478 extern int value_bits_synthetic_pointer (const struct value *value,
    479 					 LONGEST offset, LONGEST length);
    480 
    481 /* Given a value, determine whether the contents bytes starting at
    482    OFFSET and extending for LENGTH bytes are available.  This returns
    483    nonzero if all bytes in the given range are available, zero if any
    484    byte is unavailable.  */
    485 
    486 extern int value_bytes_available (const struct value *value,
    487 				  LONGEST offset, LONGEST length);
    488 
    489 /* Given a value, determine whether the contents bits starting at
    490    OFFSET and extending for LENGTH bits are available.  This returns
    491    nonzero if all bits in the given range are available, zero if any
    492    bit is unavailable.  */
    493 
    494 extern int value_bits_available (const struct value *value,
    495 				 LONGEST offset, LONGEST length);
    496 
    497 /* Like value_bytes_available, but return false if any byte in the
    498    whole object is unavailable.  */
    499 extern int value_entirely_available (struct value *value);
    500 
    501 /* Like value_entirely_available, but return false if any byte in the
    502    whole object is available.  */
    503 extern int value_entirely_unavailable (struct value *value);
    504 
    505 /* Mark VALUE's content bytes starting at OFFSET and extending for
    506    LENGTH bytes as unavailable.  */
    507 
    508 extern void mark_value_bytes_unavailable (struct value *value,
    509 					  LONGEST offset, LONGEST length);
    510 
    511 /* Mark VALUE's content bits starting at OFFSET and extending for
    512    LENGTH bits as unavailable.  */
    513 
    514 extern void mark_value_bits_unavailable (struct value *value,
    515 					 LONGEST offset, LONGEST length);
    516 
    517 /* Compare LENGTH bytes of VAL1's contents starting at OFFSET1 with
    518    LENGTH bytes of VAL2's contents starting at OFFSET2.
    519 
    520    Note that "contents" refers to the whole value's contents
    521    (value_contents_all), without any embedded offset adjustment.  For
    522    example, to compare a complete object value with itself, including
    523    its enclosing type chunk, you'd do:
    524 
    525      int len = TYPE_LENGTH (check_typedef (value_enclosing_type (val)));
    526      value_contents_eq (val, 0, val, 0, len);
    527 
    528    Returns true iff the set of available/valid contents match.
    529 
    530    Optimized-out contents are equal to optimized-out contents, and are
    531    not equal to non-optimized-out contents.
    532 
    533    Unavailable contente are equal to unavailable contents, and are not
    534    equal to non-unavailable contents.
    535 
    536    For example, if 'x's represent an unavailable byte, and 'V' and 'Z'
    537    represent different available/valid bytes, in a value with length
    538    16:
    539 
    540      offset:   0   4   8   12  16
    541      contents: xxxxVVVVxxxxVVZZ
    542 
    543    then:
    544 
    545      value_contents_eq(val, 0, val, 8, 6) => 1
    546      value_contents_eq(val, 0, val, 4, 4) => 0
    547      value_contents_eq(val, 0, val, 8, 8) => 0
    548      value_contents_eq(val, 4, val, 12, 2) => 1
    549      value_contents_eq(val, 4, val, 12, 4) => 0
    550      value_contents_eq(val, 3, val, 4, 4) => 0
    551 
    552    If 'x's represent an unavailable byte, 'o' represents an optimized
    553    out byte, in a value with length 8:
    554 
    555      offset:   0   4   8
    556      contents: xxxxoooo
    557 
    558    then:
    559 
    560      value_contents_eq(val, 0, val, 2, 2) => 1
    561      value_contents_eq(val, 4, val, 6, 2) => 1
    562      value_contents_eq(val, 0, val, 4, 4) => 0
    563 
    564    We only know whether a value chunk is unavailable or optimized out
    565    if we've tried to read it.  As this routine is used by printing
    566    routines, which may be printing values in the value history, long
    567    after the inferior is gone, it works with const values.  Therefore,
    568    this routine must not be called with lazy values.  */
    569 
    570 extern int value_contents_eq (const struct value *val1, LONGEST offset1,
    571 			      const struct value *val2, LONGEST offset2,
    572 			      LONGEST length);
    573 
    574 /* Read LENGTH addressable memory units starting at MEMADDR into BUFFER,
    575    which is (or will be copied to) VAL's contents buffer offset by
    576    EMBEDDED_OFFSET (that is, to &VAL->contents[EMBEDDED_OFFSET]).
    577    Marks value contents ranges as unavailable if the corresponding
    578    memory is likewise unavailable.  STACK indicates whether the memory
    579    is known to be stack memory.  */
    580 
    581 extern void read_value_memory (struct value *val, LONGEST embedded_offset,
    582 			       int stack, CORE_ADDR memaddr,
    583 			       gdb_byte *buffer, size_t length);
    584 
    585 /* Cast SCALAR_VALUE to the element type of VECTOR_TYPE, then replicate
    586    into each element of a new vector value with VECTOR_TYPE.  */
    587 
    588 struct value *value_vector_widen (struct value *scalar_value,
    589 				  struct type *vector_type);
    590 
    591 
    592 
    594 #include "symtab.h"
    595 #include "gdbtypes.h"
    596 #include "expression.h"
    597 
    598 struct frame_info;
    599 struct fn_field;
    600 
    601 extern int print_address_demangle (const struct value_print_options *,
    602 				   struct gdbarch *, CORE_ADDR,
    603 				   struct ui_file *, int);
    604 
    605 extern LONGEST value_as_long (struct value *val);
    606 extern DOUBLEST value_as_double (struct value *val);
    607 extern CORE_ADDR value_as_address (struct value *val);
    608 
    609 extern LONGEST unpack_long (struct type *type, const gdb_byte *valaddr);
    610 extern DOUBLEST unpack_double (struct type *type, const gdb_byte *valaddr,
    611 			       int *invp);
    612 extern CORE_ADDR unpack_pointer (struct type *type, const gdb_byte *valaddr);
    613 
    614 extern LONGEST unpack_field_as_long (struct type *type,
    615 				     const gdb_byte *valaddr,
    616 				     int fieldno);
    617 extern int unpack_value_field_as_long (struct type *type, const gdb_byte *valaddr,
    618 				LONGEST embedded_offset, int fieldno,
    619 				const struct value *val, LONGEST *result);
    620 
    621 extern void unpack_value_bitfield (struct value *dest_val,
    622 				   LONGEST bitpos, LONGEST bitsize,
    623 				   const gdb_byte *valaddr,
    624 				   LONGEST embedded_offset,
    625 				   const struct value *val);
    626 
    627 extern struct value *value_field_bitfield (struct type *type, int fieldno,
    628 					   const gdb_byte *valaddr,
    629 					   LONGEST embedded_offset,
    630 					   const struct value *val);
    631 
    632 extern void pack_long (gdb_byte *buf, struct type *type, LONGEST num);
    633 
    634 extern struct value *value_from_longest (struct type *type, LONGEST num);
    635 extern struct value *value_from_ulongest (struct type *type, ULONGEST num);
    636 extern struct value *value_from_pointer (struct type *type, CORE_ADDR addr);
    637 extern struct value *value_from_double (struct type *type, DOUBLEST num);
    638 extern struct value *value_from_decfloat (struct type *type,
    639 					  const gdb_byte *decbytes);
    640 extern struct value *value_from_history_ref (const char *, const char **);
    641 
    642 extern struct value *value_at (struct type *type, CORE_ADDR addr);
    643 extern struct value *value_at_lazy (struct type *type, CORE_ADDR addr);
    644 
    645 extern struct value *value_from_contents_and_address_unresolved
    646      (struct type *, const gdb_byte *, CORE_ADDR);
    647 extern struct value *value_from_contents_and_address (struct type *,
    648 						      const gdb_byte *,
    649 						      CORE_ADDR);
    650 extern struct value *value_from_contents (struct type *, const gdb_byte *);
    651 
    652 extern struct value *default_value_from_register (struct gdbarch *gdbarch,
    653 						  struct type *type,
    654 						  int regnum,
    655 						  struct frame_id frame_id);
    656 
    657 extern void read_frame_register_value (struct value *value,
    658 				       struct frame_info *frame);
    659 
    660 extern struct value *value_from_register (struct type *type, int regnum,
    661 					  struct frame_info *frame);
    662 
    663 extern CORE_ADDR address_from_register (int regnum,
    664 					struct frame_info *frame);
    665 
    666 extern struct value *value_of_variable (struct symbol *var,
    667 					const struct block *b);
    668 
    669 extern struct value *address_of_variable (struct symbol *var,
    670 					  const struct block *b);
    671 
    672 extern struct value *value_of_register (int regnum, struct frame_info *frame);
    673 
    674 struct value *value_of_register_lazy (struct frame_info *frame, int regnum);
    675 
    676 /* Return the symbol's reading requirement.  */
    677 
    678 extern enum symbol_needs_kind symbol_read_needs (struct symbol *);
    679 
    680 /* Return true if the symbol needs a frame.  This is a wrapper for
    681    symbol_read_needs that simply checks for SYMBOL_NEEDS_FRAME.  */
    682 
    683 extern int symbol_read_needs_frame (struct symbol *);
    684 
    685 extern struct value *read_var_value (struct symbol *var,
    686 				     const struct block *var_block,
    687 				     struct frame_info *frame);
    688 
    689 extern struct value *default_read_var_value (struct symbol *var,
    690 					     const struct block *var_block,
    691 					     struct frame_info *frame);
    692 
    693 extern struct value *allocate_value (struct type *type);
    694 extern struct value *allocate_value_lazy (struct type *type);
    695 extern void value_contents_copy (struct value *dst, LONGEST dst_offset,
    696 				 struct value *src, LONGEST src_offset,
    697 				 LONGEST length);
    698 extern void value_contents_copy_raw (struct value *dst, LONGEST dst_offset,
    699 				     struct value *src, LONGEST src_offset,
    700 				     LONGEST length);
    701 
    702 extern struct value *allocate_repeat_value (struct type *type, int count);
    703 
    704 extern struct value *value_mark (void);
    705 
    706 extern void value_free_to_mark (const struct value *mark);
    707 
    708 extern struct value *value_cstring (const char *ptr, ssize_t len,
    709 				    struct type *char_type);
    710 extern struct value *value_string (const char *ptr, ssize_t len,
    711 				   struct type *char_type);
    712 
    713 extern struct value *value_array (int lowbound, int highbound,
    714 				  struct value **elemvec);
    715 
    716 extern struct value *value_concat (struct value *arg1, struct value *arg2);
    717 
    718 extern struct value *value_binop (struct value *arg1, struct value *arg2,
    719 				  enum exp_opcode op);
    720 
    721 extern struct value *value_ptradd (struct value *arg1, LONGEST arg2);
    722 
    723 extern LONGEST value_ptrdiff (struct value *arg1, struct value *arg2);
    724 
    725 extern int value_must_coerce_to_target (struct value *arg1);
    726 
    727 extern struct value *value_coerce_to_target (struct value *arg1);
    728 
    729 extern struct value *value_coerce_array (struct value *arg1);
    730 
    731 extern struct value *value_coerce_function (struct value *arg1);
    732 
    733 extern struct value *value_ind (struct value *arg1);
    734 
    735 extern struct value *value_addr (struct value *arg1);
    736 
    737 extern struct value *value_ref (struct value *arg1);
    738 
    739 extern struct value *value_assign (struct value *toval,
    740 				   struct value *fromval);
    741 
    742 extern struct value *value_pos (struct value *arg1);
    743 
    744 extern struct value *value_neg (struct value *arg1);
    745 
    746 extern struct value *value_complement (struct value *arg1);
    747 
    748 extern struct value *value_struct_elt (struct value **argp,
    749 				       struct value **args,
    750 				       const char *name, int *static_memfuncp,
    751 				       const char *err);
    752 
    753 extern struct value *value_struct_elt_bitpos (struct value **argp,
    754 					      int bitpos,
    755 					      struct type *field_type,
    756 					      const char *err);
    757 
    758 extern struct value *value_aggregate_elt (struct type *curtype,
    759 					  const char *name,
    760 					  struct type *expect_type,
    761 					  int want_address,
    762 					  enum noside noside);
    763 
    764 extern struct value *value_static_field (struct type *type, int fieldno);
    765 
    766 enum oload_search_type { NON_METHOD, METHOD, BOTH };
    767 
    768 extern int find_overload_match (struct value **args, int nargs,
    769 				const char *name,
    770 				enum oload_search_type method,
    771 				struct value **objp, struct symbol *fsym,
    772 				struct value **valp, struct symbol **symp,
    773 				int *staticp, const int no_adl,
    774 				enum noside noside);
    775 
    776 extern struct value *value_field (struct value *arg1, int fieldno);
    777 
    778 extern struct value *value_primitive_field (struct value *arg1, LONGEST offset,
    779 					    int fieldno,
    780 					    struct type *arg_type);
    781 
    782 
    783 extern struct type *value_rtti_indirect_type (struct value *, int *, LONGEST *,
    784 					      int *);
    785 
    786 extern struct value *value_full_object (struct value *, struct type *, int,
    787 					int, int);
    788 
    789 extern struct value *value_cast_pointers (struct type *, struct value *, int);
    790 
    791 extern struct value *value_cast (struct type *type, struct value *arg2);
    792 
    793 extern struct value *value_reinterpret_cast (struct type *type,
    794 					     struct value *arg);
    795 
    796 extern struct value *value_dynamic_cast (struct type *type, struct value *arg);
    797 
    798 extern struct value *value_zero (struct type *type, enum lval_type lv);
    799 
    800 extern struct value *value_one (struct type *type);
    801 
    802 extern struct value *value_repeat (struct value *arg1, int count);
    803 
    804 extern struct value *value_subscript (struct value *array, LONGEST index);
    805 
    806 extern struct value *value_bitstring_subscript (struct type *type,
    807 						struct value *bitstring,
    808 						LONGEST index);
    809 
    810 extern struct value *register_value_being_returned (struct type *valtype,
    811 						    struct regcache *retbuf);
    812 
    813 extern int value_in (struct value *element, struct value *set);
    814 
    815 extern int value_bit_index (struct type *type, const gdb_byte *addr,
    816 			    int index);
    817 
    818 extern enum return_value_convention
    819 struct_return_convention (struct gdbarch *gdbarch, struct value *function,
    820 			  struct type *value_type);
    821 
    822 extern int using_struct_return (struct gdbarch *gdbarch,
    823 				struct value *function,
    824 				struct type *value_type);
    825 
    826 extern struct value *evaluate_expression (struct expression *exp);
    827 
    828 extern struct value *evaluate_type (struct expression *exp);
    829 
    830 extern struct value *evaluate_subexp (struct type *expect_type,
    831 				      struct expression *exp,
    832 				      int *pos, enum noside noside);
    833 
    834 extern struct value *evaluate_subexpression_type (struct expression *exp,
    835 						  int subexp);
    836 
    837 extern void fetch_subexp_value (struct expression *exp, int *pc,
    838 				struct value **valp, struct value **resultp,
    839 				struct value **val_chain,
    840 				int preserve_errors);
    841 
    842 extern char *extract_field_op (struct expression *exp, int *subexp);
    843 
    844 extern struct value *evaluate_subexp_with_coercion (struct expression *,
    845 						    int *, enum noside);
    846 
    847 extern struct value *parse_and_eval (const char *exp);
    848 
    849 extern struct value *parse_to_comma_and_eval (const char **expp);
    850 
    851 extern struct type *parse_and_eval_type (char *p, int length);
    852 
    853 extern CORE_ADDR parse_and_eval_address (const char *exp);
    854 
    855 extern LONGEST parse_and_eval_long (const char *exp);
    856 
    857 extern void unop_promote (const struct language_defn *language,
    858 			  struct gdbarch *gdbarch,
    859 			  struct value **arg1);
    860 
    861 extern void binop_promote (const struct language_defn *language,
    862 			   struct gdbarch *gdbarch,
    863 			   struct value **arg1, struct value **arg2);
    864 
    865 extern struct value *access_value_history (int num);
    866 
    867 extern struct value *value_of_internalvar (struct gdbarch *gdbarch,
    868 					   struct internalvar *var);
    869 
    870 extern int get_internalvar_integer (struct internalvar *var, LONGEST *l);
    871 
    872 extern void set_internalvar (struct internalvar *var, struct value *val);
    873 
    874 extern void set_internalvar_integer (struct internalvar *var, LONGEST l);
    875 
    876 extern void set_internalvar_string (struct internalvar *var,
    877 				    const char *string);
    878 
    879 extern void clear_internalvar (struct internalvar *var);
    880 
    881 extern void set_internalvar_component (struct internalvar *var,
    882 				       LONGEST offset,
    883 				       LONGEST bitpos, LONGEST bitsize,
    884 				       struct value *newvalue);
    885 
    886 extern struct internalvar *lookup_only_internalvar (const char *name);
    887 
    888 extern struct internalvar *create_internalvar (const char *name);
    889 
    890 extern VEC (char_ptr) *complete_internalvar (const char *name);
    891 
    892 /* An internalvar can be dynamically computed by supplying a vector of
    893    function pointers to perform various operations.  */
    894 
    895 struct internalvar_funcs
    896 {
    897   /* Compute the value of the variable.  The DATA argument passed to
    898      the function is the same argument that was passed to
    899      `create_internalvar_type_lazy'.  */
    900 
    901   struct value *(*make_value) (struct gdbarch *arch,
    902 			       struct internalvar *var,
    903 			       void *data);
    904 
    905   /* Update the agent expression EXPR with bytecode to compute the
    906      value.  VALUE is the agent value we are updating.  The DATA
    907      argument passed to this function is the same argument that was
    908      passed to `create_internalvar_type_lazy'.  If this pointer is
    909      NULL, then the internalvar cannot be compiled to an agent
    910      expression.  */
    911 
    912   void (*compile_to_ax) (struct internalvar *var,
    913 			 struct agent_expr *expr,
    914 			 struct axs_value *value,
    915 			 void *data);
    916 
    917   /* If non-NULL, this is called to destroy DATA.  The DATA argument
    918      passed to this function is the same argument that was passed to
    919      `create_internalvar_type_lazy'.  */
    920 
    921   void (*destroy) (void *data);
    922 };
    923 
    924 extern struct internalvar *create_internalvar_type_lazy (const char *name,
    925 				const struct internalvar_funcs *funcs,
    926 				void *data);
    927 
    928 /* Compile an internal variable to an agent expression.  VAR is the
    929    variable to compile; EXPR and VALUE are the agent expression we are
    930    updating.  This will return 0 if there is no known way to compile
    931    VAR, and 1 if VAR was successfully compiled.  It may also throw an
    932    exception on error.  */
    933 
    934 extern int compile_internalvar_to_ax (struct internalvar *var,
    935 				      struct agent_expr *expr,
    936 				      struct axs_value *value);
    937 
    938 extern struct internalvar *lookup_internalvar (const char *name);
    939 
    940 extern int value_equal (struct value *arg1, struct value *arg2);
    941 
    942 extern int value_equal_contents (struct value *arg1, struct value *arg2);
    943 
    944 extern int value_less (struct value *arg1, struct value *arg2);
    945 
    946 extern int value_logical_not (struct value *arg1);
    947 
    948 /* C++ */
    949 
    950 extern struct value *value_of_this (const struct language_defn *lang);
    951 
    952 extern struct value *value_of_this_silent (const struct language_defn *lang);
    953 
    954 extern struct value *value_x_binop (struct value *arg1, struct value *arg2,
    955 				    enum exp_opcode op,
    956 				    enum exp_opcode otherop,
    957 				    enum noside noside);
    958 
    959 extern struct value *value_x_unop (struct value *arg1, enum exp_opcode op,
    960 				   enum noside noside);
    961 
    962 extern struct value *value_fn_field (struct value **arg1p, struct fn_field *f,
    963 				     int j, struct type *type, LONGEST offset);
    964 
    965 extern int binop_types_user_defined_p (enum exp_opcode op,
    966 				       struct type *type1,
    967 				       struct type *type2);
    968 
    969 extern int binop_user_defined_p (enum exp_opcode op, struct value *arg1,
    970 				 struct value *arg2);
    971 
    972 extern int unop_user_defined_p (enum exp_opcode op, struct value *arg1);
    973 
    974 extern int destructor_name_p (const char *name, struct type *type);
    975 
    976 extern void value_incref (struct value *val);
    977 
    978 extern void value_free (struct value *val);
    979 
    980 extern void free_all_values (void);
    981 
    982 extern void free_value_chain (struct value *v);
    983 
    984 extern void release_value (struct value *val);
    985 
    986 extern void release_value_or_incref (struct value *val);
    987 
    988 extern int record_latest_value (struct value *val);
    989 
    990 extern void modify_field (struct type *type, gdb_byte *addr,
    991 			  LONGEST fieldval, LONGEST bitpos, LONGEST bitsize);
    992 
    993 extern void type_print (struct type *type, const char *varstring,
    994 			struct ui_file *stream, int show);
    995 
    996 extern char *type_to_string (struct type *type);
    997 
    998 extern gdb_byte *baseclass_addr (struct type *type, int index,
    999 				 gdb_byte *valaddr,
   1000 				 struct value **valuep, int *errp);
   1001 
   1002 extern void print_longest (struct ui_file *stream, int format,
   1003 			   int use_local, LONGEST val);
   1004 
   1005 extern void print_floating (const gdb_byte *valaddr, struct type *type,
   1006 			    struct ui_file *stream);
   1007 
   1008 extern void print_decimal_floating (const gdb_byte *valaddr, struct type *type,
   1009 				    struct ui_file *stream);
   1010 
   1011 extern void value_print (struct value *val, struct ui_file *stream,
   1012 			 const struct value_print_options *options);
   1013 
   1014 extern void value_print_array_elements (struct value *val,
   1015 					struct ui_file *stream, int format,
   1016 					enum val_prettyformat pretty);
   1017 
   1018 extern struct value *value_release_to_mark (const struct value *mark);
   1019 
   1020 extern void val_print (struct type *type, const gdb_byte *valaddr,
   1021 		       LONGEST embedded_offset, CORE_ADDR address,
   1022 		       struct ui_file *stream, int recurse,
   1023 		       const struct value *val,
   1024 		       const struct value_print_options *options,
   1025 		       const struct language_defn *language);
   1026 
   1027 extern void common_val_print (struct value *val,
   1028 			      struct ui_file *stream, int recurse,
   1029 			      const struct value_print_options *options,
   1030 			      const struct language_defn *language);
   1031 
   1032 extern int val_print_string (struct type *elttype, const char *encoding,
   1033 			     CORE_ADDR addr, int len,
   1034 			     struct ui_file *stream,
   1035 			     const struct value_print_options *options);
   1036 
   1037 extern void print_variable_and_value (const char *name,
   1038 				      struct symbol *var,
   1039 				      struct frame_info *frame,
   1040 				      struct ui_file *stream,
   1041 				      int indent);
   1042 
   1043 extern void typedef_print (struct type *type, struct symbol *news,
   1044 			   struct ui_file *stream);
   1045 
   1046 extern char *internalvar_name (const struct internalvar *var);
   1047 
   1048 extern void preserve_values (struct objfile *);
   1049 
   1050 /* From values.c */
   1051 
   1052 extern struct value *value_copy (struct value *);
   1053 
   1054 extern struct value *value_non_lval (struct value *);
   1055 
   1056 extern void value_force_lval (struct value *, CORE_ADDR);
   1057 
   1058 extern struct value *make_cv_value (int, int, struct value *);
   1059 
   1060 extern void preserve_one_value (struct value *, struct objfile *, htab_t);
   1061 
   1062 /* From valops.c */
   1063 
   1064 extern struct value *varying_to_slice (struct value *);
   1065 
   1066 extern struct value *value_slice (struct value *, int, int);
   1067 
   1068 extern struct value *value_literal_complex (struct value *, struct value *,
   1069 					    struct type *);
   1070 
   1071 extern struct value *find_function_in_inferior (const char *,
   1072 						struct objfile **);
   1073 
   1074 extern struct value *value_allocate_space_in_inferior (int);
   1075 
   1076 extern struct value *value_subscripted_rvalue (struct value *array,
   1077 					       LONGEST index, int lowerbound);
   1078 
   1079 /* User function handler.  */
   1080 
   1081 typedef struct value *(*internal_function_fn) (struct gdbarch *gdbarch,
   1082 					       const struct language_defn *language,
   1083 					       void *cookie,
   1084 					       int argc,
   1085 					       struct value **argv);
   1086 
   1087 void add_internal_function (const char *name, const char *doc,
   1088 			    internal_function_fn handler,
   1089 			    void *cookie);
   1090 
   1091 struct value *call_internal_function (struct gdbarch *gdbarch,
   1092 				      const struct language_defn *language,
   1093 				      struct value *function,
   1094 				      int argc, struct value **argv);
   1095 
   1096 char *value_internal_function_name (struct value *);
   1097 
   1098 extern struct value *value_of_xmethod (struct xmethod_worker *);
   1099 
   1100 extern struct type *result_type_of_xmethod (struct value *method,
   1101 					    int argc, struct value **argv);
   1102 
   1103 extern struct value *call_xmethod (struct value *method,
   1104 				   int argc, struct value **argv);
   1105 
   1106 #endif /* !defined (VALUE_H) */
   1107