X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Flanguage.c;h=c447eaba0c5540a64cdf10715eb2628d687e729c;hb=0a50df5dabfe12c8bf20f4f724622ff38ef7828b;hp=c8f0349901bd897cc223e32c946a0813973f8bcb;hpb=fbfb0a463fc7de88a2da8858ac5cd6c2f4796514;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/language.c b/gdb/language.c index c8f0349901..c447eaba0c 100644 --- a/gdb/language.c +++ b/gdb/language.c @@ -589,8 +589,8 @@ char * language_demangle (const struct language_defn *current_language, const char *mangled, int options) { - if (current_language != NULL && current_language->la_demangle) - return current_language->la_demangle (mangled, options); + if (current_language != NULL) + return current_language->demangle (mangled, options); return NULL; } @@ -749,12 +749,6 @@ static CORE_ADDR unk_lang_trampoline (struct frame_info *frame, CORE_ADDR pc) return 0; } -/* Unknown languages just use the cplus demangler. */ -static char *unk_lang_demangle (const char *mangled, int options) -{ - return gdb_demangle (mangled, options); -} - static char *unk_lang_class_name (const char *mangled) { return NULL; @@ -800,7 +794,6 @@ extern const struct language_data unknown_language_data = "this", /* name_of_this */ true, /* store_sym_names_in_linkage_form_p */ basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */ - unk_lang_demangle, /* Language specific symbol demangler */ unk_lang_class_name, /* Language specific class_name_from_physname */ unk_op_print_tab, /* expression operators for printing */ @@ -840,6 +833,14 @@ public: { error (_("unimplemented unknown_language::print_type called")); } + + /* See language.h. */ + + char *demangle (const char *mangled, int options) const override + { + /* The unknown language just uses the C++ demangler. */ + return gdb_demangle (mangled, options); + } }; /* Single instance of the unknown language class. */ @@ -871,7 +872,6 @@ extern const struct language_data auto_language_data = "this", /* name_of_this */ false, /* store_sym_names_in_linkage_form_p */ basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */ - unk_lang_demangle, /* Language specific symbol demangler */ unk_lang_class_name, /* Language specific class_name_from_physname */ unk_op_print_tab, /* expression operators for printing */ @@ -911,6 +911,14 @@ public: { error (_("unimplemented auto_language::print_type called")); } + + /* See language.h. */ + + char *demangle (const char *mangled, int options) const override + { + /* The auto language just uses the C++ demangler. */ + return gdb_demangle (mangled, options); + } }; /* Single instance of the fake "auto" language. */