diff options
author | Andrew Burgess <andrew.burgess@embecosm.com> | 2020-07-08 11:09:45 +0100 |
---|---|---|
committer | Andrew Burgess <andrew.burgess@embecosm.com> | 2020-09-16 10:16:49 +0100 |
commit | bf92aec5884b64a73a334aea875c68e8d1f959fc (patch) | |
tree | 16b06fd1fbadc8bddf2880b0c2f761a26c5a1ded /gdb | |
parent | d3355e4dec4966ea32d47fc004e1bf8d9b3a3510 (diff) | |
download | gdb-bf92aec5884b64a73a334aea875c68e8d1f959fc.zip gdb-bf92aec5884b64a73a334aea875c68e8d1f959fc.tar.gz gdb-bf92aec5884b64a73a334aea875c68e8d1f959fc.tar.bz2 |
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.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/dwarf2/read.c | 6 | ||||
-rw-r--r-- | gdb/go-lang.c | 4 |
3 files changed, 11 insertions, 6 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index ac4ec6f..ce9d3ae 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,12 @@ 2020-09-16 Andrew Burgess <andrew.burgess@embecosm.com> + * 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 <andrew.burgess@embecosm.com> + * ada-lang.c (ada_language_data): Remove la_store_sym_names_in_linkage_form_p initializer. (ada_language::store_sym_names_in_linkage_form_p): New member diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index 16001aa..d0398ef 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 ed18f01..dfc0ddd 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. */ |