Home | History | Annotate | Line # | Download | only in gdb
value.h revision 1.6.4.1
      1 /* Definitions for values of C expressions, for GDB.
      2 
      3    Copyright (C) 1986-2017 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 ID of "next" frame to which a register value is relative.  A
    438    register value is indicated by VALUE_LVAL being set to lval_register.
    439    So, if the register value is found relative to frame F, then the
    440    frame id of F->next will be stored in VALUE_NEXT_FRAME_ID.  */
    441 extern struct frame_id *deprecated_value_next_frame_id_hack (struct value *);
    442 #define VALUE_NEXT_FRAME_ID(val) (*deprecated_value_next_frame_id_hack (val))
    443 
    444 /* Frame ID of frame to which a register value is relative.  This is
    445    similar to VALUE_NEXT_FRAME_ID, above, but may not be assigned to.
    446    Note that VALUE_FRAME_ID effectively undoes the "next" operation
    447    that was performed during the assignment to VALUE_NEXT_FRAME_ID.  */
    448 #define VALUE_FRAME_ID(val) (get_prev_frame_id_by_id (VALUE_NEXT_FRAME_ID (val)))
    449 
    450 /* Register number if the value is from a register.  */
    451 extern int *deprecated_value_regnum_hack (struct value *);
    452 #define VALUE_REGNUM(val) (*deprecated_value_regnum_hack (val))
    453 
    454 /* Return value after lval_funcs->coerce_ref (after check_typedef).  Return
    455    NULL if lval_funcs->coerce_ref is not applicable for whatever reason.  */
    456 
    457 extern struct value *coerce_ref_if_computed (const struct value *arg);
    458 
    459 /* Setup a new value type and enclosing value type for dereferenced value VALUE.
    460    ENC_TYPE is the new enclosing type that should be set.  ORIGINAL_TYPE and
    461    ORIGINAL_VAL are the type and value of the original reference or pointer.
    462 
    463    Note, that VALUE is modified by this function.
    464 
    465    It is a common implementation for coerce_ref and value_ind.  */
    466 
    467 extern struct value * readjust_indirect_value_type (struct value *value,
    468 						    struct type *enc_type,
    469 						    const struct type *original_type,
    470 						    const struct value *original_val);
    471 
    472 /* Convert a REF to the object referenced.  */
    473 
    474 extern struct value *coerce_ref (struct value *value);
    475 
    476 /* If ARG is an array, convert it to a pointer.
    477    If ARG is a function, convert it to a function pointer.
    478 
    479    References are dereferenced.  */
    480 
    481 extern struct value *coerce_array (struct value *value);
    482 
    483 /* Given a value, determine whether the bits starting at OFFSET and
    484    extending for LENGTH bits are a synthetic pointer.  */
    485 
    486 extern int value_bits_synthetic_pointer (const struct value *value,
    487 					 LONGEST offset, LONGEST length);
    488 
    489 /* Given a value, determine whether the contents bytes starting at
    490    OFFSET and extending for LENGTH bytes are available.  This returns
    491    nonzero if all bytes in the given range are available, zero if any
    492    byte is unavailable.  */
    493 
    494 extern int value_bytes_available (const struct value *value,
    495 				  LONGEST offset, LONGEST length);
    496 
    497 /* Given a value, determine whether the contents bits starting at
    498    OFFSET and extending for LENGTH bits are available.  This returns
    499    nonzero if all bits in the given range are available, zero if any
    500    bit is unavailable.  */
    501 
    502 extern int value_bits_available (const struct value *value,
    503 				 LONGEST offset, LONGEST length);
    504 
    505 /* Like value_bytes_available, but return false if any byte in the
    506    whole object is unavailable.  */
    507 extern int value_entirely_available (struct value *value);
    508 
    509 /* Like value_entirely_available, but return false if any byte in the
    510    whole object is available.  */
    511 extern int value_entirely_unavailable (struct value *value);
    512 
    513 /* Mark VALUE's content bytes starting at OFFSET and extending for
    514    LENGTH bytes as unavailable.  */
    515 
    516 extern void mark_value_bytes_unavailable (struct value *value,
    517 					  LONGEST offset, LONGEST length);
    518 
    519 /* Mark VALUE's content bits starting at OFFSET and extending for
    520    LENGTH bits as unavailable.  */
    521 
    522 extern void mark_value_bits_unavailable (struct value *value,
    523 					 LONGEST offset, LONGEST length);
    524 
    525 /* Compare LENGTH bytes of VAL1's contents starting at OFFSET1 with
    526    LENGTH bytes of VAL2's contents starting at OFFSET2.
    527 
    528    Note that "contents" refers to the whole value's contents
    529    (value_contents_all), without any embedded offset adjustment.  For
    530    example, to compare a complete object value with itself, including
    531    its enclosing type chunk, you'd do:
    532 
    533      int len = TYPE_LENGTH (check_typedef (value_enclosing_type (val)));
    534      value_contents_eq (val, 0, val, 0, len);
    535 
    536    Returns true iff the set of available/valid contents match.
    537 
    538    Optimized-out contents are equal to optimized-out contents, and are
    539    not equal to non-optimized-out contents.
    540 
    541    Unavailable contente are equal to unavailable contents, and are not
    542    equal to non-unavailable contents.
    543 
    544    For example, if 'x's represent an unavailable byte, and 'V' and 'Z'
    545    represent different available/valid bytes, in a value with length
    546    16:
    547 
    548      offset:   0   4   8   12  16
    549      contents: xxxxVVVVxxxxVVZZ
    550 
    551    then:
    552 
    553      value_contents_eq(val, 0, val, 8, 6) => 1
    554      value_contents_eq(val, 0, val, 4, 4) => 0
    555      value_contents_eq(val, 0, val, 8, 8) => 0
    556      value_contents_eq(val, 4, val, 12, 2) => 1
    557      value_contents_eq(val, 4, val, 12, 4) => 0
    558      value_contents_eq(val, 3, val, 4, 4) => 0
    559 
    560    If 'x's represent an unavailable byte, 'o' represents an optimized
    561    out byte, in a value with length 8:
    562 
    563      offset:   0   4   8
    564      contents: xxxxoooo
    565 
    566    then:
    567 
    568      value_contents_eq(val, 0, val, 2, 2) => 1
    569      value_contents_eq(val, 4, val, 6, 2) => 1
    570      value_contents_eq(val, 0, val, 4, 4) => 0
    571 
    572    We only know whether a value chunk is unavailable or optimized out
    573    if we've tried to read it.  As this routine is used by printing
    574    routines, which may be printing values in the value history, long
    575    after the inferior is gone, it works with const values.  Therefore,
    576    this routine must not be called with lazy values.  */
    577 
    578 extern int value_contents_eq (const struct value *val1, LONGEST offset1,
    579 			      const struct value *val2, LONGEST offset2,
    580 			      LONGEST length);
    581 
    582 /* Read LENGTH addressable memory units starting at MEMADDR into BUFFER,
    583    which is (or will be copied to) VAL's contents buffer offset by
    584    EMBEDDED_OFFSET (that is, to &VAL->contents[EMBEDDED_OFFSET]).
    585    Marks value contents ranges as unavailable if the corresponding
    586    memory is likewise unavailable.  STACK indicates whether the memory
    587    is known to be stack memory.  */
    588 
    589 extern void read_value_memory (struct value *val, LONGEST embedded_offset,
    590 			       int stack, CORE_ADDR memaddr,
    591 			       gdb_byte *buffer, size_t length);
    592 
    593 /* Cast SCALAR_VALUE to the element type of VECTOR_TYPE, then replicate
    594    into each element of a new vector value with VECTOR_TYPE.  */
    595 
    596 struct value *value_vector_widen (struct value *scalar_value,
    597 				  struct type *vector_type);
    598 
    599 
    600 
    602 #include "symtab.h"
    603 #include "gdbtypes.h"
    604 #include "expression.h"
    605 
    606 struct frame_info;
    607 struct fn_field;
    608 
    609 extern int print_address_demangle (const struct value_print_options *,
    610 				   struct gdbarch *, CORE_ADDR,
    611 				   struct ui_file *, int);
    612 
    613 extern LONGEST value_as_long (struct value *val);
    614 extern DOUBLEST value_as_double (struct value *val);
    615 extern CORE_ADDR value_as_address (struct value *val);
    616 
    617 extern LONGEST unpack_long (struct type *type, const gdb_byte *valaddr);
    618 extern DOUBLEST unpack_double (struct type *type, const gdb_byte *valaddr,
    619 			       int *invp);
    620 extern CORE_ADDR unpack_pointer (struct type *type, const gdb_byte *valaddr);
    621 
    622 extern LONGEST unpack_field_as_long (struct type *type,
    623 				     const gdb_byte *valaddr,
    624 				     int fieldno);
    625 extern int unpack_value_field_as_long (struct type *type, const gdb_byte *valaddr,
    626 				LONGEST embedded_offset, int fieldno,
    627 				const struct value *val, LONGEST *result);
    628 
    629 extern void unpack_value_bitfield (struct value *dest_val,
    630 				   LONGEST bitpos, LONGEST bitsize,
    631 				   const gdb_byte *valaddr,
    632 				   LONGEST embedded_offset,
    633 				   const struct value *val);
    634 
    635 extern struct value *value_field_bitfield (struct type *type, int fieldno,
    636 					   const gdb_byte *valaddr,
    637 					   LONGEST embedded_offset,
    638 					   const struct value *val);
    639 
    640 extern void pack_long (gdb_byte *buf, struct type *type, LONGEST num);
    641 
    642 extern struct value *value_from_longest (struct type *type, LONGEST num);
    643 extern struct value *value_from_ulongest (struct type *type, ULONGEST num);
    644 extern struct value *value_from_pointer (struct type *type, CORE_ADDR addr);
    645 extern struct value *value_from_double (struct type *type, DOUBLEST num);
    646 extern struct value *value_from_decfloat (struct type *type,
    647 					  const gdb_byte *decbytes);
    648 extern struct value *value_from_history_ref (const char *, const char **);
    649 extern struct value *value_from_component (struct value *, struct type *,
    650 					   LONGEST);
    651 
    652 extern struct value *value_at (struct type *type, CORE_ADDR addr);
    653 extern struct value *value_at_lazy (struct type *type, CORE_ADDR addr);
    654 
    655 extern struct value *value_from_contents_and_address_unresolved
    656      (struct type *, const gdb_byte *, CORE_ADDR);
    657 extern struct value *value_from_contents_and_address (struct type *,
    658 						      const gdb_byte *,
    659 						      CORE_ADDR);
    660 extern struct value *value_from_contents (struct type *, const gdb_byte *);
    661 
    662 extern struct value *default_value_from_register (struct gdbarch *gdbarch,
    663 						  struct type *type,
    664 						  int regnum,
    665 						  struct frame_id frame_id);
    666 
    667 extern void read_frame_register_value (struct value *value,
    668 				       struct frame_info *frame);
    669 
    670 extern struct value *value_from_register (struct type *type, int regnum,
    671 					  struct frame_info *frame);
    672 
    673 extern CORE_ADDR address_from_register (int regnum,
    674 					struct frame_info *frame);
    675 
    676 extern struct value *value_of_variable (struct symbol *var,
    677 					const struct block *b);
    678 
    679 extern struct value *address_of_variable (struct symbol *var,
    680 					  const struct block *b);
    681 
    682 extern struct value *value_of_register (int regnum, struct frame_info *frame);
    683 
    684 struct value *value_of_register_lazy (struct frame_info *frame, int regnum);
    685 
    686 /* Return the symbol's reading requirement.  */
    687 
    688 extern enum symbol_needs_kind symbol_read_needs (struct symbol *);
    689 
    690 /* Return true if the symbol needs a frame.  This is a wrapper for
    691    symbol_read_needs that simply checks for SYMBOL_NEEDS_FRAME.  */
    692 
    693 extern int symbol_read_needs_frame (struct symbol *);
    694 
    695 extern struct value *read_var_value (struct symbol *var,
    696 				     const struct block *var_block,
    697 				     struct frame_info *frame);
    698 
    699 extern struct value *default_read_var_value (struct symbol *var,
    700 					     const struct block *var_block,
    701 					     struct frame_info *frame);
    702 
    703 extern struct value *allocate_value (struct type *type);
    704 extern struct value *allocate_value_lazy (struct type *type);
    705 extern void value_contents_copy (struct value *dst, LONGEST dst_offset,
    706 				 struct value *src, LONGEST src_offset,
    707 				 LONGEST length);
    708 extern void value_contents_copy_raw (struct value *dst, LONGEST dst_offset,
    709 				     struct value *src, LONGEST src_offset,
    710 				     LONGEST length);
    711 
    712 extern struct value *allocate_repeat_value (struct type *type, int count);
    713 
    714 extern struct value *value_mark (void);
    715 
    716 extern void value_free_to_mark (const struct value *mark);
    717 
    718 /* A helper class that uses value_mark at construction time and calls
    719    value_free_to_mark in the destructor.  This is used to clear out
    720    temporary values created during the lifetime of this object.  */
    721 class scoped_value_mark
    722 {
    723  public:
    724 
    725   scoped_value_mark ()
    726     : m_value (value_mark ())
    727   {
    728   }
    729 
    730   ~scoped_value_mark ()
    731   {
    732     free_to_mark ();
    733   }
    734 
    735   /* Free the values currently on the value stack.  */
    736   void free_to_mark ()
    737   {
    738     if (m_value != NULL)
    739       {
    740 	value_free_to_mark (m_value);
    741 	m_value = NULL;
    742       }
    743   }
    744 
    745  private:
    746 
    747   const struct value *m_value;
    748 };
    749 
    750 extern struct value *value_cstring (const char *ptr, ssize_t len,
    751 				    struct type *char_type);
    752 extern struct value *value_string (const char *ptr, ssize_t len,
    753 				   struct type *char_type);
    754 
    755 extern struct value *value_array (int lowbound, int highbound,
    756 				  struct value **elemvec);
    757 
    758 extern struct value *value_concat (struct value *arg1, struct value *arg2);
    759 
    760 extern struct value *value_binop (struct value *arg1, struct value *arg2,
    761 				  enum exp_opcode op);
    762 
    763 extern struct value *value_ptradd (struct value *arg1, LONGEST arg2);
    764 
    765 extern LONGEST value_ptrdiff (struct value *arg1, struct value *arg2);
    766 
    767 extern int value_must_coerce_to_target (struct value *arg1);
    768 
    769 extern struct value *value_coerce_to_target (struct value *arg1);
    770 
    771 extern struct value *value_coerce_array (struct value *arg1);
    772 
    773 extern struct value *value_coerce_function (struct value *arg1);
    774 
    775 extern struct value *value_ind (struct value *arg1);
    776 
    777 extern struct value *value_addr (struct value *arg1);
    778 
    779 extern struct value *value_ref (struct value *arg1, enum type_code refcode);
    780 
    781 extern struct value *value_assign (struct value *toval,
    782 				   struct value *fromval);
    783 
    784 extern struct value *value_pos (struct value *arg1);
    785 
    786 extern struct value *value_neg (struct value *arg1);
    787 
    788 extern struct value *value_complement (struct value *arg1);
    789 
    790 extern struct value *value_struct_elt (struct value **argp,
    791 				       struct value **args,
    792 				       const char *name, int *static_memfuncp,
    793 				       const char *err);
    794 
    795 extern struct value *value_struct_elt_bitpos (struct value **argp,
    796 					      int bitpos,
    797 					      struct type *field_type,
    798 					      const char *err);
    799 
    800 extern struct value *value_aggregate_elt (struct type *curtype,
    801 					  const char *name,
    802 					  struct type *expect_type,
    803 					  int want_address,
    804 					  enum noside noside);
    805 
    806 extern struct value *value_static_field (struct type *type, int fieldno);
    807 
    808 enum oload_search_type { NON_METHOD, METHOD, BOTH };
    809 
    810 extern int find_overload_match (struct value **args, int nargs,
    811 				const char *name,
    812 				enum oload_search_type method,
    813 				struct value **objp, struct symbol *fsym,
    814 				struct value **valp, struct symbol **symp,
    815 				int *staticp, const int no_adl,
    816 				enum noside noside);
    817 
    818 extern struct value *value_field (struct value *arg1, int fieldno);
    819 
    820 extern struct value *value_primitive_field (struct value *arg1, LONGEST offset,
    821 					    int fieldno,
    822 					    struct type *arg_type);
    823 
    824 
    825 extern struct type *value_rtti_indirect_type (struct value *, int *, LONGEST *,
    826 					      int *);
    827 
    828 extern struct value *value_full_object (struct value *, struct type *, int,
    829 					int, int);
    830 
    831 extern struct value *value_cast_pointers (struct type *, struct value *, int);
    832 
    833 extern struct value *value_cast (struct type *type, struct value *arg2);
    834 
    835 extern struct value *value_reinterpret_cast (struct type *type,
    836 					     struct value *arg);
    837 
    838 extern struct value *value_dynamic_cast (struct type *type, struct value *arg);
    839 
    840 extern struct value *value_zero (struct type *type, enum lval_type lv);
    841 
    842 extern struct value *value_one (struct type *type);
    843 
    844 extern struct value *value_repeat (struct value *arg1, int count);
    845 
    846 extern struct value *value_subscript (struct value *array, LONGEST index);
    847 
    848 extern struct value *value_bitstring_subscript (struct type *type,
    849 						struct value *bitstring,
    850 						LONGEST index);
    851 
    852 extern struct value *register_value_being_returned (struct type *valtype,
    853 						    struct regcache *retbuf);
    854 
    855 extern int value_in (struct value *element, struct value *set);
    856 
    857 extern int value_bit_index (struct type *type, const gdb_byte *addr,
    858 			    int index);
    859 
    860 extern enum return_value_convention
    861 struct_return_convention (struct gdbarch *gdbarch, struct value *function,
    862 			  struct type *value_type);
    863 
    864 extern int using_struct_return (struct gdbarch *gdbarch,
    865 				struct value *function,
    866 				struct type *value_type);
    867 
    868 extern struct value *evaluate_expression (struct expression *exp);
    869 
    870 extern struct value *evaluate_type (struct expression *exp);
    871 
    872 extern struct value *evaluate_subexp (struct type *expect_type,
    873 				      struct expression *exp,
    874 				      int *pos, enum noside noside);
    875 
    876 extern struct value *evaluate_subexpression_type (struct expression *exp,
    877 						  int subexp);
    878 
    879 extern void fetch_subexp_value (struct expression *exp, int *pc,
    880 				struct value **valp, struct value **resultp,
    881 				struct value **val_chain,
    882 				int preserve_errors);
    883 
    884 extern char *extract_field_op (struct expression *exp, int *subexp);
    885 
    886 extern struct value *evaluate_subexp_with_coercion (struct expression *,
    887 						    int *, enum noside);
    888 
    889 extern struct value *parse_and_eval (const char *exp);
    890 
    891 extern struct value *parse_to_comma_and_eval (const char **expp);
    892 
    893 extern struct type *parse_and_eval_type (char *p, int length);
    894 
    895 extern CORE_ADDR parse_and_eval_address (const char *exp);
    896 
    897 extern LONGEST parse_and_eval_long (const char *exp);
    898 
    899 extern void unop_promote (const struct language_defn *language,
    900 			  struct gdbarch *gdbarch,
    901 			  struct value **arg1);
    902 
    903 extern void binop_promote (const struct language_defn *language,
    904 			   struct gdbarch *gdbarch,
    905 			   struct value **arg1, struct value **arg2);
    906 
    907 extern struct value *access_value_history (int num);
    908 
    909 extern struct value *value_of_internalvar (struct gdbarch *gdbarch,
    910 					   struct internalvar *var);
    911 
    912 extern int get_internalvar_integer (struct internalvar *var, LONGEST *l);
    913 
    914 extern void set_internalvar (struct internalvar *var, struct value *val);
    915 
    916 extern void set_internalvar_integer (struct internalvar *var, LONGEST l);
    917 
    918 extern void set_internalvar_string (struct internalvar *var,
    919 				    const char *string);
    920 
    921 extern void clear_internalvar (struct internalvar *var);
    922 
    923 extern void set_internalvar_component (struct internalvar *var,
    924 				       LONGEST offset,
    925 				       LONGEST bitpos, LONGEST bitsize,
    926 				       struct value *newvalue);
    927 
    928 extern struct internalvar *lookup_only_internalvar (const char *name);
    929 
    930 extern struct internalvar *create_internalvar (const char *name);
    931 
    932 extern VEC (char_ptr) *complete_internalvar (const char *name);
    933 
    934 /* An internalvar can be dynamically computed by supplying a vector of
    935    function pointers to perform various operations.  */
    936 
    937 struct internalvar_funcs
    938 {
    939   /* Compute the value of the variable.  The DATA argument passed to
    940      the function is the same argument that was passed to
    941      `create_internalvar_type_lazy'.  */
    942 
    943   struct value *(*make_value) (struct gdbarch *arch,
    944 			       struct internalvar *var,
    945 			       void *data);
    946 
    947   /* Update the agent expression EXPR with bytecode to compute the
    948      value.  VALUE is the agent value we are updating.  The DATA
    949      argument passed to this function is the same argument that was
    950      passed to `create_internalvar_type_lazy'.  If this pointer is
    951      NULL, then the internalvar cannot be compiled to an agent
    952      expression.  */
    953 
    954   void (*compile_to_ax) (struct internalvar *var,
    955 			 struct agent_expr *expr,
    956 			 struct axs_value *value,
    957 			 void *data);
    958 
    959   /* If non-NULL, this is called to destroy DATA.  The DATA argument
    960      passed to this function is the same argument that was passed to
    961      `create_internalvar_type_lazy'.  */
    962 
    963   void (*destroy) (void *data);
    964 };
    965 
    966 extern struct internalvar *create_internalvar_type_lazy (const char *name,
    967 				const struct internalvar_funcs *funcs,
    968 				void *data);
    969 
    970 /* Compile an internal variable to an agent expression.  VAR is the
    971    variable to compile; EXPR and VALUE are the agent expression we are
    972    updating.  This will return 0 if there is no known way to compile
    973    VAR, and 1 if VAR was successfully compiled.  It may also throw an
    974    exception on error.  */
    975 
    976 extern int compile_internalvar_to_ax (struct internalvar *var,
    977 				      struct agent_expr *expr,
    978 				      struct axs_value *value);
    979 
    980 extern struct internalvar *lookup_internalvar (const char *name);
    981 
    982 extern int value_equal (struct value *arg1, struct value *arg2);
    983 
    984 extern int value_equal_contents (struct value *arg1, struct value *arg2);
    985 
    986 extern int value_less (struct value *arg1, struct value *arg2);
    987 
    988 extern int value_logical_not (struct value *arg1);
    989 
    990 /* C++ */
    991 
    992 extern struct value *value_of_this (const struct language_defn *lang);
    993 
    994 extern struct value *value_of_this_silent (const struct language_defn *lang);
    995 
    996 extern struct value *value_x_binop (struct value *arg1, struct value *arg2,
    997 				    enum exp_opcode op,
    998 				    enum exp_opcode otherop,
    999 				    enum noside noside);
   1000 
   1001 extern struct value *value_x_unop (struct value *arg1, enum exp_opcode op,
   1002 				   enum noside noside);
   1003 
   1004 extern struct value *value_fn_field (struct value **arg1p, struct fn_field *f,
   1005 				     int j, struct type *type, LONGEST offset);
   1006 
   1007 extern int binop_types_user_defined_p (enum exp_opcode op,
   1008 				       struct type *type1,
   1009 				       struct type *type2);
   1010 
   1011 extern int binop_user_defined_p (enum exp_opcode op, struct value *arg1,
   1012 				 struct value *arg2);
   1013 
   1014 extern int unop_user_defined_p (enum exp_opcode op, struct value *arg1);
   1015 
   1016 extern int destructor_name_p (const char *name, struct type *type);
   1017 
   1018 extern void value_incref (struct value *val);
   1019 
   1020 extern void value_free (struct value *val);
   1021 
   1022 extern void free_all_values (void);
   1023 
   1024 extern void free_value_chain (struct value *v);
   1025 
   1026 extern void release_value (struct value *val);
   1027 
   1028 extern void release_value_or_incref (struct value *val);
   1029 
   1030 extern int record_latest_value (struct value *val);
   1031 
   1032 extern void modify_field (struct type *type, gdb_byte *addr,
   1033 			  LONGEST fieldval, LONGEST bitpos, LONGEST bitsize);
   1034 
   1035 extern void type_print (struct type *type, const char *varstring,
   1036 			struct ui_file *stream, int show);
   1037 
   1038 extern std::string type_to_string (struct type *type);
   1039 
   1040 extern gdb_byte *baseclass_addr (struct type *type, int index,
   1041 				 gdb_byte *valaddr,
   1042 				 struct value **valuep, int *errp);
   1043 
   1044 extern void print_longest (struct ui_file *stream, int format,
   1045 			   int use_local, LONGEST val);
   1046 
   1047 extern void print_floating (const gdb_byte *valaddr, struct type *type,
   1048 			    struct ui_file *stream);
   1049 
   1050 extern void print_decimal_floating (const gdb_byte *valaddr, struct type *type,
   1051 				    struct ui_file *stream);
   1052 
   1053 extern void value_print (struct value *val, struct ui_file *stream,
   1054 			 const struct value_print_options *options);
   1055 
   1056 extern void value_print_array_elements (struct value *val,
   1057 					struct ui_file *stream, int format,
   1058 					enum val_prettyformat pretty);
   1059 
   1060 extern struct value *value_release_to_mark (const struct value *mark);
   1061 
   1062 extern void val_print (struct type *type,
   1063 		       LONGEST embedded_offset, CORE_ADDR address,
   1064 		       struct ui_file *stream, int recurse,
   1065 		       struct value *val,
   1066 		       const struct value_print_options *options,
   1067 		       const struct language_defn *language);
   1068 
   1069 extern void common_val_print (struct value *val,
   1070 			      struct ui_file *stream, int recurse,
   1071 			      const struct value_print_options *options,
   1072 			      const struct language_defn *language);
   1073 
   1074 extern int val_print_string (struct type *elttype, const char *encoding,
   1075 			     CORE_ADDR addr, int len,
   1076 			     struct ui_file *stream,
   1077 			     const struct value_print_options *options);
   1078 
   1079 extern void print_variable_and_value (const char *name,
   1080 				      struct symbol *var,
   1081 				      struct frame_info *frame,
   1082 				      struct ui_file *stream,
   1083 				      int indent);
   1084 
   1085 extern void typedef_print (struct type *type, struct symbol *news,
   1086 			   struct ui_file *stream);
   1087 
   1088 extern char *internalvar_name (const struct internalvar *var);
   1089 
   1090 extern void preserve_values (struct objfile *);
   1091 
   1092 /* From values.c */
   1093 
   1094 extern struct value *value_copy (struct value *);
   1095 
   1096 extern struct value *value_non_lval (struct value *);
   1097 
   1098 extern void value_force_lval (struct value *, CORE_ADDR);
   1099 
   1100 extern struct value *make_cv_value (int, int, struct value *);
   1101 
   1102 extern void preserve_one_value (struct value *, struct objfile *, htab_t);
   1103 
   1104 /* From valops.c */
   1105 
   1106 extern struct value *varying_to_slice (struct value *);
   1107 
   1108 extern struct value *value_slice (struct value *, int, int);
   1109 
   1110 extern struct value *value_literal_complex (struct value *, struct value *,
   1111 					    struct type *);
   1112 
   1113 extern struct value *find_function_in_inferior (const char *,
   1114 						struct objfile **);
   1115 
   1116 extern struct value *value_allocate_space_in_inferior (int);
   1117 
   1118 extern struct value *value_subscripted_rvalue (struct value *array,
   1119 					       LONGEST index, int lowerbound);
   1120 
   1121 /* User function handler.  */
   1122 
   1123 typedef struct value *(*internal_function_fn) (struct gdbarch *gdbarch,
   1124 					       const struct language_defn *language,
   1125 					       void *cookie,
   1126 					       int argc,
   1127 					       struct value **argv);
   1128 
   1129 void add_internal_function (const char *name, const char *doc,
   1130 			    internal_function_fn handler,
   1131 			    void *cookie);
   1132 
   1133 struct value *call_internal_function (struct gdbarch *gdbarch,
   1134 				      const struct language_defn *language,
   1135 				      struct value *function,
   1136 				      int argc, struct value **argv);
   1137 
   1138 char *value_internal_function_name (struct value *);
   1139 
   1140 extern struct value *value_of_xmethod (struct xmethod_worker *);
   1141 
   1142 extern struct type *result_type_of_xmethod (struct value *method,
   1143 					    int argc, struct value **argv);
   1144 
   1145 extern struct value *call_xmethod (struct value *method,
   1146 				   int argc, struct value **argv);
   1147 
   1148 #endif /* !defined (VALUE_H) */
   1149