diff options
-rw-r--r-- | gdb/ChangeLog | 14 | ||||
-rw-r--r-- | gdb/doc/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/doc/gdb.texinfo | 3 | ||||
-rw-r--r-- | gdb/mi/mi-cmd-var.c | 5 | ||||
-rw-r--r-- | gdb/varobj.c | 43 | ||||
-rw-r--r-- | gdb/varobj.h | 12 |
6 files changed, 27 insertions, 55 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 63879fb..88ea859 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,19 @@ 2013-11-07 Yao Qi <yao@codesourcery.com> + * mi/mi-cmd-var.c: Include "language.h". + (mi_cmd_var_info_expression): Get language name from + language_defn. + * varobj.c (varobj_language_string): Remove. + (variable_language): Remove declaration. + (languages): Remove. + (varobj_get_language): Change the type of return value. + (variable_language): Remove. + * varobj.h (enum varobj_languages): Remove. + (varobj_language_string): Remove declaration. + (varobj_get_language): Update declaration. + +2013-11-07 Yao Qi <yao@codesourcery.com> + * language.h (struct language_defn) <la_natural_name>: New field. * ada-lang.c (ada_language_defn): Initialize field diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index 9803346..12ceb01 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,8 @@ +2013-11-07 Yao Qi <yao@codesourcery.com> + + * gdb.texinfo (GDB/MI Variable Objects): Update doc about the + output of "-var-info-expression". + 2013-11-06 Pedro Alves <palves@redhat.com> * gdb.texinfo (Starting) <set/show startup-with-shell>: Mention diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 39498d7..80ddaf9 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -32402,7 +32402,8 @@ For example, if @code{a} is an array, and variable object @end smallexample @noindent -Here, the values of @code{lang} can be @code{@{"C" | "C++" | "Java"@}}. +Here, the value of @code{lang} is the language name, which can be +found in @ref{Supported Languages}. Note that the output of the @code{-var-list-children} command also includes those expressions, so the @code{-var-info-expression} command diff --git a/gdb/mi/mi-cmd-var.c b/gdb/mi/mi-cmd-var.c index 57a2f6b..0a2ef5c 100644 --- a/gdb/mi/mi-cmd-var.c +++ b/gdb/mi/mi-cmd-var.c @@ -24,6 +24,7 @@ #include "ui-out.h" #include "mi-out.h" #include "varobj.h" +#include "language.h" #include "value.h" #include <ctype.h> #include "gdb_string.h" @@ -479,7 +480,7 @@ void mi_cmd_var_info_expression (char *command, char **argv, int argc) { struct ui_out *uiout = current_uiout; - enum varobj_languages lang; + const struct language_defn *lang; struct varobj *var; if (argc != 1) @@ -490,7 +491,7 @@ mi_cmd_var_info_expression (char *command, char **argv, int argc) lang = varobj_get_language (var); - ui_out_field_string (uiout, "lang", varobj_language_string[(int) lang]); + ui_out_field_string (uiout, "lang", lang->la_natural_name); ui_out_field_string (uiout, "exp", varobj_get_expression (var)); } diff --git a/gdb/varobj.c b/gdb/varobj.c index b5cf17d..f15c9de 100644 --- a/gdb/varobj.c +++ b/gdb/varobj.c @@ -55,9 +55,6 @@ show_varobjdebug (struct ui_file *file, int from_tty, char *varobj_format_string[] = { "natural", "binary", "decimal", "hexadecimal", "octal" }; -/* String representations of gdb's known languages. */ -char *varobj_language_string[] = { "C", "C++", "Java" }; - /* True if we want to allow Python-based pretty-printing. */ static int pretty_printing = 0; @@ -199,8 +196,6 @@ static int install_new_value (struct varobj *var, struct value *value, /* Language-specific routines. */ -static enum varobj_languages variable_language (struct varobj *var); - static int number_of_children (struct varobj *); static char *name_of_variable (struct varobj *); @@ -224,14 +219,6 @@ static struct varobj *varobj_add_child (struct varobj *var, #endif /* HAVE_PYTHON */ -/* Array of known source language routines. */ -static const struct lang_varobj_ops *languages[vlang_end] = { - &c_varobj_ops, - &cplus_varobj_ops, - &java_varobj_ops, - &ada_varobj_ops, -}; - /* Private data */ /* Mappings of varobj_display_formats enums to gdb's format codes. */ @@ -1126,10 +1113,10 @@ varobj_get_path_expr (struct varobj *var) } } -enum varobj_languages +const struct language_defn * varobj_get_language (struct varobj *var) { - return variable_language (var); + return var->root->exp->language_defn; } int @@ -2332,32 +2319,6 @@ cppop (struct cpstack **pstack) /* Common entry points */ -/* Get the language of variable VAR. */ -static enum varobj_languages -variable_language (struct varobj *var) -{ - enum varobj_languages lang; - - switch (var->root->exp->language_defn->la_language) - { - default: - case language_c: - lang = vlang_c; - break; - case language_cplus: - lang = vlang_cplus; - break; - case language_java: - lang = vlang_java; - break; - case language_ada: - lang = vlang_ada; - break; - } - - return lang; -} - /* Return the number of children for a given variable. The result of this function is defined by the language implementation. The number of children returned by this function diff --git a/gdb/varobj.h b/gdb/varobj.h index 2379c3d..978d9b9 100644 --- a/gdb/varobj.h +++ b/gdb/varobj.h @@ -52,16 +52,6 @@ enum varobj_scope_status /* String representations of gdb's format codes (defined in varobj.c). */ extern char *varobj_format_string[]; -/* Languages supported by this variable objects system. This enum is used - to index arrays so we make its first enum explicitly zero. */ -enum varobj_languages - { - vlang_c = 0, vlang_cplus, vlang_java, vlang_ada, vlang_end - }; - -/* String representations of gdb's known languages (defined in varobj.c). */ -extern char *varobj_language_string[]; - /* Struct thar describes a variable object instance. */ struct varobj; @@ -286,7 +276,7 @@ extern struct type *varobj_get_gdb_type (struct varobj *var); extern char *varobj_get_path_expr (struct varobj *var); -extern enum varobj_languages varobj_get_language (struct varobj *var); +extern const struct language_defn *varobj_get_language (struct varobj *var); extern int varobj_get_attributes (struct varobj *var); |