Backport gofrontend patches

We need them to unblock ability to bootstrap golang using gccgo.

Signed-off-by: David Abdurachmanov <david.abdurachmanov@sifive.com>
This commit is contained in:
David Abdurachmanov 2020-02-22 08:44:30 +02:00
parent 8c9b12bd51
commit b610138c5d
Signed by: davidlt
GPG Key ID: 8B7F1DA0E2C9FDBB
3 changed files with 252 additions and 0 deletions

View File

@ -0,0 +1,69 @@
From 855b4aaeabdcddce04ff9295c4b0e6c7aa6db96b Mon Sep 17 00:00:00 2001
From: Ian Lance Taylor <iant@golang.org>
Date: Mon, 17 Feb 2020 18:16:41 -0800
Subject: [PATCH] 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
---
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)
}
--
2.9.3

View File

@ -265,6 +265,9 @@ Patch9: gcc10-Wno-format-security.patch
Patch10: gcc10-rh1574936.patch
Patch11: gcc10-d-shared-libphobos.patch
Patch20: libgo-install-internal-reflectlite-gox.patch
Patch21: cmd-go-update-DGOPKGPATH-to-use-current-pkgpath-encoding.patch
# On ARM EABI systems, we do want -gnueabi to be part of the
# target triple.
%ifnarch %{arm}
@ -776,6 +779,10 @@ to NVidia PTX capable devices if available.
%endif
%patch11 -p0 -b .d-shared-libphobos~
# These will be part of 0.9 build (taken from upstream branch)
%patch20 -p1 -b .libgo-fix-bootstrap~
%patch21 -p1 -b .fix-cmd-go~
echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE
cp -a libstdc++-v3/config/cpu/i{4,3}86/atomicity.h

View File

@ -0,0 +1,176 @@
From 72700543b67561ab6a466e93b4c0d4fa8e6530e6 Mon Sep 17 00:00:00 2001
From: Ian Lance Taylor <iant@golang.org>
Date: Sat, 15 Feb 2020 15:57:29 -0800
Subject: [PATCH] libgo: install internal/reflectlite.gox
This makes it possible to use gccgo to bootstrap Go 1.14.
If we don't install this, gccgo can't compile the sort package.
Fixes GCC PR go/93679
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/219617
---
gcc/go/gofrontend/MERGE | 2 +-
libgo/Makefile.am | 5 ++++
libgo/Makefile.in | 63 ++++++++++++++++++++++++++++++++++++++-----------
3 files changed, 55 insertions(+), 15 deletions(-)
diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE
index e67d792..47dd5fb 100644
--- a/gcc/go/gofrontend/MERGE
+++ b/gcc/go/gofrontend/MERGE
@@ -1,4 +1,4 @@
-f368afbbd466941dcc6717412d7182e122b40c93
+8505defaa91ecc5b42afd02eb335981e8b02b288
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
diff --git a/libgo/Makefile.am b/libgo/Makefile.am
index 56d38f5..dea09de 100644
--- a/libgo/Makefile.am
+++ b/libgo/Makefile.am
@@ -397,6 +397,11 @@ toolexeclibgounicode_DATA = \
unicode/utf16.gox \
unicode/utf8.gox
+# Some internal packages are needed to bootstrap the gc toolchain.
+toolexeclibgointernaldir = $(toolexeclibgodir)/internal
+toolexeclibgointernal_DATA = \
+ internal/reflectlite.gox
+
# Some packages are only needed for tests, so unlike the other
# internal packages nothing will explicitly depend on them.
# Force them to be built.
diff --git a/libgo/Makefile.in b/libgo/Makefile.in
index 0ff6ba1..607b88c 100644
--- a/libgo/Makefile.in
+++ b/libgo/Makefile.in
@@ -174,6 +174,7 @@ am__installdirs = "$(DESTDIR)$(toolexeclibdir)" \
"$(DESTDIR)$(toolexeclibgoimagedir)" \
"$(DESTDIR)$(toolexeclibgoimagecolordir)" \
"$(DESTDIR)$(toolexeclibgoindexdir)" \
+ "$(DESTDIR)$(toolexeclibgointernaldir)" \
"$(DESTDIR)$(toolexeclibgoiodir)" \
"$(DESTDIR)$(toolexeclibgologdir)" \
"$(DESTDIR)$(toolexeclibgomathdir)" \
@@ -335,13 +336,14 @@ DATA = $(noinst_DATA) $(toolexeclibgo_DATA) \
$(toolexeclibgoencoding_DATA) $(toolexeclibgogo_DATA) \
$(toolexeclibgohash_DATA) $(toolexeclibgohtml_DATA) \
$(toolexeclibgoimage_DATA) $(toolexeclibgoimagecolor_DATA) \
- $(toolexeclibgoindex_DATA) $(toolexeclibgoio_DATA) \
- $(toolexeclibgolog_DATA) $(toolexeclibgomath_DATA) \
- $(toolexeclibgomime_DATA) $(toolexeclibgonet_DATA) \
- $(toolexeclibgonethttp_DATA) $(toolexeclibgonetrpc_DATA) \
- $(toolexeclibgoos_DATA) $(toolexeclibgopath_DATA) \
- $(toolexeclibgoregexp_DATA) $(toolexeclibgoruntime_DATA) \
- $(toolexeclibgosync_DATA) $(toolexeclibgotesting_DATA) \
+ $(toolexeclibgoindex_DATA) $(toolexeclibgointernal_DATA) \
+ $(toolexeclibgoio_DATA) $(toolexeclibgolog_DATA) \
+ $(toolexeclibgomath_DATA) $(toolexeclibgomime_DATA) \
+ $(toolexeclibgonet_DATA) $(toolexeclibgonethttp_DATA) \
+ $(toolexeclibgonetrpc_DATA) $(toolexeclibgoos_DATA) \
+ $(toolexeclibgopath_DATA) $(toolexeclibgoregexp_DATA) \
+ $(toolexeclibgoruntime_DATA) $(toolexeclibgosync_DATA) \
+ $(toolexeclibgotesting_DATA) \
$(toolexeclibgotestinginternal_DATA) $(toolexeclibgotext_DATA) \
$(toolexeclibgotexttemplate_DATA) $(toolexeclibgounicode_DATA)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
@@ -859,6 +861,12 @@ toolexeclibgounicode_DATA = \
unicode/utf8.gox
+# Some internal packages are needed to bootstrap the gc toolchain.
+toolexeclibgointernaldir = $(toolexeclibgodir)/internal
+toolexeclibgointernal_DATA = \
+ internal/reflectlite.gox
+
+
# Some packages are only needed for tests, so unlike the other
# internal packages nothing will explicitly depend on them.
# Force them to be built.
@@ -1850,6 +1858,27 @@ uninstall-toolexeclibgoindexDATA:
@list='$(toolexeclibgoindex_DATA)'; test -n "$(toolexeclibgoindexdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(toolexeclibgoindexdir)'; $(am__uninstall_files_from_dir)
+install-toolexeclibgointernalDATA: $(toolexeclibgointernal_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(toolexeclibgointernal_DATA)'; test -n "$(toolexeclibgointernaldir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(toolexeclibgointernaldir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(toolexeclibgointernaldir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibgointernaldir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibgointernaldir)" || exit $$?; \
+ done
+
+uninstall-toolexeclibgointernalDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(toolexeclibgointernal_DATA)'; test -n "$(toolexeclibgointernaldir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(toolexeclibgointernaldir)'; $(am__uninstall_files_from_dir)
install-toolexeclibgoioDATA: $(toolexeclibgoio_DATA)
@$(NORMAL_INSTALL)
@list='$(toolexeclibgoio_DATA)'; test -n "$(toolexeclibgoiodir)" || list=; \
@@ -2319,7 +2348,7 @@ all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(DATA) config.h \
all-local
installdirs: installdirs-recursive
installdirs-am:
- for dir in "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(toolexeclibgodir)" "$(DESTDIR)$(toolexeclibgoarchivedir)" "$(DESTDIR)$(toolexeclibgocompressdir)" "$(DESTDIR)$(toolexeclibgocontainerdir)" "$(DESTDIR)$(toolexeclibgocryptodir)" "$(DESTDIR)$(toolexeclibgocryptox509dir)" "$(DESTDIR)$(toolexeclibgodatabasedir)" "$(DESTDIR)$(toolexeclibgodatabasesqldir)" "$(DESTDIR)$(toolexeclibgodebugdir)" "$(DESTDIR)$(toolexeclibgoencodingdir)" "$(DESTDIR)$(toolexeclibgogodir)" "$(DESTDIR)$(toolexeclibgohashdir)" "$(DESTDIR)$(toolexeclibgohtmldir)" "$(DESTDIR)$(toolexeclibgoimagedir)" "$(DESTDIR)$(toolexeclibgoimagecolordir)" "$(DESTDIR)$(toolexeclibgoindexdir)" "$(DESTDIR)$(toolexeclibgoiodir)" "$(DESTDIR)$(toolexeclibgologdir)" "$(DESTDIR)$(toolexeclibgomathdir)" "$(DESTDIR)$(toolexeclibgomimedir)" "$(DESTDIR)$(toolexeclibgonetdir)" "$(DESTDIR)$(toolexeclibgonethttpdir)" "$(DESTDIR)$(toolexeclibgonetrpcdir)" "$(DESTDIR)$(toolexeclibgoosdir)" "$(DESTDIR)$(toolexeclibgopathdir)" "$(DESTDIR)$(toolexeclibgoregexpdir)" "$(DESTDIR)$(toolexeclibgoruntimedir)" "$(DESTDIR)$(toolexeclibgosyncdir)" "$(DESTDIR)$(toolexeclibgotestingdir)" "$(DESTDIR)$(toolexeclibgotestinginternaldir)" "$(DESTDIR)$(toolexeclibgotextdir)" "$(DESTDIR)$(toolexeclibgotexttemplatedir)" "$(DESTDIR)$(toolexeclibgounicodedir)"; do \
+ for dir in "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(toolexeclibgodir)" "$(DESTDIR)$(toolexeclibgoarchivedir)" "$(DESTDIR)$(toolexeclibgocompressdir)" "$(DESTDIR)$(toolexeclibgocontainerdir)" "$(DESTDIR)$(toolexeclibgocryptodir)" "$(DESTDIR)$(toolexeclibgocryptox509dir)" "$(DESTDIR)$(toolexeclibgodatabasedir)" "$(DESTDIR)$(toolexeclibgodatabasesqldir)" "$(DESTDIR)$(toolexeclibgodebugdir)" "$(DESTDIR)$(toolexeclibgoencodingdir)" "$(DESTDIR)$(toolexeclibgogodir)" "$(DESTDIR)$(toolexeclibgohashdir)" "$(DESTDIR)$(toolexeclibgohtmldir)" "$(DESTDIR)$(toolexeclibgoimagedir)" "$(DESTDIR)$(toolexeclibgoimagecolordir)" "$(DESTDIR)$(toolexeclibgoindexdir)" "$(DESTDIR)$(toolexeclibgointernaldir)" "$(DESTDIR)$(toolexeclibgoiodir)" "$(DESTDIR)$(toolexeclibgologdir)" "$(DESTDIR)$(toolexeclibgomathdir)" "$(DESTDIR)$(toolexeclibgomimedir)" "$(DESTDIR)$(toolexeclibgonetdir)" "$(DESTDIR)$(toolexeclibgonethttpdir)" "$(DESTDIR)$(toolexeclibgonetrpcdir)" "$(DESTDIR)$(toolexeclibgoosdir)" "$(DESTDIR)$(toolexeclibgopathdir)" "$(DESTDIR)$(toolexeclibgoregexpdir)" "$(DESTDIR)$(toolexeclibgoruntimedir)" "$(DESTDIR)$(toolexeclibgosyncdir)" "$(DESTDIR)$(toolexeclibgotestingdir)" "$(DESTDIR)$(toolexeclibgotestinginternaldir)" "$(DESTDIR)$(toolexeclibgotextdir)" "$(DESTDIR)$(toolexeclibgotexttemplatedir)" "$(DESTDIR)$(toolexeclibgounicodedir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-recursive
@@ -2401,7 +2430,8 @@ install-exec-am: install-exec-local install-toolexeclibLIBRARIES \
install-toolexeclibgohashDATA install-toolexeclibgohtmlDATA \
install-toolexeclibgoimageDATA \
install-toolexeclibgoimagecolorDATA \
- install-toolexeclibgoindexDATA install-toolexeclibgoioDATA \
+ install-toolexeclibgoindexDATA \
+ install-toolexeclibgointernalDATA install-toolexeclibgoioDATA \
install-toolexeclibgologDATA install-toolexeclibgomathDATA \
install-toolexeclibgomimeDATA install-toolexeclibgonetDATA \
install-toolexeclibgonethttpDATA \
@@ -2470,8 +2500,10 @@ uninstall-am: uninstall-toolexeclibLIBRARIES \
uninstall-toolexeclibgohtmlDATA \
uninstall-toolexeclibgoimageDATA \
uninstall-toolexeclibgoimagecolorDATA \
- uninstall-toolexeclibgoindexDATA uninstall-toolexeclibgoioDATA \
- uninstall-toolexeclibgologDATA uninstall-toolexeclibgomathDATA \
+ uninstall-toolexeclibgoindexDATA \
+ uninstall-toolexeclibgointernalDATA \
+ uninstall-toolexeclibgoioDATA uninstall-toolexeclibgologDATA \
+ uninstall-toolexeclibgomathDATA \
uninstall-toolexeclibgomimeDATA uninstall-toolexeclibgonetDATA \
uninstall-toolexeclibgonethttpDATA \
uninstall-toolexeclibgonetrpcDATA \
@@ -2512,7 +2544,8 @@ uninstall-am: uninstall-toolexeclibLIBRARIES \
install-toolexeclibgohashDATA install-toolexeclibgohtmlDATA \
install-toolexeclibgoimageDATA \
install-toolexeclibgoimagecolorDATA \
- install-toolexeclibgoindexDATA install-toolexeclibgoioDATA \
+ install-toolexeclibgoindexDATA \
+ install-toolexeclibgointernalDATA install-toolexeclibgoioDATA \
install-toolexeclibgologDATA install-toolexeclibgomathDATA \
install-toolexeclibgomimeDATA install-toolexeclibgonetDATA \
install-toolexeclibgonethttpDATA \
@@ -2543,8 +2576,10 @@ uninstall-am: uninstall-toolexeclibLIBRARIES \
uninstall-toolexeclibgohtmlDATA \
uninstall-toolexeclibgoimageDATA \
uninstall-toolexeclibgoimagecolorDATA \
- uninstall-toolexeclibgoindexDATA uninstall-toolexeclibgoioDATA \
- uninstall-toolexeclibgologDATA uninstall-toolexeclibgomathDATA \
+ uninstall-toolexeclibgoindexDATA \
+ uninstall-toolexeclibgointernalDATA \
+ uninstall-toolexeclibgoioDATA uninstall-toolexeclibgologDATA \
+ uninstall-toolexeclibgomathDATA \
uninstall-toolexeclibgomimeDATA uninstall-toolexeclibgonetDATA \
uninstall-toolexeclibgonethttpDATA \
uninstall-toolexeclibgonetrpcDATA \
--
2.9.3