From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18612 invoked by alias); 25 Oct 2013 13:16:29 -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 18598 invoked by uid 89); 25 Oct 2013 13:16:28 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=1.2 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; Fri, 25 Oct 2013 13:16:27 +0000 Received: from svr-orw-fem-01.mgc.mentorg.com ([147.34.98.93]) by relay1.mentorg.com with esmtp id 1VZhFX-0001GK-4o from Yao_Qi@mentor.com ; Fri, 25 Oct 2013 06:16:23 -0700 Received: from SVR-ORW-FEM-05.mgc.mentorg.com ([147.34.97.43]) by svr-orw-fem-01.mgc.mentorg.com over TLS secured channel with Microsoft SMTPSVC(6.0.3790.4675); Fri, 25 Oct 2013 06:16:22 -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; Fri, 25 Oct 2013 06:16:21 -0700 Message-ID: <526A6ED0.4060506@codesourcery.com> Date: Fri, 25 Oct 2013 13:16: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: Joel Brobecker CC: Subject: Re: [PATCH 1/2] New field la_varobj_ops in struct language_defn References: <1382057576-19148-1-git-send-email-yao@codesourcery.com> <20131025033415.GB4769@adacore.com> In-Reply-To: <20131025033415.GB4769@adacore.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit X-IsSubscribed: yes X-SW-Source: 2013-10/txt/msg00797.txt.bz2 On 10/25/2013 11:34 AM, Joel Brobecker wrote: > My only real comment is that I'd rather we define default_varobj_ops > without the '&' so that uses of that macro is similar to the case > where the macro isn't used. OK with that change. OK. Patch below is committed. > > Also, as a followup, I think it would be beneficial if we renamed > field "lang" in the varobj_root into "lang_ops". I think it's more > descriptive, especially since "lang" is used elsewhere with different > meanings (and types). I'll post a patch for this. -- Yao (齐尧) gdb: 2013-10-25 Yao Qi * language.h (struct lang_varobj_ops): Declare. (struct language_defn) : 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. --- gdb/ada-lang.c | 2 ++ gdb/c-lang.c | 5 +++++ gdb/d-lang.c | 2 ++ gdb/f-lang.c | 2 ++ gdb/go-lang.c | 2 ++ gdb/jv-lang.c | 2 ++ gdb/language.c | 4 ++++ gdb/language.h | 4 ++++ gdb/m2-lang.c | 2 ++ gdb/objc-lang.c | 2 ++ gdb/opencl-lang.c | 2 ++ gdb/p-lang.c | 2 ++ gdb/varobj.c | 4 +--- gdb/varobj.h | 1 + 14 files changed, 33 insertions(+), 3 deletions(-) diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index 9ff3ab9..75f9fe8 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -32,6 +32,7 @@ #include "expression.h" #include "parser-defs.h" #include "language.h" +#include "varobj.h" #include "c-lang.h" #include "inferior.h" #include "symfile.h" @@ -12834,6 +12835,7 @@ const struct language_defn ada_language_defn = { c_get_string, ada_get_symbol_name_cmp, /* la_get_symbol_name_cmp */ ada_iterate_over_symbols, + &ada_varobj_ops, LANG_MAGIC }; diff --git a/gdb/c-lang.c b/gdb/c-lang.c index 33bb444..7c09029 100644 --- a/gdb/c-lang.c +++ b/gdb/c-lang.c @@ -23,6 +23,7 @@ #include "expression.h" #include "parser-defs.h" #include "language.h" +#include "varobj.h" #include "c-lang.h" #include "valprint.h" #include "macroscope.h" @@ -846,6 +847,7 @@ const struct language_defn c_language_defn = c_get_string, NULL, /* la_get_symbol_name_cmp */ iterate_over_symbols, + &c_varobj_ops, LANG_MAGIC }; @@ -969,6 +971,7 @@ const struct language_defn cplus_language_defn = c_get_string, NULL, /* la_get_symbol_name_cmp */ iterate_over_symbols, + &cplus_varobj_ops, LANG_MAGIC }; @@ -1010,6 +1013,7 @@ const struct language_defn asm_language_defn = c_get_string, NULL, /* la_get_symbol_name_cmp */ iterate_over_symbols, + &default_varobj_ops, LANG_MAGIC }; @@ -1056,6 +1060,7 @@ const struct language_defn minimal_language_defn = c_get_string, NULL, /* la_get_symbol_name_cmp */ iterate_over_symbols, + &default_varobj_ops, LANG_MAGIC }; diff --git a/gdb/d-lang.c b/gdb/d-lang.c index 15f56df..b4c8664 100644 --- a/gdb/d-lang.c +++ b/gdb/d-lang.c @@ -20,6 +20,7 @@ #include "defs.h" #include "symtab.h" #include "language.h" +#include "varobj.h" #include "d-lang.h" #include "c-lang.h" #include "gdb_string.h" @@ -274,6 +275,7 @@ static const struct language_defn d_language_defn = c_get_string, NULL, /* la_get_symbol_name_cmp */ iterate_over_symbols, + &default_varobj_ops, LANG_MAGIC }; diff --git a/gdb/f-lang.c b/gdb/f-lang.c index f40e98d..ee52561 100644 --- a/gdb/f-lang.c +++ b/gdb/f-lang.c @@ -27,6 +27,7 @@ #include "expression.h" #include "parser-defs.h" #include "language.h" +#include "varobj.h" #include "f-lang.h" #include "valprint.h" #include "value.h" @@ -273,6 +274,7 @@ const struct language_defn f_language_defn = default_get_string, NULL, /* la_get_symbol_name_cmp */ iterate_over_symbols, + &default_varobj_ops, LANG_MAGIC }; diff --git a/gdb/go-lang.c b/gdb/go-lang.c index 309b1eb..fd0bae3 100644 --- a/gdb/go-lang.c +++ b/gdb/go-lang.c @@ -38,6 +38,7 @@ #include "block.h" #include "symtab.h" #include "language.h" +#include "varobj.h" #include "go-lang.h" #include "c-lang.h" #include "parser-defs.h" @@ -596,6 +597,7 @@ static const struct language_defn go_language_defn = c_get_string, NULL, iterate_over_symbols, + &default_varobj_ops, LANG_MAGIC }; diff --git a/gdb/jv-lang.c b/gdb/jv-lang.c index 63bcc98..9c2cc13 100644 --- a/gdb/jv-lang.c +++ b/gdb/jv-lang.c @@ -31,6 +31,7 @@ #include "value.h" #include "c-lang.h" #include "jv-lang.h" +#include "varobj.h" #include "gdbcore.h" #include "block.h" #include "demangle.h" @@ -1196,6 +1197,7 @@ const struct language_defn java_language_defn = default_get_string, NULL, /* la_get_symbol_name_cmp */ iterate_over_symbols, + &java_varobj_ops, LANG_MAGIC }; diff --git a/gdb/language.c b/gdb/language.c index 10073e1..dcad5f3 100644 --- a/gdb/language.c +++ b/gdb/language.c @@ -38,6 +38,7 @@ #include "gdbcmd.h" #include "expression.h" #include "language.h" +#include "varobj.h" #include "target.h" #include "parser-defs.h" #include "jv-lang.h" @@ -826,6 +827,7 @@ const struct language_defn unknown_language_defn = default_get_string, NULL, /* la_get_symbol_name_cmp */ iterate_over_symbols, + &default_varobj_ops, LANG_MAGIC }; @@ -869,6 +871,7 @@ const struct language_defn auto_language_defn = default_get_string, NULL, /* la_get_symbol_name_cmp */ iterate_over_symbols, + &default_varobj_ops, LANG_MAGIC }; @@ -910,6 +913,7 @@ const struct language_defn local_language_defn = default_get_string, NULL, /* la_get_symbol_name_cmp */ iterate_over_symbols, + &default_varobj_ops, LANG_MAGIC }; diff --git a/gdb/language.h b/gdb/language.h index e36da31..5e029ea 100644 --- a/gdb/language.h +++ b/gdb/language.h @@ -31,6 +31,7 @@ struct expression; struct ui_file; struct value_print_options; struct type_print_options; +struct lang_varobj_ops; #define MAX_FORTRAN_DIMS 7 /* Maximum number of F77 array dims. */ @@ -344,6 +345,9 @@ struct language_defn symbol_found_callback_ftype *callback, 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. */ /* Magic number for compat checking. */ diff --git a/gdb/m2-lang.c b/gdb/m2-lang.c index 31e9a56..158ca07 100644 --- a/gdb/m2-lang.c +++ b/gdb/m2-lang.c @@ -23,6 +23,7 @@ #include "expression.h" #include "parser-defs.h" #include "language.h" +#include "varobj.h" #include "m2-lang.h" #include "c-lang.h" #include "valprint.h" @@ -391,6 +392,7 @@ const struct language_defn m2_language_defn = default_get_string, NULL, /* la_get_symbol_name_cmp */ iterate_over_symbols, + &default_varobj_ops, LANG_MAGIC }; diff --git a/gdb/objc-lang.c b/gdb/objc-lang.c index bcce435..efec3b3 100644 --- a/gdb/objc-lang.c +++ b/gdb/objc-lang.c @@ -26,6 +26,7 @@ #include "expression.h" #include "parser-defs.h" #include "language.h" +#include "varobj.h" #include "c-lang.h" #include "objc-lang.h" #include "exceptions.h" @@ -389,6 +390,7 @@ const struct language_defn objc_language_defn = { default_get_string, NULL, /* la_get_symbol_name_cmp */ iterate_over_symbols, + &default_varobj_ops, LANG_MAGIC }; diff --git a/gdb/opencl-lang.c b/gdb/opencl-lang.c index 4720e2b..faf88d9 100644 --- a/gdb/opencl-lang.c +++ b/gdb/opencl-lang.c @@ -26,6 +26,7 @@ #include "parser-defs.h" #include "symtab.h" #include "language.h" +#include "varobj.h" #include "c-lang.h" #include "gdb_assert.h" @@ -1137,6 +1138,7 @@ const struct language_defn opencl_language_defn = c_get_string, NULL, /* la_get_symbol_name_cmp */ iterate_over_symbols, + &default_varobj_ops, LANG_MAGIC }; diff --git a/gdb/p-lang.c b/gdb/p-lang.c index 07006cd..d239190 100644 --- a/gdb/p-lang.c +++ b/gdb/p-lang.c @@ -26,6 +26,7 @@ #include "expression.h" #include "parser-defs.h" #include "language.h" +#include "varobj.h" #include "p-lang.h" #include "valprint.h" #include "value.h" @@ -449,6 +450,7 @@ const struct language_defn pascal_language_defn = default_get_string, NULL, /* la_get_symbol_name_cmp */ iterate_over_symbols, + &default_varobj_ops, LANG_MAGIC }; diff --git a/gdb/varobj.c b/gdb/varobj.c index 01cf3d2..60ed810 100644 --- a/gdb/varobj.c +++ b/gdb/varobj.c @@ -318,7 +318,6 @@ varobj_create (char *objname, struct frame_id old_id = null_frame_id; struct block *block; const char *p; - enum varobj_languages lang; struct value *value = NULL; volatile struct gdb_exception except; CORE_ADDR pc; @@ -433,8 +432,7 @@ varobj_create (char *objname, } /* Set language info */ - lang = variable_language (var); - var->root->lang = languages[lang]; + var->root->lang = var->root->exp->language_defn->la_varobj_ops; install_new_value (var, value, 1 /* Initial assignment */); diff --git a/gdb/varobj.h b/gdb/varobj.h index 7efaedb..2379c3d 100644 --- a/gdb/varobj.h +++ b/gdb/varobj.h @@ -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 ada_varobj_ops; +#define default_varobj_ops c_varobj_ops /* API functions */ extern struct varobj *varobj_create (char *objname, -- 1.7.7.6