Commit Graph

1338 Commits

Author SHA1 Message Date
Ian Lance Taylor
62c3f75fd2 compiler, libgo: don't pad sparc64-linux epollevent
Change the compiler to not add zero padding because of zero-sized
fields named "_", since those can't be referenced anyhow.

Change the sparc-linux64 epollevent struct to name the alignment
field "_", to avoid zero padding.

Fixes PR go/103847

	PR go/103847
	* godump.c (go_force_record_alignment): Name the alignment
	field "_".

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/374914
2021-12-29 15:52:23 -08:00
Ian Lance Taylor
09e18d113b runtime: set runtime.GOROOT value at build time
In Go 1.17 the gc toolchain changed to set runtime.GOROOT in cmd/link
(previously it was runtime/internal/sys.GOROOT).  Do the same in libgo.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/351313

gotools/:
	* Makefile.am (check-runtime): Add goroot.go to --extrafiles.
	* Makefile.in: Regenerate.
2021-09-21 14:31:10 -07:00
Ian Lance Taylor
54866f7a81 libgo: update to go1.17.1 release
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/350414
2021-09-16 16:48:19 -07:00
Ian Lance Taylor
21b046bade runtime: use hash32, not hash64, for amd64p32, mips64p32, mips64p32le
Fixes PR go/102102

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/348015
2021-09-07 15:05:11 -07:00
Ian Lance Taylor
74df79ec3e libgo: update to final Go 1.17 release
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/343729
2021-09-05 16:10:51 -07:00
Ian Lance Taylor
829931ec93 libgo: various fixes for Solaris support
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/342189
2021-08-14 17:34:52 -07:00
Ian Lance Taylor
e5c00544cc runtime: use C cast syntax in stack.c
Didn't notice earlier because this code is only used on systems that
do not support -fsplit-stack.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/342051
2021-08-13 10:38:36 -07:00
Ian Lance Taylor
c5b21c3f4c libgo: update to Go1.17rc2
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/341629
2021-08-12 20:23:07 -07:00
Ian Lance Taylor
0ace3d4d0a runtime: run gofmt on testdata/testwinsignal/main.go 2021-08-12 17:15:16 -07:00
Ian Lance Taylor
1196b60f8f compiler: store pointers to go:notinheap types indirectly
This is the gofrontend version of https://golang.org/cl/264480.

For golang/go#42076

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/340609
2021-08-12 16:33:10 -07:00
Ian Lance Taylor
582c24e9fe runtime: extend internal atomics to comply with sync/atomic
This is the gofrontend version of https://golang.org/cl/289152.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/339690
2021-08-05 11:41:57 -07:00
Ian Lance Taylor
e435e72ad7 compile, runtime: make selectnbrecv return two values
The only different between selectnbrecv and selectnbrecv2 is the later
set the input pointer value by second return value from chanrecv.

So by making selectnbrecv return two values from chanrecv, we can get
rid of selectnbrecv2, the compiler can now call only selectnbrecv and
generate simpler code.

This is the gofrontend version of https://golang.org/cl/292890.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/339529
2021-08-03 16:40:00 -07:00
Ian Lance Taylor
7459bfa8a3 compiler, runtime: allow slice to array pointer conversion
Panic if the slice is too short.

For golang/go#395

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/338630
2021-08-02 15:27:08 -07:00
Ian Lance Taylor
06d0437d4a compiler, runtime: support unsafe.Add and unsafe.Slice
For golang/go#19367
For golang/go#40481

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/338949
2021-08-02 13:56:28 -07:00
Ian Lance Taylor
1798cac7a8 runtime: remove direct assignments to memory locations
PR bootstrap/101374
They cause a warning with the updated GCC -Warray-bounds option.
Replace them with calls to abort, which for our purposes is fine.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/333409
2021-07-09 19:48:53 -07:00
Ian Lance Taylor
ee52bf609b libgo: update to Go1.16.5 release
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/326772
2021-06-10 14:41:23 -07:00
Ian Lance Taylor
c922c6539e libgo: update configure to current sources
Change-Id: I12766baf02bfdf2233f1c5bde1a270f06b020aa7
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/321076
Trust: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Than McIntosh <thanm@google.com>
2021-05-18 19:57:54 -07:00
Ian Lance Taylor
28ec1174f9 libgo: update bzip2 binary test cases to match source repo 2021-05-18 19:57:03 -07:00
Ian Lance Taylor
39ed6a88c7 libgo: use Windows line endings in testwinsignal 2021-05-18 18:28:17 -07:00
Ian Lance Taylor
eb49f7de93 libgo: update to Go1.16.3 release
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/309490
2021-04-12 15:23:16 -07:00
Ian Lance Taylor
3a5bcac339 libgo: update to Go 1.16.2 release
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/301459
2021-03-15 14:52:55 -07:00
Ian Lance Taylor
3972574f11 misc/cgo/testcarchive: don't use == for string equality in C code
Backport of https://golang.org/cl/300993.

For PR go/99553

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/301458
2021-03-12 20:06:50 -08:00
Ian Lance Taylor
d5d3f15a0e runtime: cast SIGSTKSZ to uintptr
In newer versions of glibc it is long, which causes a signed
comparison warning.

Fixes PR go/99458
2021-03-08 16:23:31 -08:00
Lynn Boger
2fbed0dc6c libgo: ensure memmove, memset 8 byte atomicity on ppc64x
Go requires that pointer moves are done 8 bytes at a time,
but gccgo uses libc's memmove and memset which does not require
that, and there are some cases where an 8 byte move might be
done as 4+4.

To enforce 8 byte moves for memmove and memset, this adds a
C implementation in libgo/runtime for memmove and memset to be
used on ppc64le and ppc64. Asm implementations were considered
but discarded to avoid different implementations for different
target ISAs.

Fixes golang/go#41428

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/294931
2021-02-25 17:01:23 -08:00
Ian Lance Taylor
13e6fadd96 libgo: update to Go1.16 release
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/293793
2021-02-19 12:33:25 -08:00
Ian Lance Taylor
530203d6e3 libgo: install new 1.16 packages
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/289069
2021-02-03 08:47:28 -08:00
Clément Chigot
4d31df4089 internal/cpu: correctly link to getsystemcfg
Directly set getsystemcfg as //extern in internal/cpu instead of
trying to use the runtime as in Go toolchain.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/287932
2021-01-29 16:12:43 -08:00
Ian Lance Taylor
726b7aa004 libgo: update to Go1.16rc1
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/287493
2021-01-29 11:04:55 -08:00
Ian Lance Taylor
9ac3e2feb3 libgo: update hurd support
Patch from Svante Signell.

Fixes PR go/98496

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/283692
2021-01-14 09:57:04 -08:00
Paul E. Murphy
cfaaa6a1ca syscall: ensure openat uses variadic libc wrapper
On powerpc64le, this caused a failure in TestUnshareUidGidMapping
due to stack corruption which resulted in a bogus execve syscall.

Use the existing c wrapper to ensure we respect the ppc abi for
variadic functions.

Fixes PR go/98610

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/282717
2021-01-12 13:21:09 -08:00
Samuel Thibault
f56de3557f Update GNU/Hurd configure support
ChangeLog:

	* libtool.m4: Match gnu* along other GNU systems.
	* libgo/config/libtool.m4: Match gnu* along other GNU systems.
	* libgo/configure: Re-generate.

libffi/
	* configure: Re-generate.

libgomp/
	* configure: Re-generate.

gcc/

	* configure: Re-generate.

libatomic/

	* configure: Re-generate.

libbacktrace/

	* configure: Re-generate.

libcc1/

	* configure: Re-generate.

libgfortran/

	* configure: Re-generate.

libgomp/

	* configure: Re-generate.

libhsail-rt/

	* configure: Re-generate.

libitm/

	* configure: Re-generate.

libobjc/

	* configure: Re-generate.

liboffloadmic/

	* configure: Re-generate.
	* plugin/configure: Re-generate.

libphobos/

	* configure: Re-generate.

libquadmath/

	* configure: Re-generate.

libsanitizer/

	* configure: Re-generate.

libssp/

	* configure: Re-generate.

libstdc++-v3/

	* configure: Re-generate.

libvtv/

	* configure: Re-generate.

lto-plugin/

	* configure: Re-generate.

zlib/

	* configure: Re-generate.
2021-01-05 16:04:14 -07:00
Ian Lance Taylor
f47c00cf95 syscall: don't define sys_SETREUID and friends
We don't use them, since we always call the C library functions which do
the right thing anyhow.  And they aren't defined on all GNU/Linux variants.

Fixes PR go/98510

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/281473
2021-01-05 13:53:13 -08:00
Ian Lance Taylor
a9f76d03bb internal/cpu: more build fixes for Go1.16beta1 release
Some files were missing from the libgo copy of internal/cpu, because they
used to only declare CacheLinePadSize which libgo gets from goarch.sh.
Now they also declare doinit, so copy them over.  Adjust cpu_other.go.

Fix the amd64p32 build by adding a build constraint to cpu_no_name.go.

Fixes PR go/98493

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/281472
2021-01-05 13:48:59 -08:00
Ian Lance Taylor
5a4e0d121a internal/cpu: add aarch64 support functions
Patch from Andreas Schwab.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/281000
2021-01-01 15:13:50 -08:00
Ian Lance Taylor
0b9ef8be40 runtime: move startupRandomData back to runtime2.go
In libgo it's referenced from os_gccgo.go on all platforms.

Fixes go/98496

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/280999
2021-01-01 15:11:45 -08:00
Ian Lance Taylor
abca670596 internal/cpu, golang.org/x/sys/cpu: support other GOARCH values
Add support (mostly dummy support) for GOARCH values supported by
gofrontend but not gc.  Fix PPC handling.

Fixes https://gcc.gnu.org/PR98493

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/280932
2021-01-01 15:10:06 -08:00
Ian Lance Taylor
cfcbb4227f libgo: update to Go1.16beta1 release
This does not yet include support for the //go:embed directive added
in this release.

	* Makefile.am (check-runtime): Don't create check-runtime-dir.
	(mostlyclean-local): Don't remove check-runtime-dir.
	(check-go-tool, check-vet): Copy in go.mod and modules.txt.
	(check-cgo-test, check-carchive-test): Add go.mod file.
	* Makefile.in: Regenerate.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/280172
2020-12-30 15:13:24 -08:00
Ian Lance Taylor
313890530c runtime: eliminate scase.kind field
This is the gofrontend version of https://golang.org/cl/245125.

Original CL description:

    Currently, we include a "kind" field on scase to distinguish the three
    kinds of cases in a select statement: sends, receives, and defaults.

    This commit removes by kind field by instead arranging for the
    compiler to always place sends before receives, and to provide their
    counts separately. It also passes an explicit "block bool" parameter
    to avoid needing to include a default case in the array.

    It's safe to shuffle cases like this because the runtime will
    randomize the order they're polled in anyway.

    For golang/go#40410.

This is being brought over to gofrontend as a step toward upgrading to
Go1.16beta1.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/279735
2020-12-22 14:42:22 -08:00
Ian Lance Taylor
3b2d8145a4 runtime: add "success" field to sudog
This is the gofrontend version of https://golang.org/cl/245019.
Original CL description:

    The current wakeup protocol for channel communications is that the
    second goroutine sets gp.param to the sudog when a value is
    successfully communicated over the channel, and to nil when the wakeup
    is due to closing the channel.

    Setting nil to indicate channel closure works okay for chansend and
    chanrecv, because they're only communicating with one channel, so they
    know it must be the channel that was closed. However, it means
    selectgo has to re-poll all of the channels to figure out which one
    was closed.

    This commit adds a "success" field to sudog, and changes the wakeup
    protocol to always set gp.param to sg, and to use sg.success to
    indicate successful communication vs channel closure.

    While here, this also reorganizes the chansend code slightly so that
    the sudog is still released to the pool if the send blocks and then is
    awoken because the channel closed.

    For golang/go#40410

This is being brought over to gofrontend as a step toward upgrading to
Go1.16beta1, setting up for more compiler changes related to select handling.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/279734
2020-12-22 12:13:13 -08:00
Ian Lance Taylor
48357ce4f2 runtime: omit nil-channel cases from selectgo's orders
This is the gofrontend version of https://golang.org/cl/245123.
Original CL description:

    Currently, selectgo does an initial pass over the cases array to look
    for entries with nil channels, so they can be easily recognized and
    skipped later on. But this still involves actually visiting the cases.

    This commit changes selectgo to omit cases with nil channels when
    constructing pollorder, so that they'll be skipped over entirely later
    on. It also checks for caseDefault up front, which will facilitate
    changing it to use a "block bool" parameter instead.

    Updates golang/go#40410

This is being brought over to gofrontend as a step toward upgrading to
Go1.16beta1, setting up for more compiler changes related to select handling.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/279733
2020-12-22 11:56:41 -08:00
Ian Lance Taylor
1fa5fc7408 runtime: remove scase.releasetime field
This is the gofrontend version of https://golang.org/cl/245122.
Original CL description:

    selectgo will report at most one block event, so there's no need to
    keep a releasetime for every select case. It suffices to simply track
    the releasetime of the case responsible for the wakeup.

    Updates golang/go#40410.

This is being brought over to gofrontend as a step toward upgrading to
Go1.16beta1.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/279732
2020-12-22 11:54:03 -08:00
Nikhil Benesch
9bac66390c libgo: adjust sysinfo scripts for changed -fdump-go-spec
The -fdump-go-spec flag to GCC recently changed to be more fastidious
about handling incomplete types. This caused some breakage in
mk[r]sysinfo.sh on Solaris. This commit adjusts for the new behavior.
Specifically:

  * Types that refer to _in6_addr may be hidden behind a typedef and can
    no longer be filtered out with `grep -v in6_addr`. Instead just
    rewrite the definition of _in6_addr to [16]byte wherever it appears.

  * timestruc_t is now (correctly) emitted as an alias for timespec, so this
    case is handled specially.

  * stdio.h is included in sysinfo.c to avoid emitting an incomplete
    definition of the FILE type.

  * Dummy definitions for _u?pad128_t are now emitted automatically,
    which conflict with the definitions installed by mk[r]sysinfo.sh.
    These definitions were actually dead code, so just remove them.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/278672
2020-12-20 20:16:50 -08:00
Ian Lance Taylor
5128f8d0d9 compiler: check for floating-point exponent overflow
Adjust mksysinfo and mkrsysinfo to strip out floating-point max numbers,
as they can trigger this error.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/278476
2020-12-18 15:56:20 -08:00
Ian Lance Taylor
5ea350d1d7 libgo: update to 1.15.6 release
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/276153
2020-12-08 14:01:04 -08:00
Ian Lance Taylor
9121f80841 syscall: don't use AF_LINK on hurd
Patch from Svante Signell.

Fixes PR go/98153

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/275939
2020-12-07 17:08:48 -08:00
Ian Lance Taylor
918a5b84a2 runtime: update type descriptor name in fieldtrack C support code
We were using the old name, but nothing noticed because it is a weak
reference that is permitted to be nil, so that it works with code that
does not use the field tracking library.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/275449
2020-12-04 14:51:09 -08:00
Ian Lance Taylor
cd34d5f2c4 compiler: defer to middle-end for complex division
Go used to use slightly different semantics than C99 for complex division,
so we used runtime routines to handle the different.  The gc compiler
has changes its behavior to match C99, so changes ours as well.

For golang/go#14644

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/274213
2020-12-03 08:21:02 -08:00
Ian Lance Taylor
eafb46ce90 internal/cpu: don't define CacheLinePadSize for mips64x
For libgo the definition comes from the generated file cpugen.go.

Fixes PR go/98041

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/273866
2020-11-30 12:24:17 -08:00
Ian Lance Taylor
9ebad4b01c compiler, runtime: check len/cap for append(s, make(T, l)...)
The overflow checks done in growslice always reported an error for the
capacity argument, even if it was the length argument that overflowed.
This change lets the code pass the current issue4085b.go test.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/273806
2020-11-30 12:22:14 -08:00
Ian Lance Taylor
e848a83f46 libgo: define SO_RCVTIMEO on 32-bit GNU/Linux
Fixes golang/go#42872

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/273892
2020-11-30 12:17:01 -08:00