From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27273 invoked by alias); 29 Oct 2013 08:33:24 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 27256 invoked by uid 89); 29 Oct 2013 08:33:22 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=1.3 required=5.0 tests=AWL,BAYES_00,GARBLED_BODY autolearn=no version=3.3.2 X-HELO: relay1.mentorg.com Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 29 Oct 2013 08:33:21 +0000 Received: from svr-orw-exc-10.mgc.mentorg.com ([147.34.98.58]) by relay1.mentorg.com with esmtp id 1Vb4jl-000780-8k from Yao_Qi@mentor.com ; Tue, 29 Oct 2013 01:33:17 -0700 Received: from SVR-ORW-FEM-05.mgc.mentorg.com ([147.34.97.43]) by SVR-ORW-EXC-10.mgc.mentorg.com with Microsoft SMTPSVC(6.0.3790.4675); Tue, 29 Oct 2013 01:33:17 -0700 Received: from qiyao.dyndns.org (147.34.91.1) by svr-orw-fem-05.mgc.mentorg.com (147.34.97.43) with Microsoft SMTP Server id 14.2.247.3; Tue, 29 Oct 2013 01:33:16 -0700 Message-ID: <526F726B.5070201@codesourcery.com> Date: Tue, 29 Oct 2013 08:33:00 -0000 From: Yao Qi User-Agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/20130110 Thunderbird/17.0.2 MIME-Version: 1.0 To: Tom Tromey CC: Subject: Re: [PATCH 3/3] Remove varobj_language_string, languages and varobj_languages References: <20131025041525.GC4769@adacore.com> <1382964489-24307-1-git-send-email-yao@codesourcery.com> <1382964489-24307-3-git-send-email-yao@codesourcery.com> <87txg1b54j.fsf@fleche.redhat.com> In-Reply-To: <87txg1b54j.fsf@fleche.redhat.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit X-IsSubscribed: yes X-SW-Source: 2013-10/txt/msg00889.txt.bz2 On 10/29/2013 02:51 AM, Tom Tromey wrote: > First, it can change the language reported by varobj commands. > Does this matter? > This patch affects varobj-unsupported languages. Languages supported varobj (C, C++, Java, Ada) are not affected. If we use varobj commands on a varobj-unsupported language, such as Go, without this patch, (gdb) interpreter-exec mi "-var-create m * main.main" ^done,name="m",numchild="0",value="{void (void)} 0x8049284 ",type="void (void)",has_more="0" (gdb) interpreter-exec mi "-var-info-expression m" ^done,lang="C",exp="main.main" ^^^ with this patch, (gdb) interpreter-exec mi "-var-create m * main.main" ^done,name="m",numchild="0",value="{void (void)} 0x8049284 ",type="void (void)",has_more="0" (gdb) interpreter-exec mi "-var-info-expression m" ^done,lang="Go",exp="main.main" ^^^^ This output looks better. > Second, the MI docs have a list of languages that can be reported: > > Here, the values of @code{lang} can be @code{@{"C" | "C++" | "Java"@}}. > > I think this needs to be updated. It is updated. Needs a doc review. -- Yao (齐尧) gdb: 2013-10-29 Yao Qi * 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. gdb/doc: 2013-10-29 Yao Qi * gdb.texinfo (GDB/MI Variable Objects): Update doc about the output of "-var-info-expression". --- gdb/doc/gdb.texinfo | 3 ++- gdb/mi/mi-cmd-var.c | 5 +++-- gdb/varobj.c | 43 ++----------------------------------------- gdb/varobj.h | 12 +----------- 4 files changed, 8 insertions(+), 55 deletions(-) diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 32516ae..75a6641 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -32378,7 +32378,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 values of @code{lang} is the language name, which can be +found in @ref{Supported Languages,,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 #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); -- 1.7.7.6