From: Yao Qi <yao@codesourcery.com>
To: Joel Brobecker <brobecker@adacore.com>
Cc: <gdb-patches@sourceware.org>
Subject: Re: [PATCH 1/2] New field la_varobj_ops in struct language_defn
Date: Fri, 25 Oct 2013 13:16:00 -0000 [thread overview]
Message-ID: <526A6ED0.4060506@codesourcery.com> (raw)
In-Reply-To: <20131025033415.GB4769@adacore.com>
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 <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.
---
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
};
\f
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
next prev parent reply other threads:[~2013-10-25 13:16 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-18 0:54 Yao Qi
2013-10-18 0:54 ` [PATCH 2/2] Remove varobj_language_string, languages and varobj_languages Yao Qi
2013-10-25 4:15 ` Joel Brobecker
2013-10-25 13:38 ` Yao Qi
2013-10-26 4:09 ` Joel Brobecker
2013-10-28 12:50 ` [PATCH 1/3] Constify 'la_name' in struct language_defn Yao Qi
2013-10-28 12:50 ` [PATCH 2/3] New field 'la_natural_name' " Yao Qi
2013-10-28 18:34 ` Tom Tromey
2013-10-29 8:41 ` Yao Qi
2013-11-07 7:18 ` Yao Qi
2013-10-28 12:50 ` [PATCH 3/3] Remove varobj_language_string, languages and varobj_languages Yao Qi
2013-10-28 18:52 ` Tom Tromey
2013-10-29 8:33 ` Yao Qi
2013-10-29 16:49 ` Eli Zaretskii
2013-10-31 3:10 ` Yao Qi
2013-10-31 17:31 ` Eli Zaretskii
2013-11-07 7:23 ` Yao Qi
2013-10-28 15:02 ` [PATCH 1/3] Constify 'la_name' in struct language_defn Tom Tromey
2013-10-25 3:34 ` [PATCH 1/2] New field la_varobj_ops " Joel Brobecker
2013-10-25 13:16 ` Yao Qi [this message]
2013-10-27 12:04 ` Rename field 'lang' to 'lang_ops' ([PATCH 1/2] New field la_varobj_ops in struct language_defn) Yao Qi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=526A6ED0.4060506@codesourcery.com \
--to=yao@codesourcery.com \
--cc=brobecker@adacore.com \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).