diff --git a/cmd-go-update-DGOPKGPATH-to-use-current-pkgpath-encoding.patch b/cmd-go-update-DGOPKGPATH-to-use-current-pkgpath-encoding.patch new file mode 100644 index 0000000..e663f91 --- /dev/null +++ b/cmd-go-update-DGOPKGPATH-to-use-current-pkgpath-encoding.patch @@ -0,0 +1,69 @@ +From 855b4aaeabdcddce04ff9295c4b0e6c7aa6db96b Mon Sep 17 00:00:00 2001 +From: Ian Lance Taylor +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 + diff --git a/gcc.spec b/gcc.spec index 49d8636..7d8cdf9 100644 --- a/gcc.spec +++ b/gcc.spec @@ -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 diff --git a/libgo-install-internal-reflectlite-gox.patch b/libgo-install-internal-reflectlite-gox.patch new file mode 100644 index 0000000..18e53ac --- /dev/null +++ b/libgo-install-internal-reflectlite-gox.patch @@ -0,0 +1,176 @@ +From 72700543b67561ab6a466e93b4c0d4fa8e6530e6 Mon Sep 17 00:00:00 2001 +From: Ian Lance Taylor +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 +