* libgo patch committed: Update to Go1.12beta2
@ 2019-01-18 19:05 Ian Lance Taylor
2019-01-21 12:22 ` Matthias Klose
0 siblings, 1 reply; 4+ messages in thread
From: Ian Lance Taylor @ 2019-01-18 19:05 UTC (permalink / raw)
To: gcc-patches, gofrontend-dev
[-- Attachment #1: Type: text/plain, Size: 784 bytes --]
I have committed a patch to update libgo to the Go 1.12beta2 release.
As usual this sort of update is too large to include all changes in
this e-mail. I've included changes to gccgo-specific files below.
Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu. Committed
to mainline.
Ian
gotools/
2019-01-18 Ian Lance Taylor <iant@golang.org>
* Makefile.am (go_cmd_vet_files): Update for Go1.12beta2 release.
(GOTOOLS_TEST_TIMEOUT): Increase to 600.
(check-runtime): Export LD_LIBRARY_PATH before computing GOARCH
and GOOS.
(check-vet): Copy golang.org/x/tools into check-vet-dir.
* Makefile.in: Regenerate.
gcc/testsuite/
2019-01-18 Ian Lance Taylor <iant@golang.org>
* go.go-torture/execute/names-1.go: Stop using debug/xcoff, which
is no longer externally visible.
[-- Attachment #2: patch.txt --]
[-- Type: text/plain, Size: 34406 bytes --]
Index: gcc/go/gofrontend/MERGE
===================================================================
--- gcc/go/gofrontend/MERGE (revision 268078)
+++ gcc/go/gofrontend/MERGE (working copy)
@@ -1,4 +1,4 @@
-d16e9181a760796802c067730bb030b92b63fb2c
+c76ba3014e42cc6adc3d43709bba28c5ad7a6ba2
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
Index: gotools/Makefile.am
===================================================================
--- gotools/Makefile.am (revision 268078)
+++ gotools/Makefile.am (working copy)
@@ -70,31 +70,8 @@ go_cmd_cgo_files = \
$(cmdsrcdir)/cgo/util.go
go_cmd_vet_files = \
- $(cmdsrcdir)/vet/asmdecl.go \
- $(cmdsrcdir)/vet/assign.go \
- $(cmdsrcdir)/vet/atomic.go \
- $(cmdsrcdir)/vet/bool.go \
- $(cmdsrcdir)/vet/buildtag.go \
- $(cmdsrcdir)/vet/cgo.go \
- $(cmdsrcdir)/vet/composite.go \
- $(cmdsrcdir)/vet/copylock.go \
- $(cmdsrcdir)/vet/deadcode.go \
- $(cmdsrcdir)/vet/dead.go \
$(cmdsrcdir)/vet/doc.go \
- $(cmdsrcdir)/vet/httpresponse.go \
- $(cmdsrcdir)/vet/lostcancel.go \
- $(cmdsrcdir)/vet/main.go \
- $(cmdsrcdir)/vet/method.go \
- $(cmdsrcdir)/vet/nilfunc.go \
- $(cmdsrcdir)/vet/print.go \
- $(cmdsrcdir)/vet/rangeloop.go \
- $(cmdsrcdir)/vet/shadow.go \
- $(cmdsrcdir)/vet/shift.go \
- $(cmdsrcdir)/vet/structtag.go \
- $(cmdsrcdir)/vet/tests.go \
- $(cmdsrcdir)/vet/types.go \
- $(cmdsrcdir)/vet/unsafeptr.go \
- $(cmdsrcdir)/vet/unused.go
+ $(cmdsrcdir)/vet/main.go
go_cmd_buildid_files = \
$(cmdsrcdir)/buildid/buildid.go \
@@ -163,7 +140,7 @@ uninstall-local:
GOTESTFLAGS =
# Number of seconds before tests time out.
-GOTOOLS_TEST_TIMEOUT = 480
+GOTOOLS_TEST_TIMEOUT = 600
# Run tests using the go tool, and frob the output to look like that
# generated by DejaGNU. The main output of this is two files:
@@ -256,6 +233,7 @@ check-runtime: go$(EXEEXT) $(noinst_PROG
$(MKDIR_P) check-runtime-dir
@abs_libgodir=`cd $(libgodir) && $(PWD_COMMAND)`; \
LD_LIBRARY_PATH=`echo $${abs_libgodir}/.libs:$${LD_LIBRARY_PATH} | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; \
+ export LD_LIBRARY_PATH; \
GOARCH=`$(abs_builddir)/go$(EXEEXT) env GOARCH`; \
GOOS=`$(abs_builddir)/go$(EXEEXT) env GOOS`; \
files=`$(SHELL) $(libgosrcdir)/../match.sh --goarch=$${GOARCH} --goos=$${GOOS} --srcdir=$(libgosrcdir)/runtime --extrafiles="$(libgodir)/runtime_sysinfo.go $(libgodir)/sigtab.go" --tag=libffi`; \
@@ -299,10 +277,11 @@ check-carchive-test: go$(EXEEXT) $(noins
# check-vet runs `go test cmd/vet` in our environment.
check-vet: go$(EXEEXT) $(noinst_PROGRAMS) check-head check-gccgo check-gcc
rm -rf check-vet-dir cmd_vet-testlog
- $(MKDIR_P) check-vet-dir/src/cmd/internal
+ $(MKDIR_P) check-vet-dir/src/cmd/internal check-vet-dir/src/cmd/vendor/golang.org/x
cp -r $(cmdsrcdir)/vet check-vet-dir/src/cmd/
cp -r $(cmdsrcdir)/internal/objabi check-vet-dir/src/cmd/internal
cp $(libgodir)/objabi.go check-vet-dir/src/cmd/internal/objabi/
+ cp -r $(libgosrcdir)/golang.org/x/tools check-vet-dir/src/cmd/vendor/golang.org/x/
@abs_libgodir=`cd $(libgodir) && $(PWD_COMMAND)`; \
abs_checkdir=`cd check-vet-dir && $(PWD_COMMAND)`; \
echo "cd check-vet-dir/src/cmd/vet && $(ECHO_ENV) GOPATH=$${abs_checkdir} $(abs_builddir)/go$(EXEEXT) test -test.short -test.timeout=$(GOTOOLS_TEST_TIMEOUT)s -test.v" > cmd_vet-testlog
Index: gcc/testsuite/go.go-torture/execute/names-1.go
===================================================================
--- gcc/testsuite/go.go-torture/execute/names-1.go (revision 268078)
+++ gcc/testsuite/go.go-torture/execute/names-1.go (working copy)
@@ -7,9 +7,9 @@ import (
"debug/elf"
"debug/macho"
"debug/pe"
- "debug/xcoff"
"fmt"
"os"
+ "runtime"
"strings"
)
@@ -61,6 +61,12 @@ func Function3(out *bytes.Buffer) {
}
func main() {
+ if runtime.GOOS == "aix" {
+ // Not supported on AIX until there is an externally
+ // visible version of internal/xcoff.
+ return
+ }
+
var b bytes.Buffer
Function1(&b)
Function2(&b)
@@ -95,10 +101,6 @@ func checkFile(f *os.File) {
for _, psym := range pf.Symbols {
syms = append(syms, psym.Name)
}
- } else if xf, err := xcoff.NewFile(f); err == nil {
- for _, xsym := range xf.Symbols {
- syms = append(syms, xsym.Name)
- }
} else {
fmt.Println("checksyms: could not parse executable")
fmt.Println("UNSUPPORTED: checksyms")
Index: libgo/MERGE
===================================================================
--- libgo/MERGE (revision 268078)
+++ libgo/MERGE (working copy)
@@ -1,4 +1,4 @@
-26957168c4c0cdcc7ca4f0b19d0eb19474d224ac
+4b3f04c63b5b1a1bbc4dfd71c34341ea4e935115
The first line of this file holds the git revision number of the
last merge done from the master library sources.
Index: libgo/Makefile.am
===================================================================
--- libgo/Makefile.am (revision 268078)
+++ libgo/Makefile.am (working copy)
@@ -217,8 +217,7 @@ toolexeclibgodebug_DATA = \
debug/gosym.gox \
debug/macho.gox \
debug/pe.gox \
- debug/plan9obj.gox \
- debug/xcoff.gox
+ debug/plan9obj.gox
toolexeclibgoencodingdir = $(toolexeclibgodir)/encoding
@@ -394,8 +393,8 @@ toolexeclibgounicode_DATA = \
# internal packages nothing will explicitly depend on them.
# Force them to be built.
noinst_DATA = \
- golang_org/x/net/internal/nettest.gox \
- golang_org/x/net/nettest.gox \
+ internal/x/net/internal/nettest.gox \
+ internal/x/net/nettest.gox \
internal/testenv.gox \
internal/trace.gox \
net/internal/socktest.gox \
@@ -536,7 +535,7 @@ cpugen.go: s-cpu; @true
s-cpu: Makefile
rm -f cpugen.go.tmp
echo "package cpu" > cpugen.go.tmp
- echo "const CacheLineSize = `$(SHELL) $(srcdir)/goarch.sh $(GOARCH) cachelinesize`" >> cpugen.go.tmp
+ echo "const CacheLinePadSize = `$(SHELL) $(srcdir)/goarch.sh $(GOARCH) cachelinesize`" >> cpugen.go.tmp
$(SHELL) $(srcdir)/mvifdiff.sh cpugen.go.tmp cpugen.go
$(STAMP) $@
@@ -554,7 +553,7 @@ s-objabi: Makefile
echo 'const defaultGOARCH = runtime.GOARCH' >> objabi.go.tmp
echo 'const defaultGO_EXTLINK_ENABLED = ``' >> objabi.go.tmp
echo 'const version = `'`cat $(srcdir)/VERSION | sed 1q`' '`$(GOC) --version | sed 1q`'`' >> objabi.go.tmp
- echo 'const stackGuardMultiplier = 1' >> objabi.go.tmp
+ echo 'const stackGuardMultiplierDefault = 1' >> objabi.go.tmp
echo 'const goexperiment = ``' >> objabi.go.tmp
$(SHELL) $(srcdir)/mvifdiff.sh objabi.go.tmp objabi.go
$(STAMP) $@
@@ -715,16 +714,14 @@ PACKAGES = $(shell cat $(srcdir)/libgo-p
libgo_go_objs = \
$(addsuffix .lo,$(PACKAGES)) \
- bytes/index.lo \
internal/bytealg/bytealg.lo \
reflect/makefunc_ffi_c.lo \
- strings/index.lo \
$(syscall_lib_clone_lo) \
syscall/errno.lo \
syscall/signame.lo \
syscall/wait.lo \
- $(golang_org_x_net_lif_lo) \
- $(golang_org_x_net_route_lo) \
+ $(internal_x_net_lif_lo) \
+ $(internal_x_net_route_lo) \
log/syslog/syslog_c.lo \
$(os_lib_inotify_lo) \
runtime/internal/atomic_c.lo \
@@ -807,7 +804,7 @@ BUILDDEPS = \
BUILDPACKAGE = \
$(MKDIR_P) $(@D); \
files=`echo $^ | sed -e 's/[^ ]*\.gox//g' -e 's/[^ ]*\.dep//'`; \
- $(LTGOCOMPILE) -I . -c -fgo-pkgpath=`echo $@ | sed -e 's/.lo$$//' -e 's|golang_org|vendor/golang_org|'` $($(subst -,_,$(subst .,_,$(subst /,_,$@)))_GOCFLAGS) -o $@ $$files
+ $(LTGOCOMPILE) -I . -c -fgo-pkgpath=`echo $@ | sed -e 's/.lo$$//'` $($(subst -,_,$(subst .,_,$(subst /,_,$@)))_GOCFLAGS) -o $@ $$files
# How to build a .gox file from a .lo file.
# Matching .o file can either be in the same directory as the .lo (non-PIC
@@ -990,6 +987,7 @@ extra_check_libs_cmd_go_internal_cache =
extra_check_libs_cmd_go_internal_generate = $(abs_builddir)/libgotool.a
extra_check_libs_cmd_go_internal_get = $(abs_builddir)/libgotool.a
extra_check_libs_cmd_go_internal_load = $(abs_builddir)/libgotool.a
+extra_check_libs_cmd_go_internal_lockedfile = $(abs_builddir)/libgotool.a
extra_check_libs_cmd_go_internal_imports = $(abs_builddir)/libgotool.a
extra_check_libs_cmd_go_internal_modconv = $(abs_builddir)/libgotool.a
extra_check_libs_cmd_go_internal_modfetch = $(abs_builddir)/libgotool.a
@@ -1007,13 +1005,7 @@ extra_check_libs_cmd_vet_internal_cfg =
# FIXME: The following C files may as well move to the runtime
# directory and be treated like other C files.
-# Use C code to speed up {bytes,strings}.IndexByte and friends.
-bytes/index.lo: go/bytes/indexbyte.c runtime.inc
- @$(MKDIR_P) bytes
- $(LTCOMPILE) -c -o $@ $(srcdir)/go/bytes/indexbyte.c
-strings/index.lo: go/strings/indexbyte.c runtime.inc
- @$(MKDIR_P) strings
- $(LTCOMPILE) -c -o $@ $(srcdir)/go/strings/indexbyte.c
+# Use C code to speed up internal/bytealg.IndexByte and friends.
internal/bytealg/bytealg.lo: go/internal/bytealg/bytealg.c runtime.inc
@$(MKDIR_P) internal/bytealg
$(LTCOMPILE) -c -o $@ $(srcdir)/go/internal/bytealg/bytealg.c
@@ -1070,34 +1062,34 @@ endif
if LIBGO_IS_BSD
-# Build golang_org/x/net/route only on BSD systems.
+# Build internal/x/net/route only on BSD systems.
-$(eval $(call PACKAGE_template,golang_org/x/net/route))
+$(eval $(call PACKAGE_template,internal/x/net/route))
-golang_org_x_net_route_lo = \
- golang_org/x/net/route.lo
-golang_org_x_net_route_check = \
- golang_org/x/net/route/check
+internal_x_net_route_lo = \
+ internal/x/net/route.lo
+internal_x_net_route_check = \
+ internal/x/net/route/check
endif
if LIBGO_IS_SOLARIS
-# Build golang_org/x/net/lif only on Solaris systems.
+# Build internal/x/net/lif only on Solaris systems.
-$(eval $(call PACKAGE_template,golang_org/x/net/lif))
+$(eval $(call PACKAGE_template,internal/x/net/lif))
-golang_org_x_net_lif_lo = \
- golang_org/x/net/lif.lo
-golang_org_x_net_lif_check = \
- golang_org/x/net/lif/check
+internal_x_net_lif_lo = \
+ internal/x/net/lif.lo
+internal_x_net_lif_check = \
+ internal_org/x/net/lif/check
endif
TPACKAGES = $(shell cat $(srcdir)/check-packages.txt)
TEST_PACKAGES = $(addsuffix /check,$(TPACKAGES)) \
- $(golang_org_x_net_lif_check) \
- $(golang_org_x_net_route_check)
+ $(internal_x_net_lif_check) \
+ $(internal_x_net_route_check)
check: check-tail
check-recursive: check-head
Index: libgo/VERSION
===================================================================
--- libgo/VERSION (revision 268078)
+++ libgo/VERSION (working copy)
@@ -1 +1 @@
-go1.11.1
+go1.12beta2
Index: libgo/check-packages.txt
===================================================================
--- libgo/check-packages.txt (revision 268078)
+++ libgo/check-packages.txt (working copy)
@@ -8,6 +8,8 @@ cmd/go/internal/generate
cmd/go/internal/get
cmd/go/internal/imports
cmd/go/internal/load
+cmd/go/internal/lockedfile
+cmd/go/internal/lockedfile/internal/filelock
cmd/go/internal/modconv
cmd/go/internal/modfetch
cmd/go/internal/modfetch/codehost
@@ -25,7 +27,6 @@ cmd/internal/buildid
cmd/internal/edit
cmd/internal/objabi
cmd/internal/test2json
-cmd/vet/internal/cfg
compress/bzip2
compress/flate
compress/gzip
@@ -61,7 +62,6 @@ debug/elf
debug/macho
debug/pe
debug/plan9obj
-debug/xcoff
encoding/ascii85
encoding/asn1
encoding/base32
@@ -91,19 +91,6 @@ go/printer
go/scanner
go/token
go/types
-golang_org/x/crypto/internal/chacha20
-golang_org/x/crypto/chacha20poly1305
-golang_org/x/crypto/chacha20poly1305/internal/chacha20
-golang_org/x/crypto/cryptobyte
-golang_org/x/crypto/curve25519
-golang_org/x/crypto/poly1305
-golang_org/x/net/dns/dnsmessage
-golang_org/x/net/http/httpguts
-golang_org/x/net/http/httpproxy
-golang_org/x/net/http2/hpack
-golang_org/x/net/idna
-golang_org/x/net/lex/httplex
-golang_org/x/net/proxy
hash
hash/adler32
hash/crc32
@@ -118,9 +105,22 @@ image/jpeg
image/png
index/suffixarray
internal/cpu
+internal/fmtsort
internal/poll
internal/singleflight
internal/trace
+internal/x/crypto/chacha20poly1305
+internal/x/crypto/cryptobyte
+internal/x/crypto/curve25519
+internal/x/crypto/hkdf
+internal/x/crypto/internal/chacha20
+internal/x/crypto/poly1305
+internal/x/net/dns/dnsmessage
+internal/x/net/http/httpguts
+internal/x/net/http/httpproxy
+internal/x/net/http2/hpack
+internal/x/net/idna
+internal/xcoff
io
io/ioutil
log
@@ -162,6 +162,7 @@ regexp/syntax
runtime
runtime/debug
runtime/internal/atomic
+runtime/internal/math
runtime/internal/sys
runtime/pprof
runtime/pprof/internal/profile
Index: libgo/configure.ac
===================================================================
--- libgo/configure.ac (revision 268078)
+++ libgo/configure.ac (working copy)
@@ -10,7 +10,7 @@ AC_INIT(package-unused, version-unused,,
AC_CONFIG_SRCDIR(Makefile.am)
AC_CONFIG_HEADER(config.h)
-libtool_VERSION=13:0:0
+libtool_VERSION=14:0:0
AC_SUBST(libtool_VERSION)
AM_ENABLE_MULTILIB(, ..)
@@ -153,7 +153,7 @@ AC_SUBST(go_include)
# All known GOOS values. This is the union of all operating systems
# supported by the gofrontend and all operating systems supported by
# the gc toolchain.
-ALLGOOS="aix android darwin dragonfly freebsd irix linux netbsd openbsd plan9 rtems solaris windows"
+ALLGOOS="aix android darwin dragonfly freebsd hurd irix js linux netbsd openbsd plan9 rtems solaris windows"
is_darwin=no
is_freebsd=no
Index: libgo/go/runtime/internal/atomic/atomic.c
===================================================================
--- libgo/go/runtime/internal/atomic/atomic.c (revision 268078)
+++ libgo/go/runtime/internal/atomic/atomic.c (working copy)
@@ -13,7 +13,7 @@ uint32_t Load (uint32_t *ptr)
uint32_t
Load (uint32_t *ptr)
{
- return __atomic_load_n (ptr, __ATOMIC_ACQUIRE);
+ return __atomic_load_n (ptr, __ATOMIC_SEQ_CST);
}
void *Loadp (void *ptr)
@@ -23,7 +23,7 @@ void *Loadp (void *ptr)
void *
Loadp (void *ptr)
{
- return __atomic_load_n ((void **) ptr, __ATOMIC_ACQUIRE);
+ return __atomic_load_n ((void **) ptr, __ATOMIC_SEQ_CST);
}
uint64_t Load64 (uint64_t *ptr)
@@ -35,6 +35,16 @@ Load64 (uint64_t *ptr)
{
if (((uintptr_t) ptr & 7) != 0)
panicmem ();
+ return __atomic_load_n (ptr, __ATOMIC_SEQ_CST);
+}
+
+uint32_t LoadAcq (uint32_t *ptr)
+ __asm__ (GOSYM_PREFIX "runtime..z2finternal..z2fatomic.LoadAcq")
+ __attribute__ ((no_split_stack));
+
+uint32_t
+LoadAcq (uint32_t *ptr)
+{
return __atomic_load_n (ptr, __ATOMIC_ACQUIRE);
}
@@ -45,7 +55,7 @@ uintptr_t Loaduintptr (uintptr_t *ptr)
uintptr_t
Loaduintptr (uintptr_t *ptr)
{
- return __atomic_load_n (ptr, __ATOMIC_ACQUIRE);
+ return __atomic_load_n (ptr, __ATOMIC_SEQ_CST);
}
uintgo Loaduint (uintgo *ptr)
@@ -55,7 +65,7 @@ uintgo Loaduint (uintgo *ptr)
uintgo
Loaduint (uintgo *ptr)
{
- return __atomic_load_n (ptr, __ATOMIC_ACQUIRE);
+ return __atomic_load_n (ptr, __ATOMIC_SEQ_CST);
}
int64_t Loadint64 (int64_t *ptr)
@@ -67,7 +77,7 @@ Loadint64 (int64_t *ptr)
{
if (((uintptr_t) ptr & 7) != 0)
panicmem ();
- return __atomic_load_n (ptr, __ATOMIC_ACQUIRE);
+ return __atomic_load_n (ptr, __ATOMIC_SEQ_CST);
}
uint32_t Xadd (uint32_t *ptr, int32_t delta)
@@ -188,6 +198,16 @@ Cas64 (uint64_t *ptr, uint64_t old, uint
return __atomic_compare_exchange_n (ptr, &old, new, false, __ATOMIC_SEQ_CST, __ATOMIC_RELAXED);
}
+_Bool CasRel (uint32_t *ptr, uint32_t old, uint32_t new)
+ __asm__ (GOSYM_PREFIX "runtime..z2finternal..z2fatomic.CasRel")
+ __attribute__ ((no_split_stack));
+
+_Bool
+CasRel (uint32_t *ptr, uint32_t old, uint32_t new)
+{
+ return __atomic_compare_exchange_n (ptr, &old, new, false, __ATOMIC_RELEASE, __ATOMIC_RELAXED);
+}
+
_Bool Casp1 (void **ptr, void *old, void *new)
__asm__ (GOSYM_PREFIX "runtime..z2finternal..z2fatomic.Casp1")
__attribute__ ((no_split_stack));
@@ -230,6 +250,16 @@ Store64 (uint64_t *ptr, uint64_t val)
__atomic_store_n (ptr, val, __ATOMIC_SEQ_CST);
}
+void StoreRel (uint32_t *ptr, uint32_t val)
+ __asm__ (GOSYM_PREFIX "runtime..z2finternal..z2fatomic.StoreRel")
+ __attribute__ ((no_split_stack));
+
+void
+StoreRel (uint32_t *ptr, uint32_t val)
+{
+ __atomic_store_n (ptr, val, __ATOMIC_RELEASE);
+}
+
void Storeuintptr (uintptr_t *ptr, uintptr_t val)
__asm__ (GOSYM_PREFIX "runtime..z2finternal..z2fatomic.Storeuintptr")
__attribute__ ((no_split_stack));
Index: libgo/go/runtime/internal/atomic/gccgo.go
===================================================================
--- libgo/go/runtime/internal/atomic/gccgo.go (revision 268078)
+++ libgo/go/runtime/internal/atomic/gccgo.go (working copy)
@@ -18,6 +18,9 @@ func Loadp(ptr unsafe.Pointer) unsafe.Po
func Load64(ptr *uint64) uint64
//go:noescape
+func LoadAcq(ptr *uint32) uint32
+
+//go:noescape
func Xadd(ptr *uint32, delta int32) uint32
//go:noescape
@@ -47,11 +50,17 @@ func Or8(ptr *uint8, val uint8)
func Cas64(ptr *uint64, old, new uint64) bool
//go:noescape
+func CasRel(ptr *uint32, old, new uint32) bool
+
+//go:noescape
func Store(ptr *uint32, val uint32)
//go:noescape
func Store64(ptr *uint64, val uint64)
+//go:noescape
+func StoreRel(ptr *uint32, val uint32)
+
// StorepNoWB performs *ptr = val atomically and without a write
// barrier.
//
Index: libgo/go/runtime/cgo_gccgo.go
===================================================================
--- libgo/go/runtime/cgo_gccgo.go (revision 268078)
+++ libgo/go/runtime/cgo_gccgo.go (working copy)
@@ -84,8 +84,8 @@ func CgocallBack() {
lockOSThread()
- exitsyscall()
gp.m.incgo = false
+ exitsyscall()
if gp.m.ncgo == 0 {
// The C call to Go came from a thread created by C.
@@ -108,37 +108,41 @@ func CgocallBack() {
func CgocallBackDone() {
unlockOSThread()
- // If we are the top level Go function called from C/C++, then
- // we need to release the m. But don't release it if we are
- // panicing; since this is the top level, we are going to
- // crash the program, and we need the g and m to print the
- // panic values.
- //
- // Dropping the m is going to clear g. This function is being
- // called as a deferred function, so we will return to
- // deferreturn which will want to clear the _defer field.
- // As soon as we call dropm another thread may call needm and
- // start using g, so we must not tamper with the _defer field
- // after dropm. So clear _defer now.
+ // We are going to stop running in Go mode and return to C mode.
+ // We were almost certainly called by defer; if so, clean up
+ // the defer struct now, before we leave Go mode. But don't
+ // leave Go mode if we are panicing or called from Goexit,
+ // since in those cases we will continue executing deferred functions.
gp := getg()
mp := gp.m
drop := false
- if mp.dropextram && mp.ncgo == 0 && gp._panic == nil {
+ if gp.deferring && gp._panic == nil && !gp.goexiting {
d := gp._defer
- if d == nil || d.link != nil {
- throw("unexpected g._defer in CgocallBackDone")
+ if d == nil {
+ throw("no defer struct when deferring")
}
- gp._defer = nil
+ gp._defer = d.link
freedefer(d)
- drop = true
+
+ // If we are the top level Go function called from C,
+ // then we need to release the m.
+ if mp.dropextram && mp.ncgo == 0 {
+ drop = true
+ }
}
- gp.m.incgo = true
- entersyscall()
+ // Don't go back to C mode if we are panicing. Just let the
+ // panic walk up through the Go stack.
+ if gp._panic == nil && !gp.goexiting {
+ gp.m.incgo = true
+ entersyscall()
+ }
if drop {
mp.dropextram = false
dropm()
+ } else if gp.deferring && gp._panic == nil && !gp.goexiting {
+ gp.ranCgocallBackDone = true
}
}
Index: libgo/go/runtime/panic.go
===================================================================
--- libgo/go/runtime/panic.go (revision 268078)
+++ libgo/go/runtime/panic.go (working copy)
@@ -54,7 +54,7 @@ var indexError = error(errorString("inde
func panicindex() {
name, _, _ := funcfileline(getcallerpc(), -1)
- if hasprefix(name, "runtime.") {
+ if hasPrefix(name, "runtime.") {
throw(string(indexError.(errorString)))
}
panicCheckMalloc(indexError)
@@ -65,7 +65,7 @@ var sliceError = error(errorString("slic
func panicslice() {
name, _, _ := funcfileline(getcallerpc(), -1)
- if hasprefix(name, "runtime.") {
+ if hasPrefix(name, "runtime.") {
throw(string(sliceError.(errorString)))
}
panicCheckMalloc(sliceError)
@@ -151,6 +151,14 @@ func newdefer() *_defer {
systemstack(func() {
d = new(_defer)
})
+ if debugCachedWork {
+ // Duplicate the tail below so if there's a
+ // crash in checkPut we can tell if d was just
+ // allocated or came from the pool.
+ d.link = gp._defer
+ gp._defer = d
+ return d
+ }
}
d.link = gp._defer
gp._defer = d
@@ -242,17 +250,22 @@ func deferreturn(frame *bool) {
// code in jmpdefer.
var fn func(unsafe.Pointer)
*(*uintptr)(unsafe.Pointer(&fn)) = uintptr(noescape(unsafe.Pointer(&pfn)))
+ gp.deferring = true
fn(d.arg)
+ gp.deferring = false
}
- // If we are returning from a Go function called by a
- // C function running in a C thread, g may now be nil,
- // in which case CgocallBackDone will have cleared _defer.
- // In that case some other goroutine may already be using gp.
+ // If that was CgocallBackDone, it will have freed the
+ // defer for us, since we are no longer running as Go code.
if getg() == nil {
*frame = true
return
}
+ if gp.ranCgocallBackDone {
+ gp.ranCgocallBackDone = false
+ *frame = true
+ return
+ }
gp._defer = d.link
@@ -316,7 +329,9 @@ func checkdefer(frame *bool) {
var fn func(unsafe.Pointer)
*(*uintptr)(unsafe.Pointer(&fn)) = uintptr(noescape(unsafe.Pointer(&pfn)))
+ gp.deferring = true
fn(d.arg)
+ gp.deferring = false
freedefer(d)
@@ -389,6 +404,7 @@ func Goexit() {
// This code is similar to gopanic, see that implementation
// for detailed comments.
gp := getg()
+ gp.goexiting = true
for {
d := gp._defer
if d == nil {
@@ -409,7 +425,9 @@ func Goexit() {
var fn func(unsafe.Pointer)
*(*uintptr)(unsafe.Pointer(&fn)) = uintptr(noescape(unsafe.Pointer(&pfn)))
+ gp.deferring = true
fn(d.arg)
+ gp.deferring = false
if gp._defer != d {
throw("bad defer entry in Goexit")
@@ -419,6 +437,7 @@ func Goexit() {
freedefer(d)
// Note: we ignore recovers here because Goexit isn't a panic
}
+ gp.goexiting = false
goexit1()
}
@@ -532,7 +551,9 @@ func gopanic(e interface{}) {
var fn func(unsafe.Pointer)
*(*uintptr)(unsafe.Pointer(&fn)) = uintptr(noescape(unsafe.Pointer(&pfn)))
+ gp.deferring = true
fn(d.arg)
+ gp.deferring = false
if gp._defer != d {
throw("bad defer entry in panic")
@@ -649,7 +670,7 @@ func canrecover(retaddr uintptr) bool {
}
name := locs[1].function
- if hasprefix(name, "runtime.") {
+ if hasPrefix(name, "runtime.") {
return true
}
@@ -676,7 +697,7 @@ func canrecover(retaddr uintptr) bool {
}
// Ignore function in libffi.
- if hasprefix(name, "ffi_") {
+ if hasPrefix(name, "ffi_") {
continue
}
@@ -690,7 +711,7 @@ func canrecover(retaddr uintptr) bool {
}
// Ignore other functions in the reflect package.
- if hasprefix(name, "reflect.") || hasprefix(name, ".1reflect.") {
+ if hasPrefix(name, "reflect.") || hasPrefix(name, ".1reflect.") {
continue
}
@@ -700,7 +721,7 @@ func canrecover(retaddr uintptr) bool {
if i < n {
name = locs[i].function
- if hasprefix(name, "runtime.") {
+ if hasPrefix(name, "runtime.") {
return true
}
}
@@ -734,7 +755,7 @@ func makefuncfficanrecover(loc []locatio
}
name := loc[1].function
- if hasprefix(name, "runtime.") {
+ if hasPrefix(name, "runtime.") {
d.makefunccanrecover = true
}
}
@@ -935,10 +956,13 @@ func fatalpanic(msgs *_panic) {
// It returns true if panic messages should be printed, or false if
// the runtime is in bad shape and should just print stacks.
//
-// It can have write barriers because the write barrier explicitly
-// ignores writes once dying > 0.
+// It must not have write barriers even though the write barrier
+// explicitly ignores writes once dying > 0. Write barriers still
+// assume that g.m.p != nil, and this function may not have P
+// in some contexts (e.g. a panic in a signal handler for a signal
+// sent to an M with no P).
//
-//go:yeswritebarrierrec
+//go:nowritebarrierrec
func startpanic_m() bool {
_g_ := getg()
if mheap_.cachealloc.size == 0 { // very early
@@ -958,8 +982,8 @@ func startpanic_m() bool {
switch _g_.m.dying {
case 0:
+ // Setting dying >0 has the side-effect of disabling this G's writebuf.
_g_.m.dying = 1
- _g_.writebuf = nil
atomic.Xadd(&panicking, 1)
lock(&paniclk)
if debug.schedtrace > 0 || debug.scheddetail > 0 {
@@ -1061,7 +1085,7 @@ func canpanic(gp *g) bool {
return true
}
-// isAbortPC returns true if pc is the program counter at which
+// isAbortPC reports whether pc is the program counter at which
// runtime.abort raises a signal.
//
// It is nosplit because it's part of the isgoexception
Index: libgo/gotool-packages.txt
===================================================================
--- libgo/gotool-packages.txt (revision 268078)
+++ libgo/gotool-packages.txt (working copy)
@@ -15,6 +15,8 @@ cmd/go/internal/help
cmd/go/internal/imports
cmd/go/internal/list
cmd/go/internal/load
+cmd/go/internal/lockedfile
+cmd/go/internal/lockedfile/internal/filelock
cmd/go/internal/modcmd
cmd/go/internal/modconv
cmd/go/internal/modfetch
@@ -26,6 +28,7 @@ cmd/go/internal/modload
cmd/go/internal/module
cmd/go/internal/mvs
cmd/go/internal/par
+cmd/go/internal/renameio
cmd/go/internal/run
cmd/go/internal/search
cmd/go/internal/semver
@@ -43,6 +46,39 @@ cmd/internal/browser
cmd/internal/buildid
cmd/internal/edit
cmd/internal/objabi
+cmd/internal/sys
cmd/internal/test2json
-cmd/vet/internal/cfg
-cmd/vet/internal/whitelist
+golang.org/x/tools/go/analysis
+golang.org/x/tools/go/analysis/internal/analysisflags
+golang.org/x/tools/go/analysis/internal/facts
+golang.org/x/tools/go/analysis/passes/asmdecl
+golang.org/x/tools/go/analysis/passes/assign
+golang.org/x/tools/go/analysis/passes/atomic
+golang.org/x/tools/go/analysis/passes/bools
+golang.org/x/tools/go/analysis/passes/buildtag
+golang.org/x/tools/go/analysis/passes/cgocall
+golang.org/x/tools/go/analysis/passes/composite
+golang.org/x/tools/go/analysis/passes/copylock
+golang.org/x/tools/go/analysis/passes/ctrlflow
+golang.org/x/tools/go/analysis/passes/httpresponse
+golang.org/x/tools/go/analysis/passes/inspect
+golang.org/x/tools/go/analysis/passes/internal/analysisutil
+golang.org/x/tools/go/analysis/passes/loopclosure
+golang.org/x/tools/go/analysis/passes/lostcancel
+golang.org/x/tools/go/analysis/passes/nilfunc
+golang.org/x/tools/go/analysis/passes/pkgfact
+golang.org/x/tools/go/analysis/passes/printf
+golang.org/x/tools/go/analysis/passes/shift
+golang.org/x/tools/go/analysis/passes/stdmethods
+golang.org/x/tools/go/analysis/passes/structtag
+golang.org/x/tools/go/analysis/passes/tests
+golang.org/x/tools/go/analysis/passes/unmarshal
+golang.org/x/tools/go/analysis/passes/unreachable
+golang.org/x/tools/go/analysis/passes/unsafeptr
+golang.org/x/tools/go/analysis/passes/unusedresult
+golang.org/x/tools/go/analysis/unitchecker
+golang.org/x/tools/go/ast/astutil
+golang.org/x/tools/go/ast/inspector
+golang.org/x/tools/go/cfg
+golang.org/x/tools/go/types/objectpath
+golang.org/x/tools/go/types/typeutil
Index: libgo/libgo-packages.txt
===================================================================
--- libgo/libgo-packages.txt (revision 268078)
+++ libgo/libgo-packages.txt (working copy)
@@ -40,7 +40,6 @@ debug/gosym
debug/macho
debug/pe
debug/plan9obj
-debug/xcoff
encoding
encoding/ascii85
encoding/asn1
@@ -71,27 +70,6 @@ go/printer
go/scanner
go/token
go/types
-golang_org/x/crypto/internal/chacha20
-golang_org/x/crypto/chacha20poly1305
-golang_org/x/crypto/chacha20poly1305/internal/chacha20
-golang_org/x/crypto/cryptobyte
-golang_org/x/crypto/cryptobyte/asn1
-golang_org/x/crypto/curve25519
-golang_org/x/crypto/poly1305
-golang_org/x/net/dns/dnsmessage
-golang_org/x/net/http/httpguts
-golang_org/x/net/http/httpproxy
-golang_org/x/net/http2/hpack
-golang_org/x/net/idna
-golang_org/x/net/internal/nettest
-golang_org/x/net/lex/httplex
-golang_org/x/net/nettest
-golang_org/x/net/proxy
-golang_org/x/text/secure/bidirule
-golang_org/x/text/transform
-golang_org/x/text/unicode/bidi
-golang_org/x/text/unicode/norm
-golang_org/x/text/width
hash
hash/adler32
hash/crc32
@@ -110,6 +88,7 @@ image/png
index/suffixarray
internal/bytealg
internal/cpu
+internal/fmtsort
internal/goroot
internal/nettrace
internal/poll
@@ -119,6 +98,25 @@ internal/syscall/unix
internal/testenv
internal/testlog
internal/trace
+internal/x/crypto/chacha20poly1305
+internal/x/crypto/cryptobyte
+internal/x/crypto/cryptobyte/asn1
+internal/x/crypto/curve25519
+internal/x/crypto/hkdf
+internal/x/crypto/internal/chacha20
+internal/x/crypto/poly1305
+internal/x/net/dns/dnsmessage
+internal/x/net/http/httpguts
+internal/x/net/http/httpproxy
+internal/x/net/http2/hpack
+internal/x/net/idna
+internal/x/net/internal/nettest
+internal/x/net/nettest
+internal/x/text/secure/bidirule
+internal/x/text/transform
+internal/x/text/unicode/bidi
+internal/x/text/unicode/norm
+internal/xcoff
io
io/ioutil
log
@@ -161,6 +159,7 @@ regexp/syntax
runtime
runtime/debug
runtime/internal/atomic
+runtime/internal/math
runtime/internal/sys
runtime/pprof
runtime/pprof/internal/profile
Index: libgo/match.sh
===================================================================
--- libgo/match.sh (revision 268078)
+++ libgo/match.sh (working copy)
@@ -113,7 +113,7 @@ for f in $gofiles; do
"") ;;
$goarch) ;;
$goos) ;;
- aix | android | darwin | dragonfly | freebsd | linux | nacl | netbsd | openbsd | plan9 | solaris | windows)
+ aix | android | darwin | dragonfly | freebsd | hurd | js | linux | nacl | netbsd | openbsd | plan9 | solaris | windows)
tag1=nonmatchingtag
;;
386 | amd64 | amd64p32 | arm | armbe | arm64 | arm64be | alpha | ia64 | m68k | mips | mipsle | mips64 | mips64le | mips64p32 | mips64p32le | nios2 | ppc | ppc64 | ppc64le | riscv64 | s390 | s390x | sh | shbe | sparc | sparc64 | wasm)
@@ -125,7 +125,7 @@ for f in $gofiles; do
"") ;;
$goarch) ;;
$goos) ;;
- aix | android | darwin | dragonfly | freebsd | linux | nacl | netbsd | openbsd | plan9 | solaris | windows)
+ aix | android | darwin | dragonfly | freebsd | hurd | js | linux | nacl | netbsd | openbsd | plan9 | solaris | windows)
tag2=nonmatchingtag
;;
386 | amd64 | amd64p32 | arm | armbe | arm64 | arm64be | alpha | ia64 | m68k | mips | mipsle | mips64 | mips64le | mips64p32 | mips64p32le | nios2 | ppc | ppc64 | ppc64le | riscv64 | s390 | s390x | sh | shbe | sparc | sparc64 | wasm)
Index: libgo/merge.sh
===================================================================
--- libgo/merge.sh (revision 268078)
+++ libgo/merge.sh (working copy)
@@ -128,7 +128,7 @@ echo ${rev} > VERSION
(cd ${NEWDIR}/src && find . -name '*.go' -print) | while read f; do
skip=false
case "$f" in
- ./cmd/buildid/* | ./cmd/cgo/* | ./cmd/go/* | ./cmd/gofmt/* | ./cmd/testjson/* | ./cmd/vet/* | ./cmd/internal/browser/* | ./cmd/internal/buildid/* | ./cmd/internal/edit/* | ./cmd/internal/objabi/* | ./cmd/internal/testj2on/* )
+ ./cmd/buildid/* | ./cmd/cgo/* | ./cmd/go/* | ./cmd/gofmt/* | ./cmd/testjson/* | ./cmd/vet/* | ./cmd/internal/browser/* | ./cmd/internal/buildid/* | ./cmd/internal/edit/* | ./cmd/internal/objabi/* | ./cmd/internal/testj2on/* | ./cmd/internal/sys/* | ./cmd/vendor/golang.org/x/tools/* )
;;
./cmd/*)
skip=true
@@ -143,14 +143,14 @@ echo ${rev} > VERSION
oldfile=${OLDDIR}/src/$f
newfile=${NEWDIR}/src/$f
- libgofile=go/`echo $f | sed -e 's|/vendor/|/|'`
+ libgofile=go/`echo $f | sed -e 's|cmd/vendor/|/|' | sed -e 's|/vendor/|/|'`
merge $f ${oldfile} ${newfile} ${libgofile}
done
(cd ${NEWDIR}/src && find . -name testdata -print) | while read d; do
skip=false
case "$d" in
- ./cmd/cgo/* | ./cmd/go/* | ./cmd/gofmt/* | ./cmd/internal/browser/*)
+ ./cmd/buildid/* | ./cmd/cgo/* | ./cmd/go/* | ./cmd/gofmt/* | ./cmd/testjson/* | ./cmd/vet/* | ./cmd/internal/browser/* | ./cmd/internal/buildid/* | ./cmd/internal/edit/* | ./cmd/internal/objabi/* | ./cmd/internal/testj2on/* | ./cmd/internal/sys/* | ./cmd/vendor/golang.org/x/tools/* )
;;
./cmd/*)
skip=true
@@ -165,7 +165,7 @@ done
oldtd=${OLDDIR}/src/$d
newtd=${NEWDIR}/src/$d
- libgotd=go/$d
+ libgofile=go/`echo $d | sed -e 's|cmd/vendor/|/|' | sed -e 's|/vendor/|/|'`
if ! test -d ${oldtd}; then
echo "merge.sh: $d: NEWDIR"
continue
Index: libgo/runtime/runtime.h
===================================================================
--- libgo/runtime/runtime.h (revision 268078)
+++ libgo/runtime/runtime.h (working copy)
@@ -394,7 +394,7 @@ void __wrap_rtems_task_variable_add(void
*/
void reflect_call(const struct __go_func_type *, FuncVal *, _Bool, _Bool,
void **, void **)
- __asm__ (GOSYM_PREFIX "reflect.call");
+ __asm__ (GOSYM_PREFIX "runtime.reflectcall");
void runtime_panic(Eface)
__asm__ (GOSYM_PREFIX "runtime.gopanic");
void runtime_panic(Eface)
Index: libgo/testsuite/gotest
===================================================================
--- libgo/testsuite/gotest (revision 268078)
+++ libgo/testsuite/gotest (working copy)
@@ -311,7 +311,7 @@ x)
"") ;;
$goarch) ;;
$goos) ;;
- aix | android | darwin | dragonfly | freebsd | linux | nacl | netbsd | openbsd | plan9 | solaris | windows)
+ aix | android | darwin | dragonfly | freebsd | hurd | js | linux | nacl | netbsd | openbsd | plan9 | solaris | windows)
tag1=nonmatchingtag
;;
386 | amd64 | amd64p32 | arm | armbe | arm64 | arm64be | alpha | ia64 | m68k | mips | mipsle | mips64 | mips64le | mips64p32 | mips64p32le·| nios2 | ppc | ppc64 | ppc64le | riscv64 | s390 | s390x | sh | shbe | sparc | sparc64 | wasm)
@@ -323,7 +323,7 @@ x)
"") ;;
$goarch) ;;
$goos) ;;
- aix | android | darwin | dragonfly | freebsd | linux | nacl | netbsd | openbsd | plan9 | solaris | windows)
+ aix | android | darwin | dragonfly | freebsd | hurd | js | linux | nacl | netbsd | openbsd | plan9 | solaris | windows)
tag2=nonmatchingtag
;;
386 | amd64 | amd64p32 | arm | armbe | arm64 | arm64be | alpha | ia64 | m68k | mips | mipsle | mips64 | mips64le | mips64p32 | mips64p32le·| nios2 | ppc | ppc64 | ppc64le | riscv64 | s390 | s390x | sh | shbe | sparc | sparc64 | wasm)
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: libgo patch committed: Update to Go1.12beta2
2019-01-18 19:05 libgo patch committed: Update to Go1.12beta2 Ian Lance Taylor
@ 2019-01-21 12:22 ` Matthias Klose
2019-01-21 16:59 ` Ian Lance Taylor
0 siblings, 1 reply; 4+ messages in thread
From: Matthias Klose @ 2019-01-21 12:22 UTC (permalink / raw)
To: Ian Lance Taylor, gcc-patches, gofrontend-dev; +Cc: Samuel Thibault
On 18.01.19 20:04, Ian Lance Taylor wrote:
> I have committed a patch to update libgo to the Go 1.12beta2 release.
>
> As usual this sort of update is too large to include all changes in
> this e-mail. I've included changes to gccgo-specific files below.
>
> Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu. Committed
> to mainline.
this broke the ARM32 builds:
libtool: compile: /<<PKGBUILDDIR>>/build/./gcc/gccgo
-B/<<PKGBUILDDIR>>/build/./gcc/ -B/usr/arm-linux-gnueabihf/bin/
-B/usr/arm-linux-gnueabihf/lib/ -isystem /usr
/arm-linux-gnueabihf/include -isystem /usr/arm-linux-gnueabihf/sys-include
-isystem /<<PKGBUILDDIR>>/build/sys-include -fchecking=1 -O2 -g -I . -c
-fgo-pkgpath=int
ernal/cpu ../../../src/libgo/go/internal/cpu/cpu.go cpugen.go -fPIC -o
internal/.libs/cpu.o
../../../src/libgo/go/internal/cpu/cpu.go:138:2: error: reference to undefined
name 'doinit'
138 | doinit()
| ^
make[6]: *** [Makefile:2843: internal/cpu.lo] Error 1
make[6]: Leaving directory '/<<PKGBUILDDIR>>/build/arm-linux-gnueabihf/libgo'
make[5]: *** [Makefile:2241: all-recursive] Error 1
on the HURD (without any local patches):
gccgo: fatal error: no input files
compilation terminated.
Makefile:2843: recipe for target 'runtime.lo' failed
make[6]: *** [runtime.lo] Error 1
make[6]: Leaving directory '/<<PKGBUILDDIR>>/build/i686-gnu/libgo'
Makefile:2241: recipe for target 'all-recursive' failed
make[5]: *** [all-recursive] Error 1
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: libgo patch committed: Update to Go1.12beta2
2019-01-21 12:22 ` Matthias Klose
@ 2019-01-21 16:59 ` Ian Lance Taylor
0 siblings, 0 replies; 4+ messages in thread
From: Ian Lance Taylor @ 2019-01-21 16:59 UTC (permalink / raw)
To: Matthias Klose; +Cc: gcc-patches, gofrontend-dev, Samuel Thibault
On Mon, Jan 21, 2019 at 4:22 AM Matthias Klose <doko@debian.org> wrote:
>
> On 18.01.19 20:04, Ian Lance Taylor wrote:
> > I have committed a patch to update libgo to the Go 1.12beta2 release.
> >
> > As usual this sort of update is too large to include all changes in
> > this e-mail. I've included changes to gccgo-specific files below.
> >
> > Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu. Committed
> > to mainline.
>
> this broke the ARM32 builds:
>
> libtool: compile: /<<PKGBUILDDIR>>/build/./gcc/gccgo
> -B/<<PKGBUILDDIR>>/build/./gcc/ -B/usr/arm-linux-gnueabihf/bin/
> -B/usr/arm-linux-gnueabihf/lib/ -isystem /usr
> /arm-linux-gnueabihf/include -isystem /usr/arm-linux-gnueabihf/sys-include
> -isystem /<<PKGBUILDDIR>>/build/sys-include -fchecking=1 -O2 -g -I . -c
> -fgo-pkgpath=int
> ernal/cpu ../../../src/libgo/go/internal/cpu/cpu.go cpugen.go -fPIC -o
> internal/.libs/cpu.o
> ../../../src/libgo/go/internal/cpu/cpu.go:138:2: error: reference to undefined
> name 'doinit'
> 138 | doinit()
> | ^
> make[6]: *** [Makefile:2843: internal/cpu.lo] Error 1
> make[6]: Leaving directory '/<<PKGBUILDDIR>>/build/arm-linux-gnueabihf/libgo'
> make[5]: *** [Makefile:2241: all-recursive] Error 1
This is PR 88927. There is a patch out for review.
> on the HURD (without any local patches):
>
> gccgo: fatal error: no input files
> compilation terminated.
> Makefile:2843: recipe for target 'runtime.lo' failed
> make[6]: *** [runtime.lo] Error 1
> make[6]: Leaving directory '/<<PKGBUILDDIR>>/build/i686-gnu/libgo'
> Makefile:2241: recipe for target 'all-recursive' failed
> make[5]: *** [all-recursive] Error 1
Last I heard Svante was going to send another set of Hurd patches.
Ian
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: libgo patch committed: Update to Go1.12beta2
@ 2019-01-22 8:46 Uros Bizjak
0 siblings, 0 replies; 4+ messages in thread
From: Uros Bizjak @ 2019-01-22 8:46 UTC (permalink / raw)
To: Ian Taylor; +Cc: gcc-patches, gofrontend-dev
[-- Attachment #1: Type: text/plain, Size: 1369 bytes --]
Hello!
> I have committed a patch to update libgo to the Go 1.12beta2 release.
>
> As usual this sort of update is too large to include all changes in
> this e-mail. I've included changes to gccgo-specific files below.
>
> Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu. Committed
> to mainline.
Attached patch is needed to prevent panic on alphaec68-linux-gnu when
building test harness in gotools directory. It substitutes one
instance of hardcoded "gc" with build.Default.Compiler in place where
archSizes are determined. Please note that there are other similar
cases, which don't trigger panics for me, but are suspicious, too:
[uros@localhost golang.org]$ grep -R "\"gc\"" *
x/tools/go/analysis/unitchecker/unitchecker.go: Sizes:
types.SizesFor("gc", build.Default.GOARCH), // assume gccgo ≡ gc?
x/tools/go/analysis/passes/asmdecl/asmdecl.go: arch.sizes =
types.SizesFor("gc", arch.name)
x/tools/go/analysis/passes/asmdecl/asmdecl.go:
arch.sizes = types.SizesFor("gc", "amd64")
x/tools/go/analysis/passes/printf/types.go:var archSizes =
types.SizesFor("gc", build.Default.GOARCH)
x/tools/go/analysis/passes/cgocall/cgocall.go: Sizes:
types.SizesFor("gc", build.Default.GOARCH),
Patch was regression tested on alphaev68-linux-gnu, and fixes a bunch
of panics in gotools directory.
Uros.
[-- Attachment #2: g.diff.txt --]
[-- Type: text/plain, Size: 550 bytes --]
diff --git a/libgo/go/golang.org/x/tools/go/analysis/passes/shift/shift.go b/libgo/go/golang.org/x/tools/go/analysis/passes/shift/shift.go
index 56b150b2b132..beb0b124b0e5 100644
--- a/libgo/go/golang.org/x/tools/go/analysis/passes/shift/shift.go
+++ b/libgo/go/golang.org/x/tools/go/analysis/passes/shift/shift.go
@@ -125,4 +125,4 @@ var (
uintptrBitSize = 8 * archSizes.Sizeof(types.Typ[types.Uintptr])
)
-var archSizes = types.SizesFor("gc", build.Default.GOARCH)
+var archSizes = types.SizesFor(build.Default.Compiler, build.Default.GOARCH)
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2019-01-22 8:46 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-18 19:05 libgo patch committed: Update to Go1.12beta2 Ian Lance Taylor
2019-01-21 12:22 ` Matthias Klose
2019-01-21 16:59 ` Ian Lance Taylor
2019-01-22 8:46 Uros Bizjak
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).