mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-11-24 12:39:59 +00:00
* expprint.c (print_subexp): Handle OP_OBJC_NSSTRING,
OP_OBJC_MSGCALL, and OP_OBJC_SELF. (op_name): Handle OP_OBJC_SELF. * Makefile.in (expprint.o): Add additional depends.
This commit is contained in:
parent
646df18d28
commit
82eeeb9451
@ -1,3 +1,10 @@
|
||||
2002-11-18 Adam Fedor <fedor@gnu.org>
|
||||
|
||||
* expprint.c (print_subexp): Handle OP_OBJC_NSSTRING,
|
||||
OP_OBJC_MSGCALL, and OP_OBJC_SELF.
|
||||
(op_name): Handle OP_OBJC_SELF.
|
||||
* Makefile.in (expprint.o): Add additional depends.
|
||||
|
||||
2002-11-18 Adam Fedor <fedor@gnu.org>
|
||||
|
||||
* expression.h: Rename ObjC ops to OP_OBJC_MSGCALL,
|
||||
|
@ -1665,7 +1665,7 @@ exec.o: exec.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) $(gdbcmd_h) \
|
||||
$(language_h) $(symfile_h) $(objfiles_h) $(completer_h) $(value_h) \
|
||||
$(gdb_string_h) $(gdbcore_h) $(gdb_stat_h) $(xcoffsolib_h)
|
||||
expprint.o: expprint.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(expression_h) \
|
||||
$(value_h) $(language_h) $(parser_defs_h)
|
||||
$(value_h) $(language_h) $(parser_defs_h) $(target_h) $(gdb_string_h)
|
||||
f-lang.o: f-lang.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \
|
||||
$(expression_h) $(parser_defs_h) $(language_h) $(f_lang_h) \
|
||||
$(valprint_h)
|
||||
|
@ -27,6 +27,8 @@
|
||||
#include "language.h"
|
||||
#include "parser-defs.h"
|
||||
#include "frame.h" /* For frame_map_regnum_to_name. */
|
||||
#include "target.h"
|
||||
#include "gdb_string.h"
|
||||
|
||||
#ifdef HAVE_CTYPE_H
|
||||
#include <ctype.h>
|
||||
@ -177,6 +179,51 @@ print_subexp (register struct expression *exp, register int *pos,
|
||||
fprintf_unfiltered (stream, "B'<unimplemented>'");
|
||||
return;
|
||||
|
||||
case OP_OBJC_NSSTRING: /* Objective-C Foundation Class NSString constant. */
|
||||
nargs = longest_to_int (exp->elts[pc + 1].longconst);
|
||||
(*pos) += 3 + BYTES_TO_EXP_ELEM (nargs + 1);
|
||||
fputs_filtered ("@\"", stream);
|
||||
LA_PRINT_STRING (stream, &exp->elts[pc + 2].string, nargs, 1, 0);
|
||||
fputs_filtered ("\"", stream);
|
||||
return;
|
||||
|
||||
case OP_OBJC_MSGCALL:
|
||||
{ /* Objective C message (method) call. */
|
||||
char *selector;
|
||||
(*pos) += 3;
|
||||
nargs = longest_to_int (exp->elts[pc + 2].longconst);
|
||||
fprintf_unfiltered (stream, "[");
|
||||
print_subexp (exp, pos, stream, PREC_SUFFIX);
|
||||
if (0 == target_read_string (exp->elts[pc + 1].longconst,
|
||||
&selector, 1024, NULL))
|
||||
{
|
||||
error ("bad selector");
|
||||
return;
|
||||
}
|
||||
if (nargs)
|
||||
{
|
||||
char *s, *nextS;
|
||||
s = alloca (strlen (selector) + 1);
|
||||
strcpy (s, selector);
|
||||
for (tem = 0; tem < nargs; tem++)
|
||||
{
|
||||
nextS = strchr (s, ':');
|
||||
*nextS = '\0';
|
||||
fprintf_unfiltered (stream, " %s: ", s);
|
||||
s = nextS + 1;
|
||||
print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf_unfiltered (stream, " %s", selector);
|
||||
}
|
||||
fprintf_unfiltered (stream, "]");
|
||||
/* "selector" was malloc'd by target_read_string. Free it. */
|
||||
free (selector);
|
||||
return;
|
||||
}
|
||||
|
||||
case OP_ARRAY:
|
||||
(*pos) += 3;
|
||||
nargs = longest_to_int (exp->elts[pc + 2].longconst);
|
||||
@ -391,6 +438,13 @@ print_subexp (register struct expression *exp, register int *pos,
|
||||
fputs_filtered ("this", stream);
|
||||
return;
|
||||
|
||||
/* Objective-C ops */
|
||||
|
||||
case OP_OBJC_SELF:
|
||||
++(*pos);
|
||||
fputs_filtered ("self", stream); /* The ObjC equivalent of "this". */
|
||||
return;
|
||||
|
||||
/* Modula-2 ops */
|
||||
|
||||
case MULTI_SUBSCRIPT:
|
||||
@ -684,6 +738,8 @@ op_name (int opcode)
|
||||
return "STRUCTOP_PTR";
|
||||
case OP_THIS:
|
||||
return "OP_THIS";
|
||||
case OP_OBJC_SELF:
|
||||
return "OP_OBJC_SELF";
|
||||
case OP_SCOPE:
|
||||
return "OP_SCOPE";
|
||||
case OP_TYPE:
|
||||
|
Loading…
Reference in New Issue
Block a user