aboutsummaryrefslogtreecommitdiff
path: root/gdb/objc-lang.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/objc-lang.c')
-rw-r--r--gdb/objc-lang.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/gdb/objc-lang.c b/gdb/objc-lang.c
index 6789628..788fe0f 100644
--- a/gdb/objc-lang.c
+++ b/gdb/objc-lang.c
@@ -43,6 +43,7 @@
#include "infcall.h"
#include "valprint.h"
#include "cli/cli-utils.h"
+#include "c-exp.h"
#include <ctype.h>
#include <algorithm>
@@ -507,15 +508,20 @@ end_msglist (struct parser_state *ps)
char *p = msglist_sel;
CORE_ADDR selid;
+ std::vector<expr::operation_up> args = ps->pop_vector (val);
+ expr::operation_up target = ps->pop ();
+
selname_chain = sel->next;
msglist_len = sel->msglist_len;
msglist_sel = sel->msglist_sel;
selid = lookup_child_selector (ps->gdbarch (), p);
if (!selid)
error (_("Can't find selector \"%s\""), p);
- write_exp_elt_longcst (ps, selid);
+
+ ps->push_new<expr::objc_msgcall_operation> (selid, std::move (target),
+ std::move (args));
+
xfree(p);
- write_exp_elt_longcst (ps, val); /* Number of args */
xfree(sel);
return val;