2002-10-03 Adam Fedor <fedor@gnu.org>
* objc-lang.c: ARI fixes. Change string.h to gdb_string.h. (objc_demangle): Remove assignment in if statements, Replace free with xfree. (add_msglist): Likewise. (end_msglist): Likewise. (complare_selectors): Likewise. (selectors_info): Likewise. (compare_classes): Likewise. (classes_info): Likewise. (print_object_command): Likewise. (find_objc_msgcall_submethod): Replace PTR with void *. * objc-lang.h: Remove check for __STDC__.
This commit is contained in:
parent
62823d4d45
commit
7248f48e57
3 changed files with 52 additions and 26 deletions
|
@ -1,3 +1,18 @@
|
||||||
|
2002-10-03 Adam Fedor <fedor@gnu.org>
|
||||||
|
|
||||||
|
* objc-lang.c: ARI fixes. Change string.h to gdb_string.h.
|
||||||
|
(objc_demangle): Remove assignment in if statements, Replace
|
||||||
|
free with xfree.
|
||||||
|
(add_msglist): Likewise.
|
||||||
|
(end_msglist): Likewise.
|
||||||
|
(complare_selectors): Likewise.
|
||||||
|
(selectors_info): Likewise.
|
||||||
|
(compare_classes): Likewise.
|
||||||
|
(classes_info): Likewise.
|
||||||
|
(print_object_command): Likewise.
|
||||||
|
(find_objc_msgcall_submethod): Replace PTR with void *.
|
||||||
|
* objc-lang.h: Remove check for __STDC__.
|
||||||
|
|
||||||
2002-10-03 Jeff Johnston <jjohnstn@redhat.com>
|
2002-10-03 Jeff Johnston <jjohnstn@redhat.com>
|
||||||
|
|
||||||
* ui-out.h (ui_out_field_fmt_int): New prototype.
|
* ui-out.h (ui_out_field_fmt_int): New prototype.
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
#include "value.h"
|
#include "value.h"
|
||||||
#include "symfile.h"
|
#include "symfile.h"
|
||||||
#include "objfiles.h"
|
#include "objfiles.h"
|
||||||
#include "string.h" /* for strchr */
|
#include "gdb_string.h" /* for strchr */
|
||||||
#include "target.h" /* for target_has_execution */
|
#include "target.h" /* for target_has_execution */
|
||||||
#include "gdbcore.h"
|
#include "gdbcore.h"
|
||||||
#include "gdbcmd.h"
|
#include "gdbcmd.h"
|
||||||
|
@ -266,9 +266,10 @@ objc_demangle (const char *mangled)
|
||||||
while (*cp && *cp == '_')
|
while (*cp && *cp == '_')
|
||||||
cp++; /* skip any initial underbars in class name */
|
cp++; /* skip any initial underbars in class name */
|
||||||
|
|
||||||
if (!(cp = strchr(cp, '_'))) /* find first non-initial underbar */
|
cp = strchr(cp, '_');
|
||||||
|
if (!cp) /* find first non-initial underbar */
|
||||||
{
|
{
|
||||||
free(demangled); /* not mangled name */
|
xfree(demangled); /* not mangled name */
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if (cp[1] == '_') { /* easy case: no category name */
|
if (cp[1] == '_') { /* easy case: no category name */
|
||||||
|
@ -277,9 +278,10 @@ objc_demangle (const char *mangled)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
*cp++ = '('; /* less easy case: category name */
|
*cp++ = '('; /* less easy case: category name */
|
||||||
if (!(cp = strchr(cp, '_')))
|
cp = strchr(cp, '_');
|
||||||
|
if (!cp)
|
||||||
{
|
{
|
||||||
free(demangled); /* not mangled name */
|
xfree(demangled); /* not mangled name */
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
*cp++ = ')';
|
*cp++ = ')';
|
||||||
|
@ -739,7 +741,7 @@ add_msglist(struct stoken *str, int addcolon)
|
||||||
s = (char *)xmalloc(len);
|
s = (char *)xmalloc(len);
|
||||||
strcpy(s, msglist_sel);
|
strcpy(s, msglist_sel);
|
||||||
strncat(s, p, plen);
|
strncat(s, p, plen);
|
||||||
free(msglist_sel);
|
xfree(msglist_sel);
|
||||||
msglist_sel = s;
|
msglist_sel = s;
|
||||||
if (addcolon) {
|
if (addcolon) {
|
||||||
s[len-2] = ':';
|
s[len-2] = ':';
|
||||||
|
@ -764,9 +766,9 @@ end_msglist(void)
|
||||||
if (!selid)
|
if (!selid)
|
||||||
error("Can't find selector \"%s\"", p);
|
error("Can't find selector \"%s\"", p);
|
||||||
write_exp_elt_longcst (selid);
|
write_exp_elt_longcst (selid);
|
||||||
free(p);
|
xfree(p);
|
||||||
write_exp_elt_longcst (val); /* Number of args */
|
write_exp_elt_longcst (val); /* Number of args */
|
||||||
free(sel);
|
xfree(sel);
|
||||||
|
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
@ -805,12 +807,14 @@ compare_selectors (void *a, void *b)
|
||||||
{
|
{
|
||||||
char *aname, *bname;
|
char *aname, *bname;
|
||||||
|
|
||||||
if ((aname = SYMBOL_SOURCE_NAME (*(struct symbol **) a)) == NULL ||
|
aname = SYMBOL_SOURCE_NAME (*(struct symbol **) a);
|
||||||
(bname = SYMBOL_SOURCE_NAME (*(struct symbol **) b)) == NULL)
|
bname = SYMBOL_SOURCE_NAME (*(struct symbol **) b);
|
||||||
|
if (aname == NULL || bname == NULL)
|
||||||
error ("internal: compare_selectors(1)");
|
error ("internal: compare_selectors(1)");
|
||||||
|
|
||||||
if ((aname = strchr(aname, ' ')) == NULL ||
|
aname = strchr(aname, ' ');
|
||||||
(bname = strchr(bname, ' ')) == NULL)
|
bname = strchr(bname, ' ');
|
||||||
|
if (aname == NULL || bname == NULL)
|
||||||
error ("internal: compare_selectors(2)");
|
error ("internal: compare_selectors(2)");
|
||||||
|
|
||||||
return specialcmp (aname+1, bname+1);
|
return specialcmp (aname+1, bname+1);
|
||||||
|
@ -870,7 +874,8 @@ selectors_info (char *regexp, int from_tty)
|
||||||
ALL_MSYMBOLS (objfile, msymbol)
|
ALL_MSYMBOLS (objfile, msymbol)
|
||||||
{
|
{
|
||||||
QUIT;
|
QUIT;
|
||||||
if ((name = SYMBOL_DEMANGLED_NAME (msymbol)) == NULL)
|
name = SYMBOL_DEMANGLED_NAME (msymbol);
|
||||||
|
if (name == NULL)
|
||||||
name = SYMBOL_NAME (msymbol);
|
name = SYMBOL_NAME (msymbol);
|
||||||
if (name &&
|
if (name &&
|
||||||
(name[0] == '-' || name[0] == '+') &&
|
(name[0] == '-' || name[0] == '+') &&
|
||||||
|
@ -902,7 +907,8 @@ selectors_info (char *regexp, int from_tty)
|
||||||
ALL_MSYMBOLS (objfile, msymbol)
|
ALL_MSYMBOLS (objfile, msymbol)
|
||||||
{
|
{
|
||||||
QUIT;
|
QUIT;
|
||||||
if ((name = SYMBOL_DEMANGLED_NAME (msymbol)) == NULL)
|
name = SYMBOL_DEMANGLED_NAME (msymbol);
|
||||||
|
if (name == NULL)
|
||||||
name = SYMBOL_NAME (msymbol);
|
name = SYMBOL_NAME (msymbol);
|
||||||
if (name &&
|
if (name &&
|
||||||
(name[0] == '-' || name[0] == '+') &&
|
(name[0] == '-' || name[0] == '+') &&
|
||||||
|
@ -927,7 +933,8 @@ selectors_info (char *regexp, int from_tty)
|
||||||
char *p = asel;
|
char *p = asel;
|
||||||
|
|
||||||
QUIT;
|
QUIT;
|
||||||
if ((name = SYMBOL_DEMANGLED_NAME (sym_arr[ix])) == NULL)
|
name = SYMBOL_DEMANGLED_NAME (sym_arr[ix]);
|
||||||
|
if (name == NULL)
|
||||||
name = SYMBOL_NAME (sym_arr[ix]);
|
name = SYMBOL_NAME (sym_arr[ix]);
|
||||||
name = strchr (name, ' ') + 1;
|
name = strchr (name, ' ') + 1;
|
||||||
if (p[0] && specialcmp(name, p) == 0)
|
if (p[0] && specialcmp(name, p) == 0)
|
||||||
|
@ -958,8 +965,9 @@ compare_classes (void *a, void *b)
|
||||||
{
|
{
|
||||||
char *aname, *bname;
|
char *aname, *bname;
|
||||||
|
|
||||||
if ((aname = SYMBOL_SOURCE_NAME (*(struct symbol **) a)) == NULL ||
|
aname = SYMBOL_SOURCE_NAME (*(struct symbol **) a);
|
||||||
(bname = SYMBOL_SOURCE_NAME (*(struct symbol **) b)) == NULL)
|
bname = SYMBOL_SOURCE_NAME (*(struct symbol **) b);
|
||||||
|
if (aname == NULL || bname == NULL)
|
||||||
error ("internal: compare_classes(1)");
|
error ("internal: compare_classes(1)");
|
||||||
|
|
||||||
return specialcmp (aname+1, bname+1);
|
return specialcmp (aname+1, bname+1);
|
||||||
|
@ -1009,7 +1017,8 @@ classes_info (char *regexp, int from_tty)
|
||||||
ALL_MSYMBOLS (objfile, msymbol)
|
ALL_MSYMBOLS (objfile, msymbol)
|
||||||
{
|
{
|
||||||
QUIT;
|
QUIT;
|
||||||
if ((name = SYMBOL_DEMANGLED_NAME (msymbol)) == NULL)
|
name = SYMBOL_DEMANGLED_NAME (msymbol);
|
||||||
|
if (name == NULL)
|
||||||
name = SYMBOL_NAME (msymbol);
|
name = SYMBOL_NAME (msymbol);
|
||||||
if (name &&
|
if (name &&
|
||||||
(name[0] == '-' || name[0] == '+') &&
|
(name[0] == '-' || name[0] == '+') &&
|
||||||
|
@ -1034,7 +1043,8 @@ classes_info (char *regexp, int from_tty)
|
||||||
ALL_MSYMBOLS (objfile, msymbol)
|
ALL_MSYMBOLS (objfile, msymbol)
|
||||||
{
|
{
|
||||||
QUIT;
|
QUIT;
|
||||||
if ((name = SYMBOL_DEMANGLED_NAME (msymbol)) == NULL)
|
name = SYMBOL_DEMANGLED_NAME (msymbol);
|
||||||
|
if (name == NULL)
|
||||||
name = SYMBOL_NAME (msymbol);
|
name = SYMBOL_NAME (msymbol);
|
||||||
if (name &&
|
if (name &&
|
||||||
(name[0] == '-' || name[0] == '+') &&
|
(name[0] == '-' || name[0] == '+') &&
|
||||||
|
@ -1052,7 +1062,8 @@ classes_info (char *regexp, int from_tty)
|
||||||
char *p = aclass;
|
char *p = aclass;
|
||||||
|
|
||||||
QUIT;
|
QUIT;
|
||||||
if ((name = SYMBOL_DEMANGLED_NAME (sym_arr[ix])) == NULL)
|
name = SYMBOL_DEMANGLED_NAME (sym_arr[ix]);
|
||||||
|
if (name == NULL)
|
||||||
name = SYMBOL_NAME (sym_arr[ix]);
|
name = SYMBOL_NAME (sym_arr[ix]);
|
||||||
name += 2;
|
name += 2;
|
||||||
if (p[0] && specialcmp(name, p) == 0)
|
if (p[0] && specialcmp(name, p) == 0)
|
||||||
|
@ -1551,12 +1562,14 @@ print_object_command (char *args, int from_tty)
|
||||||
do_cleanups (old_chain);
|
do_cleanups (old_chain);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(function = find_function_in_inferior ("_NSPrintForDebugger")))
|
function = find_function_in_inferior ("_NSPrintForDebugger");
|
||||||
|
if (!function)
|
||||||
error ("Unable to locate _NSPrintForDebugger in child process");
|
error ("Unable to locate _NSPrintForDebugger in child process");
|
||||||
|
|
||||||
description = call_function_by_hand (function, 1, &object);
|
description = call_function_by_hand (function, 1, &object);
|
||||||
|
|
||||||
if ((string_addr = value_as_long (description)) == 0)
|
string_addr = value_as_long (description);
|
||||||
|
if (string_addr == 0)
|
||||||
error ("object returns null description");
|
error ("object returns null description");
|
||||||
|
|
||||||
read_memory (string_addr + i++, &c, 1);
|
read_memory (string_addr + i++, &c, 1);
|
||||||
|
@ -1658,7 +1671,7 @@ struct objc_submethod_helper_data {
|
||||||
};
|
};
|
||||||
|
|
||||||
int
|
int
|
||||||
find_objc_msgcall_submethod_helper (PTR arg)
|
find_objc_msgcall_submethod_helper (void * arg)
|
||||||
{
|
{
|
||||||
struct objc_submethod_helper_data *s =
|
struct objc_submethod_helper_data *s =
|
||||||
(struct objc_submethod_helper_data *) arg;
|
(struct objc_submethod_helper_data *) arg;
|
||||||
|
@ -1681,7 +1694,7 @@ find_objc_msgcall_submethod (CORE_ADDR (*f) (CORE_ADDR, CORE_ADDR *),
|
||||||
s.new_pc = new_pc;
|
s.new_pc = new_pc;
|
||||||
|
|
||||||
if (catch_errors (find_objc_msgcall_submethod_helper,
|
if (catch_errors (find_objc_msgcall_submethod_helper,
|
||||||
(PTR) &s,
|
(void *) &s,
|
||||||
"Unable to determine target of Objective-C method call (ignoring):\n",
|
"Unable to determine target of Objective-C method call (ignoring):\n",
|
||||||
RETURN_MASK_ALL) == 0)
|
RETURN_MASK_ALL) == 0)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -19,9 +19,7 @@
|
||||||
Foundation, Inc., 59 Temple Place - Suite 330,
|
Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
Boston, MA 02111-1307, USA. */
|
Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
#ifdef __STDC__ /* Forward decls for prototypes. */
|
|
||||||
struct value;
|
struct value;
|
||||||
#endif
|
|
||||||
|
|
||||||
extern int objc_parse (void); /* Defined in c-exp.y */
|
extern int objc_parse (void); /* Defined in c-exp.y */
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue