mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-26 01:07:52 +00:00
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.
This commit is contained in:
16
gdb/symtab.h
16
gdb/symtab.h
@@ -89,6 +89,11 @@ struct general_symbol_info
|
||||
char *demangled_name;
|
||||
}
|
||||
cplus_specific;
|
||||
struct objc_specific
|
||||
{
|
||||
char *demangled_name;
|
||||
}
|
||||
objc_specific;
|
||||
#if 0
|
||||
/* OBSOLETE struct chill_specific *//* For Chill */
|
||||
/* OBSOLETE { */
|
||||
@@ -146,6 +151,10 @@ extern CORE_ADDR symbol_overlayed_address (CORE_ADDR, asection *);
|
||||
{ \
|
||||
SYMBOL_CPLUS_DEMANGLED_NAME (symbol) = NULL; \
|
||||
} \
|
||||
else if (SYMBOL_LANGUAGE (symbol) == language_objc) \
|
||||
{ \
|
||||
SYMBOL_OBJC_DEMANGLED_NAME (symbol) = NULL; \
|
||||
} \
|
||||
/* OBSOLETE else if (SYMBOL_LANGUAGE (symbol) == language_chill) */ \
|
||||
/* OBSOLETE { */ \
|
||||
/* OBSOLETE SYMBOL_CHILL_DEMANGLED_NAME (symbol) = NULL; */ \
|
||||
@@ -170,13 +179,18 @@ extern void symbol_init_demangled_name (struct general_symbol_info *symbol,
|
||||
(SYMBOL_LANGUAGE (symbol) == language_cplus \
|
||||
|| SYMBOL_LANGUAGE (symbol) == language_java \
|
||||
? SYMBOL_CPLUS_DEMANGLED_NAME (symbol) \
|
||||
: (SYMBOL_LANGUAGE (symbol) == language_objc \
|
||||
? SYMBOL_OBJC_DEMANGLED_NAME (symbol) \
|
||||
: /* OBSOLETE (SYMBOL_LANGUAGE (symbol) == language_chill */ \
|
||||
/* OBSOLETE ? SYMBOL_CHILL_DEMANGLED_NAME (symbol) */ \
|
||||
NULL)
|
||||
NULL))
|
||||
|
||||
/* OBSOLETE #define SYMBOL_CHILL_DEMANGLED_NAME(symbol) */
|
||||
/* OBSOLETE (symbol)->ginfo.language_specific.chill_specific.demangled_name */
|
||||
|
||||
#define SYMBOL_OBJC_DEMANGLED_NAME(symbol) \
|
||||
(symbol)->ginfo.language_specific.objc_specific.demangled_name
|
||||
|
||||
/* Macro that returns the "natural source name" of a symbol. In C++ this is
|
||||
the "demangled" form of the name if demangle is on and the "mangled" form
|
||||
of the name if demangle is off. In other languages this is just the
|
||||
|
||||
Reference in New Issue
Block a user