public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r10-6712] cmd/go: update -DGOPKGPATH to use current pkgpath encoding
@ 2020-02-18 20:03 Ian Lance Taylor
  0 siblings, 0 replies; only message in thread
From: Ian Lance Taylor @ 2020-02-18 20:03 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:855b4aaeabdcddce04ff9295c4b0e6c7aa6db96b

commit r10-6712-g855b4aaeabdcddce04ff9295c4b0e6c7aa6db96b
Author: Ian Lance Taylor <iant@golang.org>
Date:   Mon Feb 17 18:16:41 2020 -0800

    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

Diff:
---
 gcc/go/gofrontend/MERGE                |  2 +-
 libgo/go/cmd/go/internal/work/gccgo.go | 26 ++++++++++++++++++++------
 2 files changed, 21 insertions(+), 7 deletions(-)

diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE
index 47dd5fb..ce10ee1 100644
--- a/gcc/go/gofrontend/MERGE
+++ b/gcc/go/gofrontend/MERGE
@@ -1,4 +1,4 @@
-8505defaa91ecc5b42afd02eb335981e8b02b288
+d5d00d310ec33aeb18f33f807956ec0c4eeea6bb
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
diff --git a/libgo/go/cmd/go/internal/work/gccgo.go b/libgo/go/cmd/go/internal/work/gccgo.go
index f6fa17d..63d5c62 100644
--- a/libgo/go/cmd/go/internal/work/gccgo.go
+++ b/libgo/go/cmd/go/internal/work/gccgo.go
@@ -596,14 +596,28 @@ func gccgoPkgpath(p *load.Package) string {
 	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 {
-	clean := func(r rune) rune {
+	ppath := gccgoPkgpath(p)
+	bsl := []byte{}
+	changed := false
+	for _, c := range []byte(ppath) {
 		switch {
-		case 'A' <= r && r <= 'Z', 'a' <= r && r <= 'z',
-			'0' <= r && r <= '9':
-			return r
+		case 'A' <= c && c <= 'Z', 'a' <= c && c <= 'z',
+			'0' <= c && c <= '9', c == '_':
+			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)
 }


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2020-02-18 20:03 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-18 20:03 [gcc r10-6712] cmd/go: update -DGOPKGPATH to use current pkgpath encoding Ian Lance Taylor

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).