diff options
author | Michael Snyder <msnyder@vmware.com> | 2002-09-19 01:34:51 +0000 |
---|---|---|
committer | Michael Snyder <msnyder@vmware.com> | 2002-09-19 01:34:51 +0000 |
commit | 3b4efeaa2da94f19becde56d8c8f9693367acafc (patch) | |
tree | 317d932941134a8b5cb49e89a4f86179519f429f /gdb/language.c | |
parent | b9caf5053f5684f063a33357b6483cd2b62de0ec (diff) | |
download | gdb-3b4efeaa2da94f19becde56d8c8f9693367acafc.zip gdb-3b4efeaa2da94f19becde56d8c8f9693367acafc.tar.gz gdb-3b4efeaa2da94f19becde56d8c8f9693367acafc.tar.bz2 |
2002-09-18 Michael Snyder <msnyder@redhat.com>
Preliminary support for Objective-C:
* defs.h (language_objc): New enum value.
(puts_filtered_tabular): Declaration only, exported from utils.c.
(skip_quoted): Delete, declared in completer.h.
* c-exp.y: Include completer.h.
* p-exp.y: Ditto.
* jv-exp.y: Ditto.
* expression.h (OP_MSGCALL, OP_SELECTOR, OP_SELF, OP_NSSTRING):
New operator enum values.
* language.h (CAST_IS_CONVERSION): Test for language_objc.
* language.c (binop_result_type): Handle language_objc case.
(integral_type, character_type, string_type, boolean_type,
structured_type, binop_type_check): Ditto.
* symtab.h (SYMBOL_OBJC_DEMANGLED_NAME): Define.
(struct objc_specific): Add to general_symbol_info.
(SYMBOL_INIT_LANGUAGE_SPECIFIC): Add objc initialization.
(SYMBOL_DEMANGLED_NAME): Handle objc case.
* parser-defs.h (struct objc_class_str): New struct type.
(start_msglist, end_msglist, add_msglist): Declaration only,
exported from objc-lang.c.
* value.h (value_of_local, value_nsstring,
call_function_by_hand_expecting_type): Exported from valops.c.
* valops.c (find_function_addr): Export.
(call_function_by_hand_expecting_type): New function.
(value_of_local): New function.
* symfile.c (init_filename_language_table): Add ".m" extension
for Objective-C.
* utils.c (puts_filtered_tabular): New function.
(fprintf_symbol_filtered): Add objc demangling support (disabled).
(set/show demangle): Extend help-string to refer to ObjC.
* elfread.c (elf_symtab_read): Skip Objective-C special symbols.
* stabsread.c (symbol_reference_defined): Objective-C symbols
may contain colons: make allowances when scanning stabs strings
for colons.
(objc_find_colon): New function.
* printcmd.c (address_info): If language == objc then print
"self" instead of "this".
* parse.c (length_of_subexp): Handle new operators OP_MSGCALL,
OP_NSSTRING, and OP_SELF.
(prefixify_subexp): Ditto.
* source.c (print_source_lines): Mention objc in comment.
* breakpoint.c (parse_breakpoint_sals): Recognize Objective-C
method names.
Diffstat (limited to 'gdb/language.c')
-rw-r--r-- | gdb/language.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/gdb/language.c b/gdb/language.c index dc94ebd..8eee8f6 100644 --- a/gdb/language.c +++ b/gdb/language.c @@ -549,6 +549,7 @@ binop_result_type (struct value *v1, struct value *v2) { case language_c: case language_cplus: + case language_objc: if (TYPE_CODE (t1) == TYPE_CODE_FLT) return TYPE_CODE (t2) == TYPE_CODE_FLT && l2 > l1 ? VALUE_TYPE (v2) : VALUE_TYPE (v1); @@ -786,6 +787,7 @@ integral_type (struct type *type) { case language_c: case language_cplus: + case language_objc: return (TYPE_CODE (type) != TYPE_CODE_INT) && (TYPE_CODE (type) != TYPE_CODE_ENUM) ? 0 : 1; case language_m2: @@ -828,6 +830,7 @@ character_type (struct type *type) case language_c: case language_cplus: + case language_objc: return (TYPE_CODE (type) == TYPE_CODE_INT) && TYPE_LENGTH (type) == sizeof (char) ? 1 : 0; @@ -850,6 +853,7 @@ string_type (struct type *type) case language_c: case language_cplus: + case language_objc: /* C does not have distinct string type. */ return (0); default: @@ -868,6 +872,7 @@ boolean_type (struct type *type) { case language_c: case language_cplus: + case language_objc: /* Might be more cleanly handled by having a TYPE_CODE_INT_NOT_BOOL for (OBSOLETE) CHILL and such languages, or a TYPE_CODE_INT_OR_BOOL for C. */ @@ -904,6 +909,7 @@ structured_type (struct type *type) { case language_c: case language_cplus: + case language_objc: return (TYPE_CODE (type) == TYPE_CODE_STRUCT) || (TYPE_CODE (type) == TYPE_CODE_UNION) || (TYPE_CODE (type) == TYPE_CODE_ARRAY); @@ -1124,6 +1130,7 @@ binop_type_check (struct value *arg1, struct value *arg2, int op) #ifdef _LANG_c case language_c: case language_cplus: + case language_objc: switch (op) { case BINOP_DIV: |