New field la_varobj_ops in struct language_defn
This is a follow-up series to move language stuff out of varobj.c. This patch adds a new field la_varobj_ops in struct language_defn so that each language has varobj-related options. Not every language supports varobj, and the operations are identical to operations of c languages. 'struct language_defn' is the ideal place to save all language-related operations. After this patch, some cleanups can be done in patch 2/2, which removes language-related stuff completely from varobj.c. Regression tested on x86_64-linux. gdb: 2013-10-25 Yao Qi <yao@codesourcery.com> * language.h (struct lang_varobj_ops): Declare. (struct language_defn) <la_varobj_ops>: New field. * ada-lang.c: Include "varobj.h" (defn ada_language_defn): Initialize field 'la_varobj_ops' by ada_varobj_ops. * c-lang.c: Include "varobj.h" (c_language_defn): Initialize field 'la_varobj_ops' by c_varobj_ops. (cplus_language_defn): Initialize field 'la_varobj_ops' by cplus_varobj_ops. (asm_language_defn): Initialize field 'la_varobj_ops' by default_varobj_ops. (minimal_language_defn): Likewise. * d-lang.c (d_language_defn): Likewise. * f-lang.c (f_language_defn): Likewise. * go-lang.c (go_language_defn): Likewise. * m2-lang.c (m2_language_defn): Likewise. * objc-lang.c (objc_language_defn): Likewise. * opencl-lang.c (opencl_language_defn): Likewise. * p-lang.c (pascal_language_defn): Likewise. * language.c (unknown_language_defn): Likewise. (auto_language_defn): Likewise. (local_language_defn): Likewise. * jv-lang.c (java_language_defn): Initialize field 'la_varobj_ops' by java_varobj_ops. * varobj.c (varobj_create): Update. * varobj.h (default_varobj_ops): Define macro.
This commit is contained in:
parent
38095c27fb
commit
a53b64eaa0
15 changed files with 63 additions and 3 deletions
|
@ -1,3 +1,33 @@
|
||||||
|
2013-10-25 Yao Qi <yao@codesourcery.com>
|
||||||
|
|
||||||
|
* language.h (struct lang_varobj_ops): Declare.
|
||||||
|
(struct language_defn) <la_varobj_ops>: New field.
|
||||||
|
* ada-lang.c: Include "varobj.h"
|
||||||
|
(defn ada_language_defn): Initialize field 'la_varobj_ops' with
|
||||||
|
ada_varobj_ops.
|
||||||
|
* c-lang.c: Include "varobj.h"
|
||||||
|
(c_language_defn): Initialize field 'la_varobj_ops' with
|
||||||
|
c_varobj_ops.
|
||||||
|
(cplus_language_defn): Initialize field 'la_varobj_ops' with
|
||||||
|
cplus_varobj_ops.
|
||||||
|
(asm_language_defn): Initialize field 'la_varobj_ops' with
|
||||||
|
default_varobj_ops.
|
||||||
|
(minimal_language_defn): Likewise.
|
||||||
|
* d-lang.c (d_language_defn): Likewise.
|
||||||
|
* f-lang.c (f_language_defn): Likewise.
|
||||||
|
* go-lang.c (go_language_defn): Likewise.
|
||||||
|
* m2-lang.c (m2_language_defn): Likewise.
|
||||||
|
* objc-lang.c (objc_language_defn): Likewise.
|
||||||
|
* opencl-lang.c (opencl_language_defn): Likewise.
|
||||||
|
* p-lang.c (pascal_language_defn): Likewise.
|
||||||
|
* language.c (unknown_language_defn): Likewise.
|
||||||
|
(auto_language_defn): Likewise.
|
||||||
|
(local_language_defn): Likewise.
|
||||||
|
* jv-lang.c (java_language_defn): Initialize field
|
||||||
|
'la_varobj_ops' with java_varobj_ops.
|
||||||
|
* varobj.c (varobj_create): Update.
|
||||||
|
* varobj.h (default_varobj_ops): Define macro.
|
||||||
|
|
||||||
2013-10-25 Pedro Alves <palves@redhat.com>
|
2013-10-25 Pedro Alves <palves@redhat.com>
|
||||||
|
|
||||||
* cp-valprint.c (cp_print_value_fields): No longer handle a NULL
|
* cp-valprint.c (cp_print_value_fields): No longer handle a NULL
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
#include "expression.h"
|
#include "expression.h"
|
||||||
#include "parser-defs.h"
|
#include "parser-defs.h"
|
||||||
#include "language.h"
|
#include "language.h"
|
||||||
|
#include "varobj.h"
|
||||||
#include "c-lang.h"
|
#include "c-lang.h"
|
||||||
#include "inferior.h"
|
#include "inferior.h"
|
||||||
#include "symfile.h"
|
#include "symfile.h"
|
||||||
|
@ -12834,6 +12835,7 @@ const struct language_defn ada_language_defn = {
|
||||||
c_get_string,
|
c_get_string,
|
||||||
ada_get_symbol_name_cmp, /* la_get_symbol_name_cmp */
|
ada_get_symbol_name_cmp, /* la_get_symbol_name_cmp */
|
||||||
ada_iterate_over_symbols,
|
ada_iterate_over_symbols,
|
||||||
|
&ada_varobj_ops,
|
||||||
LANG_MAGIC
|
LANG_MAGIC
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
#include "expression.h"
|
#include "expression.h"
|
||||||
#include "parser-defs.h"
|
#include "parser-defs.h"
|
||||||
#include "language.h"
|
#include "language.h"
|
||||||
|
#include "varobj.h"
|
||||||
#include "c-lang.h"
|
#include "c-lang.h"
|
||||||
#include "valprint.h"
|
#include "valprint.h"
|
||||||
#include "macroscope.h"
|
#include "macroscope.h"
|
||||||
|
@ -846,6 +847,7 @@ const struct language_defn c_language_defn =
|
||||||
c_get_string,
|
c_get_string,
|
||||||
NULL, /* la_get_symbol_name_cmp */
|
NULL, /* la_get_symbol_name_cmp */
|
||||||
iterate_over_symbols,
|
iterate_over_symbols,
|
||||||
|
&c_varobj_ops,
|
||||||
LANG_MAGIC
|
LANG_MAGIC
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -969,6 +971,7 @@ const struct language_defn cplus_language_defn =
|
||||||
c_get_string,
|
c_get_string,
|
||||||
NULL, /* la_get_symbol_name_cmp */
|
NULL, /* la_get_symbol_name_cmp */
|
||||||
iterate_over_symbols,
|
iterate_over_symbols,
|
||||||
|
&cplus_varobj_ops,
|
||||||
LANG_MAGIC
|
LANG_MAGIC
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1010,6 +1013,7 @@ const struct language_defn asm_language_defn =
|
||||||
c_get_string,
|
c_get_string,
|
||||||
NULL, /* la_get_symbol_name_cmp */
|
NULL, /* la_get_symbol_name_cmp */
|
||||||
iterate_over_symbols,
|
iterate_over_symbols,
|
||||||
|
&default_varobj_ops,
|
||||||
LANG_MAGIC
|
LANG_MAGIC
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1056,6 +1060,7 @@ const struct language_defn minimal_language_defn =
|
||||||
c_get_string,
|
c_get_string,
|
||||||
NULL, /* la_get_symbol_name_cmp */
|
NULL, /* la_get_symbol_name_cmp */
|
||||||
iterate_over_symbols,
|
iterate_over_symbols,
|
||||||
|
&default_varobj_ops,
|
||||||
LANG_MAGIC
|
LANG_MAGIC
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#include "defs.h"
|
#include "defs.h"
|
||||||
#include "symtab.h"
|
#include "symtab.h"
|
||||||
#include "language.h"
|
#include "language.h"
|
||||||
|
#include "varobj.h"
|
||||||
#include "d-lang.h"
|
#include "d-lang.h"
|
||||||
#include "c-lang.h"
|
#include "c-lang.h"
|
||||||
#include "gdb_string.h"
|
#include "gdb_string.h"
|
||||||
|
@ -274,6 +275,7 @@ static const struct language_defn d_language_defn =
|
||||||
c_get_string,
|
c_get_string,
|
||||||
NULL, /* la_get_symbol_name_cmp */
|
NULL, /* la_get_symbol_name_cmp */
|
||||||
iterate_over_symbols,
|
iterate_over_symbols,
|
||||||
|
&default_varobj_ops,
|
||||||
LANG_MAGIC
|
LANG_MAGIC
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#include "expression.h"
|
#include "expression.h"
|
||||||
#include "parser-defs.h"
|
#include "parser-defs.h"
|
||||||
#include "language.h"
|
#include "language.h"
|
||||||
|
#include "varobj.h"
|
||||||
#include "f-lang.h"
|
#include "f-lang.h"
|
||||||
#include "valprint.h"
|
#include "valprint.h"
|
||||||
#include "value.h"
|
#include "value.h"
|
||||||
|
@ -273,6 +274,7 @@ const struct language_defn f_language_defn =
|
||||||
default_get_string,
|
default_get_string,
|
||||||
NULL, /* la_get_symbol_name_cmp */
|
NULL, /* la_get_symbol_name_cmp */
|
||||||
iterate_over_symbols,
|
iterate_over_symbols,
|
||||||
|
&default_varobj_ops,
|
||||||
LANG_MAGIC
|
LANG_MAGIC
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
#include "block.h"
|
#include "block.h"
|
||||||
#include "symtab.h"
|
#include "symtab.h"
|
||||||
#include "language.h"
|
#include "language.h"
|
||||||
|
#include "varobj.h"
|
||||||
#include "go-lang.h"
|
#include "go-lang.h"
|
||||||
#include "c-lang.h"
|
#include "c-lang.h"
|
||||||
#include "parser-defs.h"
|
#include "parser-defs.h"
|
||||||
|
@ -596,6 +597,7 @@ static const struct language_defn go_language_defn =
|
||||||
c_get_string,
|
c_get_string,
|
||||||
NULL,
|
NULL,
|
||||||
iterate_over_symbols,
|
iterate_over_symbols,
|
||||||
|
&default_varobj_ops,
|
||||||
LANG_MAGIC
|
LANG_MAGIC
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
#include "value.h"
|
#include "value.h"
|
||||||
#include "c-lang.h"
|
#include "c-lang.h"
|
||||||
#include "jv-lang.h"
|
#include "jv-lang.h"
|
||||||
|
#include "varobj.h"
|
||||||
#include "gdbcore.h"
|
#include "gdbcore.h"
|
||||||
#include "block.h"
|
#include "block.h"
|
||||||
#include "demangle.h"
|
#include "demangle.h"
|
||||||
|
@ -1196,6 +1197,7 @@ const struct language_defn java_language_defn =
|
||||||
default_get_string,
|
default_get_string,
|
||||||
NULL, /* la_get_symbol_name_cmp */
|
NULL, /* la_get_symbol_name_cmp */
|
||||||
iterate_over_symbols,
|
iterate_over_symbols,
|
||||||
|
&java_varobj_ops,
|
||||||
LANG_MAGIC
|
LANG_MAGIC
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
#include "gdbcmd.h"
|
#include "gdbcmd.h"
|
||||||
#include "expression.h"
|
#include "expression.h"
|
||||||
#include "language.h"
|
#include "language.h"
|
||||||
|
#include "varobj.h"
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
#include "parser-defs.h"
|
#include "parser-defs.h"
|
||||||
#include "jv-lang.h"
|
#include "jv-lang.h"
|
||||||
|
@ -826,6 +827,7 @@ const struct language_defn unknown_language_defn =
|
||||||
default_get_string,
|
default_get_string,
|
||||||
NULL, /* la_get_symbol_name_cmp */
|
NULL, /* la_get_symbol_name_cmp */
|
||||||
iterate_over_symbols,
|
iterate_over_symbols,
|
||||||
|
&default_varobj_ops,
|
||||||
LANG_MAGIC
|
LANG_MAGIC
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -869,6 +871,7 @@ const struct language_defn auto_language_defn =
|
||||||
default_get_string,
|
default_get_string,
|
||||||
NULL, /* la_get_symbol_name_cmp */
|
NULL, /* la_get_symbol_name_cmp */
|
||||||
iterate_over_symbols,
|
iterate_over_symbols,
|
||||||
|
&default_varobj_ops,
|
||||||
LANG_MAGIC
|
LANG_MAGIC
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -910,6 +913,7 @@ const struct language_defn local_language_defn =
|
||||||
default_get_string,
|
default_get_string,
|
||||||
NULL, /* la_get_symbol_name_cmp */
|
NULL, /* la_get_symbol_name_cmp */
|
||||||
iterate_over_symbols,
|
iterate_over_symbols,
|
||||||
|
&default_varobj_ops,
|
||||||
LANG_MAGIC
|
LANG_MAGIC
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -31,6 +31,7 @@ struct expression;
|
||||||
struct ui_file;
|
struct ui_file;
|
||||||
struct value_print_options;
|
struct value_print_options;
|
||||||
struct type_print_options;
|
struct type_print_options;
|
||||||
|
struct lang_varobj_ops;
|
||||||
|
|
||||||
#define MAX_FORTRAN_DIMS 7 /* Maximum number of F77 array dims. */
|
#define MAX_FORTRAN_DIMS 7 /* Maximum number of F77 array dims. */
|
||||||
|
|
||||||
|
@ -344,6 +345,9 @@ struct language_defn
|
||||||
symbol_found_callback_ftype *callback,
|
symbol_found_callback_ftype *callback,
|
||||||
void *data);
|
void *data);
|
||||||
|
|
||||||
|
/* Various operations on varobj. */
|
||||||
|
const struct lang_varobj_ops *la_varobj_ops;
|
||||||
|
|
||||||
/* Add fields above this point, so the magic number is always last. */
|
/* Add fields above this point, so the magic number is always last. */
|
||||||
/* Magic number for compat checking. */
|
/* Magic number for compat checking. */
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
#include "expression.h"
|
#include "expression.h"
|
||||||
#include "parser-defs.h"
|
#include "parser-defs.h"
|
||||||
#include "language.h"
|
#include "language.h"
|
||||||
|
#include "varobj.h"
|
||||||
#include "m2-lang.h"
|
#include "m2-lang.h"
|
||||||
#include "c-lang.h"
|
#include "c-lang.h"
|
||||||
#include "valprint.h"
|
#include "valprint.h"
|
||||||
|
@ -391,6 +392,7 @@ const struct language_defn m2_language_defn =
|
||||||
default_get_string,
|
default_get_string,
|
||||||
NULL, /* la_get_symbol_name_cmp */
|
NULL, /* la_get_symbol_name_cmp */
|
||||||
iterate_over_symbols,
|
iterate_over_symbols,
|
||||||
|
&default_varobj_ops,
|
||||||
LANG_MAGIC
|
LANG_MAGIC
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#include "expression.h"
|
#include "expression.h"
|
||||||
#include "parser-defs.h"
|
#include "parser-defs.h"
|
||||||
#include "language.h"
|
#include "language.h"
|
||||||
|
#include "varobj.h"
|
||||||
#include "c-lang.h"
|
#include "c-lang.h"
|
||||||
#include "objc-lang.h"
|
#include "objc-lang.h"
|
||||||
#include "exceptions.h"
|
#include "exceptions.h"
|
||||||
|
@ -389,6 +390,7 @@ const struct language_defn objc_language_defn = {
|
||||||
default_get_string,
|
default_get_string,
|
||||||
NULL, /* la_get_symbol_name_cmp */
|
NULL, /* la_get_symbol_name_cmp */
|
||||||
iterate_over_symbols,
|
iterate_over_symbols,
|
||||||
|
&default_varobj_ops,
|
||||||
LANG_MAGIC
|
LANG_MAGIC
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#include "parser-defs.h"
|
#include "parser-defs.h"
|
||||||
#include "symtab.h"
|
#include "symtab.h"
|
||||||
#include "language.h"
|
#include "language.h"
|
||||||
|
#include "varobj.h"
|
||||||
#include "c-lang.h"
|
#include "c-lang.h"
|
||||||
#include "gdb_assert.h"
|
#include "gdb_assert.h"
|
||||||
|
|
||||||
|
@ -1137,6 +1138,7 @@ const struct language_defn opencl_language_defn =
|
||||||
c_get_string,
|
c_get_string,
|
||||||
NULL, /* la_get_symbol_name_cmp */
|
NULL, /* la_get_symbol_name_cmp */
|
||||||
iterate_over_symbols,
|
iterate_over_symbols,
|
||||||
|
&default_varobj_ops,
|
||||||
LANG_MAGIC
|
LANG_MAGIC
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#include "expression.h"
|
#include "expression.h"
|
||||||
#include "parser-defs.h"
|
#include "parser-defs.h"
|
||||||
#include "language.h"
|
#include "language.h"
|
||||||
|
#include "varobj.h"
|
||||||
#include "p-lang.h"
|
#include "p-lang.h"
|
||||||
#include "valprint.h"
|
#include "valprint.h"
|
||||||
#include "value.h"
|
#include "value.h"
|
||||||
|
@ -449,6 +450,7 @@ const struct language_defn pascal_language_defn =
|
||||||
default_get_string,
|
default_get_string,
|
||||||
NULL, /* la_get_symbol_name_cmp */
|
NULL, /* la_get_symbol_name_cmp */
|
||||||
iterate_over_symbols,
|
iterate_over_symbols,
|
||||||
|
&default_varobj_ops,
|
||||||
LANG_MAGIC
|
LANG_MAGIC
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -318,7 +318,6 @@ varobj_create (char *objname,
|
||||||
struct frame_id old_id = null_frame_id;
|
struct frame_id old_id = null_frame_id;
|
||||||
struct block *block;
|
struct block *block;
|
||||||
const char *p;
|
const char *p;
|
||||||
enum varobj_languages lang;
|
|
||||||
struct value *value = NULL;
|
struct value *value = NULL;
|
||||||
volatile struct gdb_exception except;
|
volatile struct gdb_exception except;
|
||||||
CORE_ADDR pc;
|
CORE_ADDR pc;
|
||||||
|
@ -433,8 +432,7 @@ varobj_create (char *objname,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set language info */
|
/* Set language info */
|
||||||
lang = variable_language (var);
|
var->root->lang = var->root->exp->language_defn->la_varobj_ops;
|
||||||
var->root->lang = languages[lang];
|
|
||||||
|
|
||||||
install_new_value (var, value, 1 /* Initial assignment */);
|
install_new_value (var, value, 1 /* Initial assignment */);
|
||||||
|
|
||||||
|
|
|
@ -230,6 +230,7 @@ const struct lang_varobj_ops cplus_varobj_ops;
|
||||||
const struct lang_varobj_ops java_varobj_ops;
|
const struct lang_varobj_ops java_varobj_ops;
|
||||||
const struct lang_varobj_ops ada_varobj_ops;
|
const struct lang_varobj_ops ada_varobj_ops;
|
||||||
|
|
||||||
|
#define default_varobj_ops c_varobj_ops
|
||||||
/* API functions */
|
/* API functions */
|
||||||
|
|
||||||
extern struct varobj *varobj_create (char *objname,
|
extern struct varobj *varobj_create (char *objname,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue