aboutsummaryrefslogtreecommitdiff
path: root/gcc/go/gofrontend/gogo.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/go/gofrontend/gogo.h')
-rw-r--r--gcc/go/gofrontend/gogo.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/gcc/go/gofrontend/gogo.h b/gcc/go/gofrontend/gogo.h
index 23d1f08..905f48d 100644
--- a/gcc/go/gofrontend/gogo.h
+++ b/gcc/go/gofrontend/gogo.h
@@ -202,6 +202,27 @@ class Gogo
}
// Given a name which may or may not have been hidden, return the
+ // name to use within a mangled symbol name.
+ static std::string
+ mangle_possibly_hidden_name(const std::string& name)
+ {
+ // FIXME: This adds in pkgpath twice for hidden symbols, which is
+ // less than ideal.
+ std::string n;
+ if (!Gogo::is_hidden_name(name))
+ n = name;
+ else
+ {
+ n = ".";
+ std::string pkgpath = Gogo::hidden_name_pkgpath(name);
+ n.append(Gogo::pkgpath_for_symbol(pkgpath));
+ n.append(1, '.');
+ n.append(Gogo::unpack_hidden_name(name));
+ }
+ return n;
+ }
+
+ // Given a name which may or may not have been hidden, return the
// name to use in an error message.
static std::string
message_name(const std::string& name);