GDB (xrefs)
Classes | Macros | Functions | Variables
/tmp/gdb-7.10/gdb/varobj.c File Reference
#include "defs.h"
#include "value.h"
#include "expression.h"
#include "frame.h"
#include "language.h"
#include "gdbcmd.h"
#include "block.h"
#include "valprint.h"
#include "gdb_regex.h"
#include "varobj.h"
#include "vec.h"
#include "gdbthread.h"
#include "inferior.h"
#include "varobj-iter.h"
#include "python/python.h"
#include "python/python-internal.h"

Go to the source code of this file.

Classes

struct  varobj_root
 
struct  varobj_dynamic
 
struct  cpstack
 
struct  vlist
 

Macros

#define VAROBJ_TABLE_SIZE   227
 

Functions

static void show_varobjdebug (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
 
void varobj_enable_pretty_printing (void)
 
static int delete_variable (struct cpstack **, struct varobj *, int)
 
static void delete_variable_1 (struct cpstack **, int *, struct varobj *, int, int)
 
static int install_variable (struct varobj *)
 
static void uninstall_variable (struct varobj *)
 
static struct varobjcreate_child (struct varobj *, int, char *)
 
static struct varobjcreate_child_with_value (struct varobj *parent, int index, struct varobj_item *item)
 
static struct varobjnew_variable (void)
 
static struct varobjnew_root_variable (void)
 
static void free_variable (struct varobj *var)
 
static struct cleanupmake_cleanup_free_variable (struct varobj *var)
 
static enum varobj_display_formats variable_default_display (struct varobj *)
 
static void cppush (struct cpstack **pstack, char *name)
 
static char * cppop (struct cpstack **pstack)
 
static int update_type_if_necessary (struct varobj *var, struct value *new_value)
 
static int install_new_value (struct varobj *var, struct value *value, int initial)
 
static int number_of_children (const struct varobj *)
 
static char * name_of_variable (const struct varobj *)
 
static char * name_of_child (struct varobj *, int)
 
static struct valuevalue_of_root (struct varobj **var_handle, int *)
 
static struct valuevalue_of_child (const struct varobj *parent, int index)
 
static char * my_value_of_variable (struct varobj *var, enum varobj_display_formats format)
 
static int is_root_p (const struct varobj *var)
 
static struct varobjvarobj_add_child (struct varobj *var, struct varobj_item *item)
 
struct cleanupvarobj_ensure_python_env (const struct varobj *var)
 
static struct frame_infofind_frame_addr_in_frame_chain (CORE_ADDR frame_addr)
 
struct varobjvarobj_create (char *objname, char *expression, CORE_ADDR frame, enum varobj_type type)
 
char * varobj_gen_name (void)
 
struct varobjvarobj_get_handle (char *objname)
 
char * varobj_get_objname (const struct varobj *var)
 
char * varobj_get_expression (const struct varobj *var)
 
int varobj_delete (struct varobj *var, char ***dellist, int only_children)
 
static PyObject * instantiate_pretty_printer (PyObject *constructor, struct value *value)
 
enum varobj_display_formats varobj_set_display_format (struct varobj *var, enum varobj_display_formats format)
 
enum varobj_display_formats varobj_get_display_format (const struct varobj *var)
 
char * varobj_get_display_hint (const struct varobj *var)
 
int varobj_has_more (const struct varobj *var, int to)
 
int varobj_get_thread_id (const struct varobj *var)
 
void varobj_set_frozen (struct varobj *var, int frozen)
 
int varobj_get_frozen (const struct varobj *var)
 
void varobj_restrict_range (VEC(varobj_p)*children, int *from, int *to)
 
static void install_dynamic_child (struct varobj *var, VEC(varobj_p)**changed, VEC(varobj_p)**type_changed, VEC(varobj_p)**newobj, VEC(varobj_p)**unchanged, int *cchanged, int index, struct varobj_item *item)
 
static int dynamic_varobj_has_child_method (const struct varobj *var)
 
static struct varobj_itervarobj_get_iterator (struct varobj *var)
 
static void varobj_clear_saved_item (struct varobj_dynamic *var)
 
static int update_dynamic_varobj_children (struct varobj *var, VEC(varobj_p)**changed, VEC(varobj_p)**type_changed, VEC(varobj_p)**newobj, VEC(varobj_p)**unchanged, int *cchanged, int update_children, int from, int to)
 
int varobj_get_num_children (struct varobj *var)
 
 VEC (varobj_p)
 
char * varobj_get_type (struct varobj *var)
 
struct typevarobj_get_gdb_type (const struct varobj *var)
 
static int is_path_expr_parent (const struct varobj *var)
 
int varobj_default_is_path_expr_parent (const struct varobj *var)
 
const struct varobjvarobj_get_path_expr_parent (const struct varobj *var)
 
char * varobj_get_path_expr (const struct varobj *var)
 
const struct language_defnvarobj_get_language (const struct varobj *var)
 
int varobj_get_attributes (const struct varobj *var)
 
int varobj_is_dynamic_p (const struct varobj *var)
 
char * varobj_get_formatted_value (struct varobj *var, enum varobj_display_formats format)
 
char * varobj_get_value (struct varobj *var)
 
int varobj_set_value (struct varobj *var, char *expression)
 
static void install_visualizer (struct varobj_dynamic *var, PyObject *constructor, PyObject *visualizer)
 
static void install_default_visualizer (struct varobj *var)
 
static void construct_visualizer (struct varobj *var, PyObject *constructor)
 
static void install_new_value_visualizer (struct varobj *var)
 
void varobj_get_child_range (const struct varobj *var, int *from, int *to)
 
void varobj_set_child_range (struct varobj *var, int from, int to)
 
void varobj_set_visualizer (struct varobj *var, const char *visualizer)
 
static int varobj_value_has_mutated (const struct varobj *var, struct value *new_value, struct type *new_type)
 
 VEC (varobj_update_result)
 
static void do_free_variable_cleanup (void *var)
 
struct typevarobj_get_value_type (const struct varobj *var)
 
static int check_scope (const struct varobj *var)
 
static struct valuevalue_of_root_1 (struct varobj **var_handle)
 
void varobj_formatted_print_options (struct value_print_options *opts, enum varobj_display_formats format)
 
char * varobj_value_get_print_value (struct value *value, enum varobj_display_formats format, const struct varobj *var)
 
int varobj_editable_p (const struct varobj *var)
 
int varobj_value_is_changeable_p (const struct varobj *var)
 
int varobj_floating_p (const struct varobj *var)
 
int varobj_default_value_is_changeable_p (const struct varobj *var)
 
void all_root_varobjs (void(*func)(struct varobj *var, void *data), void *data)
 
static void varobj_invalidate_iter (struct varobj *var, void *unused)
 
void varobj_invalidate (void)
 
void _initialize_varobj (void)
 

Variables

unsigned int varobjdebug = 0
 
char * varobj_format_string []
 
static int pretty_printing = 0
 
static int format_code [] = { 0, 't', 'd', 'x', 'o' }
 
static struct varobj_rootrootlist
 
static struct vlist ** varobj_table
 

Macro Definition Documentation

#define VAROBJ_TABLE_SIZE   227

Function Documentation

void _initialize_varobj ( void  )
void all_root_varobjs ( void(*)(struct varobj *var, void *data)  func,
void *  data 
)

Definition at line 2735 of file varobj.c.

References varobj_root::next, and varobj_root::rootvar.

Referenced by mi_cmd_var_update(), and varobj_invalidate().

static int check_scope ( const struct varobj var)
static
static void construct_visualizer ( struct varobj var,
PyObject *  constructor 
)
static
static char * cppop ( struct cpstack **  pstack)
static

Definition at line 2262 of file varobj.c.

References cpstack::name, cpstack::next, and xfree().

Referenced by varobj_delete().

static void cppush ( struct cpstack **  pstack,
char *  name 
)
static

Definition at line 2250 of file varobj.c.

References name, cpstack::name, cpstack::next, and xmalloc().

Referenced by delete_variable_1(), and varobj_delete().

static struct varobj * create_child ( struct varobj parent,
int  index,
char *  name 
)
static

Definition at line 2057 of file varobj.c.

References create_child_with_value(), varobj_item::name, name, varobj_item::value, and value_of_child().

Referenced by VEC().

static struct varobj * create_child_with_value ( struct varobj parent,
int  index,
struct varobj_item item 
)
static
static int delete_variable ( struct cpstack **  resultp,
struct varobj var,
int  only_children_p 
)
static

Definition at line 1870 of file varobj.c.

References delete_variable_1().

Referenced by varobj_delete().

static void delete_variable_1 ( struct cpstack **  resultp,
int delcountp,
struct varobj var,
int  only_children_p,
int  remove_from_parent_p 
)
static
static void do_free_variable_cleanup ( void *  var)
static

Definition at line 2198 of file varobj.c.

References free_variable().

Referenced by make_cleanup_free_variable().

static int dynamic_varobj_has_child_method ( const struct varobj var)
static
static struct frame_info* find_frame_addr_in_frame_chain ( CORE_ADDR  frame_addr)
static
static void free_variable ( struct varobj var)
static
static void install_default_visualizer ( struct varobj var)
static
static void install_dynamic_child ( struct varobj var,
VEC(varobj_p)**  changed,
VEC(varobj_p)**  type_changed,
VEC(varobj_p)**  newobj,
VEC(varobj_p)**  unchanged,
int cchanged,
int  index,
struct varobj_item item 
)
static
static int install_new_value ( struct varobj var,
struct value value,
int  initial 
)
static
static void install_new_value_visualizer ( struct varobj var)
static
static int install_variable ( struct varobj var)
static
static void install_visualizer ( struct varobj_dynamic var,
PyObject *  constructor,
PyObject *  visualizer 
)
static
static PyObject* instantiate_pretty_printer ( PyObject *  constructor,
struct value value 
)
static

Definition at line 557 of file varobj.c.

References Py_DECREF, and value_to_value_object().

Referenced by construct_visualizer().

static int is_path_expr_parent ( const struct varobj var)
static
static int is_root_p ( const struct varobj var)
static
static struct cleanup * make_cleanup_free_variable ( struct varobj var)
static

Definition at line 2204 of file varobj.c.

References do_free_variable_cleanup(), and make_cleanup().

Referenced by varobj_create().

static char * my_value_of_variable ( struct varobj var,
enum varobj_display_formats  format 
)
static
static char * name_of_child ( struct varobj var,
int  index 
)
static

Definition at line 2306 of file varobj.c.

References varobj_root::lang_ops, lang_varobj_ops::name_of_child, and varobj::root.

Referenced by VEC().

static char * name_of_variable ( const struct varobj var)
static

Definition at line 2298 of file varobj.c.

References varobj_root::lang_ops, lang_varobj_ops::name_of_variable, and varobj::root.

Referenced by varobj_get_expression().

static struct varobj * new_root_variable ( void  )
static
static struct varobj * new_variable ( void  )
static
static int number_of_children ( const struct varobj var)
static

Definition at line 2290 of file varobj.c.

References varobj_root::lang_ops, lang_varobj_ops::number_of_children, and varobj::root.

Referenced by varobj_get_num_children(), and VEC().

static void show_varobjdebug ( struct ui_file file,
int  from_tty,
struct cmd_list_element c,
const char *  value 
)
static

Definition at line 45 of file varobj.c.

References _, and fprintf_filtered().

Referenced by _initialize_varobj().

static void uninstall_variable ( struct varobj var)
static
static int update_dynamic_varobj_children ( struct varobj var,
VEC(varobj_p)**  changed,
VEC(varobj_p)**  type_changed,
VEC(varobj_p)**  newobj,
VEC(varobj_p)**  unchanged,
int cchanged,
int  update_children,
int  from,
int  to 
)
static
static int update_type_if_necessary ( struct varobj var,
struct value new_value 
)
static
static struct value * value_of_child ( const struct varobj parent,
int  index 
)
static

Definition at line 2494 of file varobj.c.

References varobj_root::lang_ops, varobj::root, and lang_varobj_ops::value_of_child.

Referenced by create_child(), and VEC().

static struct value * value_of_root ( struct varobj **  var_handle,
int type_changed 
)
static
static struct value* value_of_root_1 ( struct varobj **  var_handle)
static
static enum varobj_display_formats variable_default_display ( struct varobj var)
static

Definition at line 2243 of file varobj.c.

References FORMAT_NATURAL.

Referenced by varobj_create(), and varobj_set_display_format().

static struct varobj * varobj_add_child ( struct varobj var,
struct varobj_item item 
)
static

Definition at line 967 of file varobj.c.

References create_child_with_value(), VEC_length, and VEC_safe_push.

Referenced by install_dynamic_child().

static void varobj_clear_saved_item ( struct varobj_dynamic var)
static
struct varobj* varobj_create ( char *  objname,
char *  expression,
CORE_ADDR  frame,
enum varobj_type  type 
)
int varobj_default_is_path_expr_parent ( const struct varobj var)

Definition at line 1016 of file varobj.c.

int varobj_default_value_is_changeable_p ( const struct varobj var)
int varobj_delete ( struct varobj var,
char ***  dellist,
int  only_children 
)
int varobj_editable_p ( const struct varobj var)
void varobj_enable_pretty_printing ( void  )

Definition at line 59 of file varobj.c.

References pretty_printing.

Referenced by mi_cmd_enable_pretty_printing().

struct cleanup* varobj_ensure_python_env ( const struct varobj var)
int varobj_floating_p ( const struct varobj var)

Definition at line 2697 of file varobj.c.

References varobj_root::floating, and varobj::root.

Referenced by mi_cmd_var_update_iter().

void varobj_formatted_print_options ( struct value_print_options opts,
enum varobj_display_formats  format 
)
char* varobj_gen_name ( void  )

Definition at line 450 of file varobj.c.

References xstrprintf().

Referenced by mi_cmd_var_create().

int varobj_get_attributes ( const struct varobj var)

Definition at line 1060 of file varobj.c.

References varobj_editable_p().

Referenced by mi_cmd_var_show_attributes().

void varobj_get_child_range ( const struct varobj var,
int from,
int to 
)

Definition at line 1526 of file varobj.c.

References varobj::from, and varobj::to.

Referenced by varobj_update_one().

enum varobj_display_formats varobj_get_display_format ( const struct varobj var)

Definition at line 605 of file varobj.c.

References varobj::format.

Referenced by mi_cmd_var_show_format().

char* varobj_get_display_hint ( const struct varobj var)
char* varobj_get_expression ( const struct varobj var)

Definition at line 500 of file varobj.c.

References name_of_variable().

Referenced by mi_cmd_var_info_expression(), and print_varobj().

char* varobj_get_formatted_value ( struct varobj var,
enum varobj_display_formats  format 
)

Definition at line 1080 of file varobj.c.

References my_value_of_variable().

Referenced by mi_cmd_var_evaluate_expression().

int varobj_get_frozen ( const struct varobj var)

Definition at line 670 of file varobj.c.

References varobj::frozen.

Referenced by print_varobj().

struct type* varobj_get_gdb_type ( const struct varobj var)

Definition at line 996 of file varobj.c.

References varobj::type.

Referenced by c_is_path_expr_parent(), and mi_print_value_p().

struct varobj* varobj_get_handle ( char *  objname)
static struct varobj_iter* varobj_get_iterator ( struct varobj var)
static
const struct language_defn* varobj_get_language ( const struct varobj var)

Definition at line 1054 of file varobj.c.

References varobj_root::exp, expression::language_defn, and varobj::root.

Referenced by mi_cmd_var_info_expression().

int varobj_get_num_children ( struct varobj var)
char* varobj_get_objname ( const struct varobj var)

Definition at line 491 of file varobj.c.

References varobj::obj_name.

Referenced by print_varobj(), and varobj_update_one().

char* varobj_get_path_expr ( const struct varobj var)
const struct varobj* varobj_get_path_expr_parent ( const struct varobj var)

Definition at line 1024 of file varobj.c.

References is_path_expr_parent(), is_root_p(), and varobj::parent.

Referenced by c_describe_child(), and cplus_describe_child().

int varobj_get_thread_id ( const struct varobj var)

Definition at line 648 of file varobj.c.

References varobj::root, varobj_root::thread_id, and varobj_root::valid_block.

Referenced by mi_cmd_var_update_iter(), and print_varobj().

char* varobj_get_type ( struct varobj var)
char* varobj_get_value ( struct varobj var)
struct type* varobj_get_value_type ( const struct varobj var)
int varobj_has_more ( const struct varobj var,
int  to 
)
void varobj_invalidate ( void  )

Definition at line 2786 of file varobj.c.

References all_root_varobjs(), and varobj_invalidate_iter().

Referenced by clear_symtab_users().

static void varobj_invalidate_iter ( struct varobj var,
void *  unused 
)
static
int varobj_is_dynamic_p ( const struct varobj var)
void varobj_restrict_range ( VEC(varobj_p)*  children,
int from,
int to 
)

Definition at line 681 of file varobj.c.

References to, and VEC_length.

Referenced by ada_value_has_mutated(), and VEC().

void varobj_set_child_range ( struct varobj var,
int  from,
int  to 
)

Definition at line 1536 of file varobj.c.

References varobj::from, from, varobj::to, and to.

Referenced by mi_cmd_var_set_update_range().

enum varobj_display_formats varobj_set_display_format ( struct varobj var,
enum varobj_display_formats  format 
)
void varobj_set_frozen ( struct varobj var,
int  frozen 
)

Definition at line 657 of file varobj.c.

References varobj::frozen.

Referenced by mi_cmd_var_set_frozen().

int varobj_set_value ( struct varobj var,
char *  expression 
)
void varobj_set_visualizer ( struct varobj var,
const char *  visualizer 
)
char* varobj_value_get_print_value ( struct value value,
enum varobj_display_formats  format,
const struct varobj var 
)
static int varobj_value_has_mutated ( const struct varobj var,
struct value new_value,
struct type new_type 
)
static
int varobj_value_is_changeable_p ( const struct varobj var)
VEC ( varobj_p  )

Variable Documentation

int format_code[] = { 0, 't', 'd', 'x', 'o' }
static

Definition at line 217 of file varobj.c.

Referenced by varobj_formatted_print_options().

int pretty_printing = 0
static

Definition at line 56 of file varobj.c.

Referenced by install_default_visualizer(), and varobj_enable_pretty_printing().

struct varobj_root* rootlist
static

Definition at line 220 of file varobj.c.

Referenced by install_variable(), and uninstall_variable().

char* varobj_format_string[]
Initial value:
=
{ "natural", "binary", "decimal", "hexadecimal", "octal" }

Definition at line 52 of file varobj.c.

Referenced by mi_cmd_var_set_format(), and mi_cmd_var_show_format().

struct vlist** varobj_table
static

Definition at line 227 of file varobj.c.

unsigned int varobjdebug = 0

Definition at line 43 of file varobj.c.

Referenced by _initialize_varobj(), mi_cmd_var_create(), and uninstall_variable().