X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fgo-lang.c;h=fe60b290411182c997d2697d20c9cb87218419fe;hb=75c6c844d9df37761e0e834df057b89e41816e55;hp=49a6b9efca0a6d1bb38b24fab367b25138f38208;hpb=69d340c68449f238fe665abf4a3a7989cd2d8376;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/go-lang.c b/gdb/go-lang.c index 49a6b9efca..fe60b29041 100644 --- a/gdb/go-lang.c +++ b/gdb/go-lang.c @@ -1,6 +1,6 @@ /* Go language support routines for GDB, the GNU debugger. - Copyright (C) 2012-2018 Free Software Foundation, Inc. + Copyright (C) 2012-2020 Free Software Foundation, Inc. This file is part of GDB. @@ -40,6 +40,7 @@ #include "go-lang.h" #include "c-lang.h" #include "parser-defs.h" +#include "gdbarch.h" #include @@ -130,6 +131,16 @@ go_classify_struct_type (struct type *type) return GO_TYPE_NONE; } +/* Return true if TYPE is a string. */ + +static bool +go_is_string_type_p (struct type *type) +{ + type = check_typedef (type); + return (TYPE_CODE (type) == TYPE_CODE_STRUCT + && go_classify_struct_type (type) == GO_TYPE_STRING); +} + /* Subroutine of unpack_mangled_go_symbol to simplify it. Given "[foo.]bar.baz", store "bar" in *PACKAGEP and "baz" in *OBJECTP. We stomp on the last '.' to nul-terminate "bar". @@ -400,7 +411,7 @@ go_sniff_from_mangled_name (const char *mangled, char **demangled) char * go_symbol_package_name (const struct symbol *sym) { - const char *mangled_name = SYMBOL_LINKAGE_NAME (sym); + const char *mangled_name = sym->linkage_name (); const char *package_name; const char *object_name; const char *method_type_package_name; @@ -409,7 +420,7 @@ go_symbol_package_name (const struct symbol *sym) char *name_buf; char *result; - gdb_assert (SYMBOL_LANGUAGE (sym) == language_go); + gdb_assert (sym->language () == language_go); name_buf = unpack_mangled_go_symbol (mangled_name, &package_name, &object_name, &method_type_package_name, @@ -604,7 +615,6 @@ extern const struct language_defn go_language_defn = go_language_arch_info, default_print_array_index, default_pass_by_reference, - c_get_string, c_watch_location_expression, NULL, /* la_get_symbol_name_matcher */ iterate_over_symbols, @@ -612,7 +622,8 @@ extern const struct language_defn go_language_defn = &default_varobj_ops, NULL, NULL, - LANG_MAGIC + go_is_string_type_p, + "{...}" /* la_struct_too_deep_ellipsis */ }; static void *