Age | Commit message (Collapse) | Author | Files | Lines |
|
Patch from Andreas Schwab.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/281000
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/276153
|
|
Patch from Svante Signell.
Fixes PR go/98153
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/275939
|
|
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
|
|
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
|
|
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
|
|
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
|
|
Fixes golang/go#42872
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/273892
|
|
Patch from Rainer Orth.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/272259
|
|
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/272146
|
|
Overhaul the mangling scheme to avoid ambiguities if the package path
contains a dot. Instead of using dot both to separate components and
to mangle characters, use dot only to separate components and use
underscore to mangle characters.
For golang/go#41862
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/271726
|
|
This is a port of two patches in the master repository.
https://golang.org/cl/259298
cmd/cgo: split gofrontend mangling checks into cmd/internal/pkgpath
This is a step toward porting https://golang.org/cl/219817 from the
gofrontend repo to the main repo.
Note that this also corrects the implementation of the v2 mangling
scheme to use ..u and ..U where appropriate.
https://golang.org/cl/259299
cmd/go: use cmd/internal/pkgpath for gccgo pkgpath symbol
For golang/go#37272
For golang/go#41862
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/270637
|
|
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/268177
|
|
On NetBSD, for backwards compatibility, various libc symbols are
renamed to a symbol with a version suffix. For example, this is the
(abbreviated) definition of sigaction:
int sigaction(...) __asm__ ("__sigaction14")
This poses a challenge for libgo, which attempts to link sigaction by
way of an "//extern" comment:
//extern sigaction
func sigaction(...)
This results in a reference to the deprecated compatibility symbol
"sigaction", rather than the desired "__sigaction14" symbol.
This patch introduces a new "//extern-sysinfo" comment to handle this
situation. The new mklinknames.awk script scans a package for these
comments and outputs a "//go:linkname" directive that links the wrapper
to the correct versioned symbol, as determined by parsing the __asm__
annotation on the function's declaration in gen-sysinfo.go.
For now, only the following packages are scanned by mklinknames.awk:
os
os/user
runtime
syscall
gotools/:
* Makefile.am (check-runtime): Add runtime_linknames.go to
--extrafiles.
* Makefile.in: Regenerate.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/265125
|
|
This new file was based on master sources that are built for *BSD
but not Solaris
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/266017
|
|
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/265717
|
|
This is the gofrontend version of https://golang.org/cl/259297.
This is required now because that change is in the 1.15.3 release.
This requires changing the go/internal/gccgoimporter package, to skip
the new annotation. This change will need to be ported to the gc and
x/tools repos.
For golang/go#41761
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/265258
|
|
Import additional code from upstream for handing system
calls on BSD systems. This makes the syscall package on
NetBSD complete enough to compile the standard library.
Updates golang/go#38538.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/265123
|
|
Incorporate upstream modifications to the cgi package's set of rules
about which environment variables should be inherited by child processes
by default on each platform. In particular this permits tests to pass on
NetBSD by preserving the value of the LD_LIBRARY_PATH environment
variable.
This is a partial backport of the following upstream CLs:
https://golang.org/cl/263802
https://golang.org/cl/263577
https://golang.org/cl/254740
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/264097
|
|
Only compile the __go_ptrace varargs shim on Linux to avoid compilation
failures on some other platforms. The C ptrace function is not entirely
portable (e.g., NetBSD has `int data` instead of `void* data`), and so
far Linux is the only platform that needs the varargs shim.
Additionally, make the types in the ptrace and raw_ptrace function
declarations match. This makes it more clear that the only difference
between the two is that calls via the former are allowed to block while
calls via the latter are not.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/263517
|
|
Import some missing upstream code for BSD sockets and sysctls and
adapt it for gccgo.
Updates golang/go#38538.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/261137
|
|
The backwards-compatibility guarantees of the syscall package
require some munging of the C API inferred by mksysinfo.sh.
Specifically, the RTM_RESOLVE constant must be added if it is
missing, and the stat_t struct must use the suffix "timespec"
rather than "tim" for its time-related fields.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/263519
|
|
NetBSD does not support the sendfile syscall.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/263521
|
|
Make the types of the addr and data arguments in the __go_ptrace shim
match the types declared in Go and the types declared by the C ptrace
function, i.e., void*. This avoids a warning about an implicit
int-to-pointer cast on some platforms.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/262340
|
|
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/262342
|
|
Calls to _Unwind_RaiseException and friends *can* return due to bugs in
libgo or memory corruption. When this occurs, print a message to stderr
with the reason code before aborting to aid debugging.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/261257
|
|
The syscall package depends on many NetBSD-specific types on NetBSD.
Teach mksysinfo.sh to export these types.
This alone is not sufficient to get the syscall package to compile on
NetBSD, but it's a start.
Note that the IfMsgHdr type is recapitalized to IfMsghdr, which requires
changes in the AIX port. The new capitalization is what's used by
upstream in existing NetBSD-specific code and is more consistent with
the capitalization of other C structs with the "hdr" suffix.
Updates golang/go#38538.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/261739
|
|
NetBSD's semaphores use the underlying lighweight process mechanism
(LWP) on NetBSD, rather than pthreads. This means the m.prodcid needs
to be set to the LWP ID rather than the pthread ID in order for unpark
notifications to get sent to the right place.
Introduce a new getProcID() method that selects the correct ID for the
platform.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/261742
|
|
The NetBSD libc provides an architecture-independent macro that can
extract the PC from a ucontext struct.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/261740
|
|
NetBSD does not include the null terminator when in its reported socket
length. Port the upstream bugfix for the issue (#6627).
This was likely missed during the usual upstream merge because the gc
and gccgo socket implementations have diverged quite a bit.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/261741
|
|
On AIX, duplication of type descriptors can occur if one is
declared in the libgo and one in the Go program being compiled.
The AIX linker isn't able to merge them together as Linux one does.
One solution is to always load libgo first but that needs a huge mechanism in
gcc core. Thus, this patch ensures that the duplication isn't visible
for the end user.
In reflect and internal/reflectlite, the comparison of rtypes is made on their
name and not only on their addresses.
In reflect, toType() function is using a canonicalization map to force rtypes
having the same rtype.String() to return the same Type. This can't be made in
internal/reflectlite as it needs sync package. But, for now, it doesn't matter
as internal/reflectlite is not widely used.
Fixes golang/go#39276
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/260158
|
|
This option is no longer needed. There is no crash without it since
at least gcc-9.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/260157
|
|
match.sh was not correctly handling build constraints for Go versions
that have a two-digit suffix, like "go1.10".
The same issue will arise with Go 1.100, but that is a long ways off.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/260077
|
|
Fixes golang/go#41737
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/258977
|
|
Add support for the 32-bit RISC-V (RV32) ISA matching the 64-bit RISC-V
(RV64) port except for async preemption added as a stub only.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/251179
|
|
Patch from Svante Signell.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/257857
|
|
AIX ptrace syscalls doesn't have the same semantic than the glibc one.
The syscall package is already handling it correctly so disable the new
__go_ptrace C function for AIX.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/256777
|
|
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/256618
|
|
Syscall function can't be used on AIX. Therefore, Ioctl in
TestForeground must call raw_ioctl.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/175080
|
|
ptrace is available only for 32 bits programs.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/252558
|
|
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/235158
|