/* Definitions for values of C expressions, for GDB.
- Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
- 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+ Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
+ 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
Free Software Foundation, Inc.
This file is part of GDB.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA. */
#if !defined (VALUE_H)
#define VALUE_H 1
get to the real subobject, if the value happens to represent
something embedded in a larger run-time object. */
-extern bfd_byte *value_contents_raw (struct value *);
+extern gdb_byte *value_contents_raw (struct value *);
/* Actual contents of the value. For use of this value; setting it
uses the stuff above. Not valid if lazy is nonzero. Target
value. Note that a value therefore extends beyond what is
declared here. */
-extern const bfd_byte *value_contents (struct value *);
-extern bfd_byte *value_contents_writeable (struct value *);
+extern const gdb_byte *value_contents (struct value *);
+extern gdb_byte *value_contents_writeable (struct value *);
/* The ALL variants of the above two macros do not adjust the returned
pointer by the embedded_offset value. */
-extern bfd_byte *value_contents_all_raw (struct value *);
-extern const bfd_byte *value_contents_all (struct value *);
+extern gdb_byte *value_contents_all_raw (struct value *);
+extern const gdb_byte *value_contents_all (struct value *);
extern int value_fetch_lazy (struct value *val);
extern int value_contents_equal (struct value *val1, struct value *val2);
extern int value_optimized_out (struct value *value);
extern void set_value_optimized_out (struct value *value, int val);
+/* Set or return field indicating whether a variable is initialized or
+ not, based on debugging information supplied by the compiler.
+ 1 = initialized; 0 = uninitialized. */
+extern int value_initialized (struct value *);
+extern void set_value_initialized (struct value *, int);
+
/* While the following fields are per- VALUE .CONTENT .PIECE (i.e., a
single value might have multiple LVALs), this hacked interface is
limited to just the first PIECE. Expect further change. */
struct internalvar *next;
char *name;
struct value *value;
+ int endian;
};
\f
extern DOUBLEST value_as_double (struct value *val);
extern CORE_ADDR value_as_address (struct value *val);
-extern LONGEST unpack_long (struct type *type, const char *valaddr);
-extern DOUBLEST unpack_double (struct type *type, const char *valaddr,
+extern LONGEST unpack_long (struct type *type, const gdb_byte *valaddr);
+extern DOUBLEST unpack_double (struct type *type, const gdb_byte *valaddr,
int *invp);
-extern CORE_ADDR unpack_pointer (struct type *type, const char *valaddr);
-extern LONGEST unpack_field_as_long (struct type *type, const char *valaddr,
+extern CORE_ADDR unpack_pointer (struct type *type, const gdb_byte *valaddr);
+extern LONGEST unpack_field_as_long (struct type *type,
+ const gdb_byte *valaddr,
int fieldno);
+extern void pack_long (gdb_byte *buf, struct type *type, LONGEST num);
+
extern struct value *value_from_longest (struct type *type, LONGEST num);
extern struct value *value_from_pointer (struct type *type, CORE_ADDR addr);
extern struct value *value_from_double (struct type *type, DOUBLEST num);
extern struct value *value_at (struct type *type, CORE_ADDR addr);
extern struct value *value_at_lazy (struct type *type, CORE_ADDR addr);
+extern struct value *default_value_from_register (struct type *type,
+ int regnum,
+ struct frame_info *frame);
+
extern struct value *value_from_register (struct type *type, int regnum,
struct frame_info *frame);
+extern CORE_ADDR address_from_register (struct type *type, int regnum,
+ struct frame_info *frame);
+
extern struct value *value_of_variable (struct symbol *var, struct block *b);
extern struct value *value_of_register (int regnum, struct frame_info *frame);
extern struct value *value_addr (struct value *arg1);
+extern struct value *value_ref (struct value *arg1);
+
extern struct value *value_assign (struct value *toval,
struct value *fromval);
+extern struct value *value_pos (struct value *arg1);
+
extern struct value *value_neg (struct value *arg1);
extern struct value *value_complement (struct value *arg1);
char *err);
extern struct value *value_aggregate_elt (struct type *curtype,
- char *name, enum noside noside);
+ char *name,
+ int want_address,
+ enum noside noside);
extern struct value *value_static_field (struct type *type, int fieldno);
extern struct value *value_full_object (struct value *, struct type *, int,
int, int);
+extern struct value *value_cast_pointers (struct type *, struct value *);
+
extern struct value *value_cast (struct type *type, struct value *arg2);
extern struct value *value_zero (struct type *type, enum lval_type lv);
extern struct value *value_in (struct value *element, struct value *set);
-extern int value_bit_index (struct type *type, const bfd_byte *addr,
+extern int value_bit_index (struct type *type, const gdb_byte *addr,
int index);
extern int using_struct_return (struct type *value_type, int gcc_p);
extern int record_latest_value (struct value *val);
-extern void modify_field (char *addr, LONGEST fieldval, int bitpos,
+extern void modify_field (gdb_byte *addr, LONGEST fieldval, int bitpos,
int bitsize);
extern void type_print (struct type *type, char *varstring,
struct ui_file *stream, int show);
-extern char *baseclass_addr (struct type *type, int index, char *valaddr,
- struct value **valuep, int *errp);
+extern gdb_byte *baseclass_addr (struct type *type, int index,
+ gdb_byte *valaddr,
+ struct value **valuep, int *errp);
extern void print_longest (struct ui_file *stream, int format,
int use_local, LONGEST val);
-extern void print_floating (const bfd_byte *valaddr, struct type *type,
+extern void print_floating (const gdb_byte *valaddr, struct type *type,
struct ui_file *stream);
extern int value_print (struct value *val, struct ui_file *stream, int format,
extern struct value *value_release_to_mark (struct value *mark);
-extern int val_print (struct type *type, const bfd_byte *valaddr,
+extern int val_print (struct type *type, const gdb_byte *valaddr,
int embedded_offset, CORE_ADDR address,
struct ui_file *stream, int format,
int deref_ref, int recurse,
extern char *internalvar_name (struct internalvar *var);
-extern void clear_value_history (void);
-
-extern void clear_internalvars (void);
+extern void preserve_values (struct objfile *);
/* From values.c */
struct type *);
extern void find_rt_vbase_offset (struct type *, struct type *,
- const bfd_byte *, int, int *, int *);
+ const gdb_byte *, int, int *, int *);
extern struct value *find_function_in_inferior (const char *);