Index: gdb/value.h |
diff --git a/gdb/value.h b/gdb/value.h |
index d8b157f0b83b84b834ce4f1b56f0bbb4a252f950..db964e36e83ad3e9bb274208b8119ef0bd8f9a10 100644 |
--- a/gdb/value.h |
+++ b/gdb/value.h |
@@ -1,6 +1,6 @@ |
/* Definitions for values of C expressions, for GDB. |
- Copyright (C) 1986-2012 Free Software Foundation, Inc. |
+ Copyright (C) 1986-2013 Free Software Foundation, Inc. |
This file is part of GDB. |
@@ -90,8 +90,6 @@ extern void set_value_offset (struct value *, int offset); |
not_lval and be done with it? */ |
extern int deprecated_value_modifiable (struct value *value); |
-extern void deprecated_set_value_modifiable (struct value *value, |
- int modifiable); |
/* If a value represents a C++ object, then the `type' field gives the |
object's compile-time type. If the object actually belongs to some |
@@ -275,6 +273,11 @@ extern void set_value_lazy (struct value *value, int val); |
extern int value_stack (struct value *); |
extern void set_value_stack (struct value *value, int val); |
+/* Throw an error complaining that the value has been optimized |
+ out. */ |
+ |
+extern void error_value_optimized_out (void); |
+ |
/* value_contents() and value_contents_raw() both return the address |
of the gdb buffer used to hold a copy of the contents of the lval. |
value_contents() is used when the contents of the buffer are needed |
@@ -321,10 +324,16 @@ extern int value_fetch_lazy (struct value *val); |
extern int value_contents_equal (struct value *val1, struct value *val2); |
/* If nonzero, this is the value of a variable which does not actually |
- exist in the program. */ |
+ exist in the program, at least partially. If the value is lazy, |
+ this may fetch it now. */ |
extern int value_optimized_out (struct value *value); |
extern void set_value_optimized_out (struct value *value, int val); |
+/* Like value_optimized_out, but don't fetch the value even if it is |
+ lazy. Mainly useful for constructing other values using VALUE as |
+ template. */ |
+extern int value_optimized_out_const (const struct value *value); |
+ |
/* Like value_optimized_out, but return false if any bit in the object |
is valid. */ |
extern int value_entirely_optimized_out (const struct value *value); |
@@ -431,6 +440,10 @@ extern int value_bytes_available (const struct value *value, |
whole object is unavailable. */ |
extern int value_entirely_available (struct value *value); |
+/* Like value_entirely_available, but return false if any byte in the |
+ whole object is available. */ |
+extern int value_entirely_unavailable (struct value *value); |
+ |
/* Mark VALUE's content bytes starting at OFFSET and extending for |
LENGTH bytes as unavailable. */ |
@@ -465,7 +478,12 @@ extern void mark_value_bytes_unavailable (struct value *value, |
value_available_contents_eq(val, 4, val, 12, 2) => 1 |
value_available_contents_eq(val, 4, val, 12, 4) => 0 |
value_available_contents_eq(val, 3, val, 4, 4) => 0 |
-*/ |
+ |
+ We only know whether a value chunk is available if we've tried to |
+ read it. As this routine is used by printing routines, which may |
+ be printing values in the value history, long after the inferior is |
+ gone, it works with const values. Therefore, this routine must not |
+ be called with lazy values. */ |
extern int value_available_contents_eq (const struct value *val1, int offset1, |
const struct value *val2, int offset2, |
@@ -482,6 +500,12 @@ extern void read_value_memory (struct value *val, int embedded_offset, |
int stack, CORE_ADDR memaddr, |
gdb_byte *buffer, size_t length); |
+/* Cast SCALAR_VALUE to the element type of VECTOR_TYPE, then replicate |
+ into each element of a new vector value with VECTOR_TYPE. */ |
+ |
+struct value *value_vector_widen (struct value *scalar_value, |
+ struct type *vector_type); |
+ |
#include "symtab.h" |
@@ -557,7 +581,8 @@ extern CORE_ADDR address_from_register (struct type *type, int regnum, |
extern struct value *value_of_variable (struct symbol *var, |
const struct block *b); |
-extern struct value *address_of_variable (struct symbol *var, struct block *b); |
+extern struct value *address_of_variable (struct symbol *var, |
+ const struct block *b); |
extern struct value *value_of_register (int regnum, struct frame_info *frame); |
@@ -573,7 +598,6 @@ extern struct value *default_read_var_value (struct symbol *var, |
extern struct value *allocate_value (struct type *type); |
extern struct value *allocate_value_lazy (struct type *type); |
-extern void allocate_value_contents (struct value *value); |
extern void value_contents_copy (struct value *dst, int dst_offset, |
struct value *src, int src_offset, |
int length); |
@@ -587,12 +611,10 @@ extern struct value *value_mark (void); |
extern void value_free_to_mark (struct value *mark); |
-extern struct value *value_cstring (char *ptr, int len, |
+extern struct value *value_cstring (char *ptr, ssize_t len, |
struct type *char_type); |
-extern struct value *value_string (char *ptr, int len, |
+extern struct value *value_string (char *ptr, ssize_t len, |
struct type *char_type); |
-extern struct value *value_bitstring (char *ptr, int len, |
- struct type *index_type); |
extern struct value *value_array (int lowbound, int highbound, |
struct value **elemvec); |
@@ -646,7 +668,7 @@ enum oload_search_type { NON_METHOD, METHOD, BOTH }; |
extern int find_overload_match (struct value **args, int nargs, |
const char *name, |
- enum oload_search_type method, int lax, |
+ enum oload_search_type method, |
struct value **objp, struct symbol *fsym, |
struct value **valp, struct symbol **symp, |
int *staticp, const int no_adl); |
@@ -693,6 +715,10 @@ extern int value_in (struct value *element, struct value *set); |
extern int value_bit_index (struct type *type, const gdb_byte *addr, |
int index); |
+extern enum return_value_convention |
+struct_return_convention (struct gdbarch *gdbarch, struct value *function, |
+ struct type *value_type); |
+ |
extern int using_struct_return (struct gdbarch *gdbarch, |
struct value *function, |
struct type *value_type); |
@@ -710,22 +736,23 @@ extern struct value *evaluate_subexpression_type (struct expression *exp, |
extern void fetch_subexp_value (struct expression *exp, int *pc, |
struct value **valp, struct value **resultp, |
- struct value **val_chain); |
+ struct value **val_chain, |
+ int preserve_errors); |
extern char *extract_field_op (struct expression *exp, int *subexp); |
extern struct value *evaluate_subexp_with_coercion (struct expression *, |
int *, enum noside); |
-extern struct value *parse_and_eval (char *exp); |
+extern struct value *parse_and_eval (const char *exp); |
-extern struct value *parse_to_comma_and_eval (char **expp); |
+extern struct value *parse_to_comma_and_eval (const char **expp); |
extern struct type *parse_and_eval_type (char *p, int length); |
-extern CORE_ADDR parse_and_eval_address (char *exp); |
+extern CORE_ADDR parse_and_eval_address (const char *exp); |
-extern LONGEST parse_and_eval_long (char *exp); |
+extern LONGEST parse_and_eval_long (const char *exp); |
extern void unop_promote (const struct language_defn *language, |
struct gdbarch *gdbarch, |
@@ -794,10 +821,9 @@ struct internalvar_funcs |
void (*destroy) (void *data); |
}; |
-extern struct internalvar * |
-create_internalvar_type_lazy (const char *name, |
- const struct internalvar_funcs *funcs, |
- void *data); |
+extern struct internalvar *create_internalvar_type_lazy (const char *name, |
+ const struct internalvar_funcs *funcs, |
+ void *data); |
/* Compile an internal variable to an agent expression. VAR is the |
variable to compile; EXPR and VALUE are the agent expression we are |
@@ -887,7 +913,7 @@ extern void value_print (struct value *val, struct ui_file *stream, |
extern void value_print_array_elements (struct value *val, |
struct ui_file *stream, int format, |
- enum val_prettyprint pretty); |
+ enum val_prettyformat pretty); |
extern struct value *value_release_to_mark (struct value *mark); |
@@ -914,8 +940,6 @@ extern void print_variable_and_value (const char *name, |
struct ui_file *stream, |
int indent); |
-extern int check_field (struct type *, const char *); |
- |
extern void typedef_print (struct type *type, struct symbol *news, |
struct ui_file *stream); |