diff options
Diffstat (limited to 'gdb/value.h')
-rw-r--r-- | gdb/value.h | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/gdb/value.h b/gdb/value.h index 8e5fd54..b9d2809 100644 --- a/gdb/value.h +++ b/gdb/value.h @@ -1,6 +1,6 @@ /* Definitions for values of C expressions, for GDB. - Copyright (C) 1986-2024 Free Software Foundation, Inc. + Copyright (C) 1986-2025 Free Software Foundation, Inc. This file is part of GDB. @@ -961,7 +961,7 @@ struct lval_funcs This may simply return the same closure, if VALUE's is reference-counted or statically allocated. - This may be NULL, in which case VALUE's closure is re-used in the + This may be NULL, in which case VALUE's closure is reused in the new value. */ void *(*copy_closure) (const struct value *v); @@ -1058,10 +1058,19 @@ extern gdb_mpz value_as_mpz (struct value *val); extern LONGEST unpack_long (struct type *type, const gdb_byte *valaddr); extern CORE_ADDR unpack_pointer (struct type *type, const gdb_byte *valaddr); +/* Unpack a field FIELDNO of the specified TYPE, from the anonymous + object at VALADDR. See unpack_bits_as_long for more details. */ + extern LONGEST unpack_field_as_long (struct type *type, const gdb_byte *valaddr, int fieldno); +/* Unpack a field, FIELD, from the anonymous object at VALADDR. See + unpack_bits_as_long for more details. */ + +extern LONGEST unpack_field_as_long (const gdb_byte *valaddr, + struct field *field); + /* Unpack a bitfield of the specified FIELD_TYPE, from the object at VALADDR, and store the result in *RESULT. The bitfield starts at BITPOS bits and contains BITSIZE bits; if @@ -1147,9 +1156,12 @@ extern struct value *address_of_variable (struct symbol *var, extern value *value_of_register (int regnum, const frame_info_ptr &next_frame); -/* Same as the above, but the value is not fetched. */ +/* Same as the above, but the value is not fetched. If TYPE is + non-nullptr, use it as the value type. Otherwise, 'register_type' + will be used to obtain the type. */ -extern value *value_of_register_lazy (const frame_info_ptr &next_frame, int regnum); +extern value *value_of_register_lazy (const frame_info_ptr &next_frame, + int regnum, struct type *type = nullptr); /* Return the symbol's reading requirement. */ @@ -1297,10 +1309,9 @@ extern struct value *value_struct_elt (struct value **argp, const char *name, int *static_memfuncp, const char *err); -extern struct value *value_struct_elt_bitpos (struct value **argp, +extern struct value *value_struct_elt_bitpos (struct value *val, int bitpos, - struct type *field_type, - const char *err); + struct type *field_type); extern struct value *value_aggregate_elt (struct type *curtype, const char *name, @@ -1578,7 +1589,7 @@ extern struct value *make_cv_value (int, int, struct value *); extern struct value *varying_to_slice (struct value *); -extern struct value *value_slice (struct value *, int, int); +extern struct value *value_slice (struct value *, LONGEST, LONGEST); /* Create a complex number. The type is the complex type; the values are cast to the underlying scalar type before the complex number is |