Commit 855b4aae by Ian Lance Taylor

cmd/go: update -DGOPKGPATH to use current pkgpath encoding

This will need to be done in the gc version too, probably more cleverly.
This version will ensure that the next GCC release works correctly
when using the GCC version of the go tool.

Updates golang/go#37272

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/219817
parent ce7b39d0
8505defaa91ecc5b42afd02eb335981e8b02b288 d5d00d310ec33aeb18f33f807956ec0c4eeea6bb
The first line of this file holds the git revision number of the last The first line of this file holds the git revision number of the last
merge done from the gofrontend repository. merge done from the gofrontend repository.
...@@ -596,14 +596,28 @@ func gccgoPkgpath(p *load.Package) string { ...@@ -596,14 +596,28 @@ func gccgoPkgpath(p *load.Package) string {
return p.ImportPath return p.ImportPath
} }
// gccgoCleanPkgpath returns the form of p's pkgpath that gccgo uses
// for symbol names. This is like gccgoPkgpathToSymbolNew in cmd/cgo/out.go.
func gccgoCleanPkgpath(p *load.Package) string { func gccgoCleanPkgpath(p *load.Package) string {
clean := func(r rune) rune { ppath := gccgoPkgpath(p)
bsl := []byte{}
changed := false
for _, c := range []byte(ppath) {
switch { switch {
case 'A' <= r && r <= 'Z', 'a' <= r && r <= 'z', case 'A' <= c && c <= 'Z', 'a' <= c && c <= 'z',
'0' <= r && r <= '9': '0' <= c && c <= '9', c == '_':
return r bsl = append(bsl, c)
case c == '.':
bsl = append(bsl, ".x2e"...)
changed = true
default:
encbytes := []byte(fmt.Sprintf("..z%02x", c))
bsl = append(bsl, encbytes...)
changed = true
} }
return '_'
} }
return strings.Map(clean, gccgoPkgpath(p)) if !changed {
return ppath
}
return string(bsl)
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment