From: Andrew Burgess Date: Wed, 8 Jul 2020 10:09:45 +0000 (+0100) Subject: gdb: Override store_sym_names_in_linkage_form_p for Go language X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=bf92aec5884b64a73a334aea875c68e8d1f959fc;p=binutils-gdb.git gdb: Override store_sym_names_in_linkage_form_p for Go language When store_sym_names_in_linkage_form_p was introduced in this commit: commit 59cc4834e53565da1de4a7b615ed8890ed55c7da Date: Tue Mar 27 08:57:16 2018 -0500 problem looking up some symbols when they have a linkage name A special case was left behind for Go, however, this special case was not really needed anymore, it could be handled by having store_sym_names_in_linkage_form_p return the true for go, instead of false. This commit overrides store_sym_names_in_linkage_form_p for Go, and then removes the special case. As store_sym_names_in_linkage_form_p is only called once throughout GDB this should be perfectly safe. There should be no user visible changes after this commit. gdb/ChangeLog: * dwarf2/read.c (dwarf2_physname): Remove special case for language_go. * go-lang.c (go_language::store_sym_names_in_linkage_form_p): New member function. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index ac4ec6fde7f..ce9d3ae778b 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2020-09-16 Andrew Burgess + + * dwarf2/read.c (dwarf2_physname): Remove special case for + language_go. + * go-lang.c (go_language::store_sym_names_in_linkage_form_p): New + member function. + 2020-09-16 Andrew Burgess * ada-lang.c (ada_language_data): Remove diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index 16001aa9e9b..d0398ef914f 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -10639,12 +10639,6 @@ dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu) { /* Do nothing (do not demangle the symbol name). */ } - else if (cu->language == language_go) - { - /* This is a lie, but we already lie to the caller new_symbol. - new_symbol assumes we return the mangled name. - This just undoes that lie until things are cleaned up. */ - } else { /* Use DMGL_RET_DROP for C++ template functions to suppress diff --git a/gdb/go-lang.c b/gdb/go-lang.c index ed18f01dbdc..dfc0dddc616 100644 --- a/gdb/go-lang.c +++ b/gdb/go-lang.c @@ -638,6 +638,10 @@ public: && go_classify_struct_type (type) == GO_TYPE_STRING); } + /* See language.h. */ + + bool store_sym_names_in_linkage_form_p () const override + { return true; } }; /* Single instance of the Go language class. */