This patch to the Go frontend and libgo changes the name mangling convention. The previous convention (which was actually the second one) turned out to be ambiguous when the path to a package contained a dot; this is a common case, as many package paths are of the form "github.com/name/package". The previous convention also did not support package paths that start with a digit, which is less common but does occur (https://golang.org/issue/41862). This patch rewrites and somewhat simplifies the naming convention. Now dot is used only as a separator character and for special names. Actual name mangling, for representing Unicode characters and other non-ASCII alphanumerics, is now done with an underscore. This has the advantage of being simpler, in that it avoids the overloading that the previous convention applied to dot. It has the disadvantage that mangled symbol names look somewhat like valid Go names, since valid Go names can of course contain underscore. Still, it seems like the best choice. This patch increments the libgo major version number, since many symbol names have changed. Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu. Committed to mainline. Ian