aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2011-06-17 20:24:22 +0000
committerTom Tromey <tromey@redhat.com>2011-06-17 20:24:22 +0000
commitaee28ec61ad1d4027a78cdbc1da0dcd9f43e2374 (patch)
tree45e05b6b540cb839bcce895490b02696ac0eb2fa
parent563002680ccbb26706b55313bcccd84d8b299a78 (diff)
downloadgdb-aee28ec61ad1d4027a78cdbc1da0dcd9f43e2374.zip
gdb-aee28ec61ad1d4027a78cdbc1da0dcd9f43e2374.tar.gz
gdb-aee28ec61ad1d4027a78cdbc1da0dcd9f43e2374.tar.bz2
* valops.c (value_of_local): Complain if NAME is NULL.
* std-operator.def (OP_OBJC_SELF): Remove. * parse.c (operator_length_standard) <OP_OBJC_SELF>: Remove. * objc-exp.y (name_not_typename): Use OP_THIS. * expprint.c (print_subexp_standard) <OP_THIS>: Print language's name for "this". <OP_OBJC_SELF>: Remove. * eval.c (evaluate_subexp_standard) <OP_OBJC_SELF>: Remove.
-rw-r--r--gdb/ChangeLog11
-rw-r--r--gdb/eval.c6
-rw-r--r--gdb/expprint.c13
-rw-r--r--gdb/objc-exp.y4
-rw-r--r--gdb/parse.c1
-rw-r--r--gdb/std-operator.def5
-rw-r--r--gdb/valops.c7
7 files changed, 26 insertions, 21 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 8db242a..418e1d1 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,14 @@
+2011-06-17 Tom Tromey <tromey@redhat.com>
+
+ * valops.c (value_of_local): Complain if NAME is NULL.
+ * std-operator.def (OP_OBJC_SELF): Remove.
+ * parse.c (operator_length_standard) <OP_OBJC_SELF>: Remove.
+ * objc-exp.y (name_not_typename): Use OP_THIS.
+ * expprint.c (print_subexp_standard) <OP_THIS>: Print language's
+ name for "this".
+ <OP_OBJC_SELF>: Remove.
+ * eval.c (evaluate_subexp_standard) <OP_OBJC_SELF>: Remove.
+
2011-06-16 Tristan Gingold <gingold@adacore.com>
* python/py-events.h (gdb_py_events): Make it extern.
diff --git a/gdb/eval.c b/gdb/eval.c
index bbc7b8a..22ca881 100644
--- a/gdb/eval.c
+++ b/gdb/eval.c
@@ -2830,11 +2830,7 @@ evaluate_subexp_standard (struct type *expect_type,
case OP_THIS:
(*pos) += 1;
- return value_of_this (1);
-
- case OP_OBJC_SELF:
- (*pos) += 1;
- return value_of_local ("self", 1);
+ return value_of_local (exp->language_defn->la_name_of_this, 1);
case OP_TYPE:
/* The value is not supposed to be used. This is here to make it
diff --git a/gdb/expprint.c b/gdb/expprint.c
index a52dee3..2b6e416 100644
--- a/gdb/expprint.c
+++ b/gdb/expprint.c
@@ -499,14 +499,11 @@ print_subexp_standard (struct expression *exp, int *pos,
case OP_THIS:
++(*pos);
- fputs_filtered ("this", stream);
- return;
-
- /* Objective-C ops */
-
- case OP_OBJC_SELF:
- ++(*pos);
- fputs_filtered ("self", stream); /* The ObjC equivalent of "this". */
+ if (exp->language_defn->la_name_of_this)
+ fputs_filtered (exp->language_defn->la_name_of_this, stream);
+ else
+ fprintf_filtered (stream, _("<language %s has no 'this'>"),
+ exp->language_defn->la_name);
return;
/* Modula-2 ops */
diff --git a/gdb/objc-exp.y b/gdb/objc-exp.y
index 852adff..881542f 100644
--- a/gdb/objc-exp.y
+++ b/gdb/objc-exp.y
@@ -755,8 +755,8 @@ variable: name_not_typename
if (innermost_block == 0 ||
contained_in (block_found, innermost_block))
innermost_block = block_found;
- write_exp_elt_opcode (OP_OBJC_SELF);
- write_exp_elt_opcode (OP_OBJC_SELF);
+ write_exp_elt_opcode (OP_THIS);
+ write_exp_elt_opcode (OP_THIS);
write_exp_elt_opcode (STRUCTOP_PTR);
write_exp_string ($1.stoken);
write_exp_elt_opcode (STRUCTOP_PTR);
diff --git a/gdb/parse.c b/gdb/parse.c
index 4815854..a8523e6 100644
--- a/gdb/parse.c
+++ b/gdb/parse.c
@@ -963,7 +963,6 @@ operator_length_standard (const struct expression *expr, int endpos,
/* C++ */
case OP_THIS:
- case OP_OBJC_SELF:
oplen = 2;
break;
diff --git a/gdb/std-operator.def b/gdb/std-operator.def
index 267215c..2c77141 100644
--- a/gdb/std-operator.def
+++ b/gdb/std-operator.def
@@ -277,11 +277,6 @@ OP (STRUCTOP_PTR)
It just comes in a tight (OP_THIS, OP_THIS) pair. */
OP (OP_THIS)
-/* Objective-C: OP_OBJC_SELF is just a placeholder for the class
- instance variable. It just comes in a tight (OP_OBJC_SELF,
- OP_OBJC_SELF) pair. */
-OP (OP_OBJC_SELF)
-
/* Objective C: "@selector" pseudo-operator. */
OP (OP_OBJC_SELECTOR)
diff --git a/gdb/valops.c b/gdb/valops.c
index 3676103..6129bfe 100644
--- a/gdb/valops.c
+++ b/gdb/valops.c
@@ -3608,6 +3608,13 @@ value_of_local (const char *name, int complain)
struct value * ret;
struct frame_info *frame;
+ if (!name)
+ {
+ if (complain)
+ error (_("no `this' in current language"));
+ return 0;
+ }
+
if (complain)
frame = get_selected_frame (_("no frame selected"));
else