From: Adam Fedor Date: Tue, 19 Nov 2002 03:36:44 +0000 (+0000) Subject: * expprint.c (print_subexp): Handle OP_OBJC_NSSTRING, X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=82eeeb9451dceed04a4d10f701097d1b92e223e2;p=binutils-gdb.git * 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. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index a46a3730c8d..20277ed6fcb 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2002-11-18 Adam Fedor + + * 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 * expression.h: Rename ObjC ops to OP_OBJC_MSGCALL, diff --git a/gdb/Makefile.in b/gdb/Makefile.in index 08a0ee260a7..6183833a575 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -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) diff --git a/gdb/expprint.c b/gdb/expprint.c index aa8b8762012..ed9d50ddf54 100644 --- a/gdb/expprint.c +++ b/gdb/expprint.c @@ -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 @@ -177,6 +179,51 @@ print_subexp (register struct expression *exp, register int *pos, fprintf_unfiltered (stream, "B''"); 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: