libgo: better cmd/cgo handling for '.' in pkgpath

Updates cgo's gccgoPkgpathToSymbolNew() to bring it into
    conformance with the way that gccgo now handles package
    paths with embedded dots (see CL 200838). See also
    https://gcc.gnu.org/PR61880, a related bug. This CL is a
    copy of CL 207957 in the main Go repo.
    
    Updates golang/go#35623.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/207977

From-SVN: r278470
This commit is contained in:
Ian Lance Taylor 2019-11-19 23:04:08 +00:00
parent fce6467b1e
commit 0c6ce0ae55
2 changed files with 4 additions and 2 deletions

View File

@ -1,4 +1,4 @@
25d5e9dca49ad3f49393b254dd87f8df51487c65
245904ac148f15db530fb8d50f526c47d08024c5
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.

View File

@ -1318,8 +1318,10 @@ func gccgoPkgpathToSymbolNew(ppath string) string {
for _, c := range []byte(ppath) {
switch {
case 'A' <= c && c <= 'Z', 'a' <= c && c <= 'z',
'0' <= c && c <= '9', c == '_', c == '.':
'0' <= c && c <= '9', c == '_':
bsl = append(bsl, c)
case c == '.':
bsl = append(bsl, ".x2e"...)
default:
changed = true
encbytes := []byte(fmt.Sprintf("..z%02x", c))