aboutsummaryrefslogtreecommitdiff
path: root/libgo/go
AgeCommit message (Collapse)AuthorFilesLines
2018-09-13compiler, runtime: open code selectIan Lance Taylor1-205/+61
This is the gofrontend version of https://golang.org/cl/37933, https://golang.org/cl/37934, and https://golang.org/cl/37935. Open code the initialization of select cases. This is a step toward updating libgo to the 1.11 release. Reviewed-on: https://go-review.googlesource.com/135000 From-SVN: r264290
2018-09-13runtime: avoid write barriers with traceback infoIan Lance Taylor4-6/+8
Unlike the gc runtime, libgo stores traceback information in location structs, which contain strings. Therefore, copying location structs around appears to require write barriers, although in fact write barriers are never important because the strings are never allocated in Go memory. They come from libbacktrace. Some of the generated write barriers come at times when write barriers are not permitted. For example, exitsyscall, marked nowritebarrierrec, calls exitsyscallfast which calls traceGoSysExit which calls traceEvent which calls traceStackID which calls trace.stackTab.put which copies location values into memory allocated by tab.newStack. This write barrier can be invoked when there is no p, causing a crash. This change fixes the problem by ensuring that location values are copied around in the tracing code with no write barriers. This was found by fixing the compiler to fully implement //go:nowritebarrierrec; CL to follow. Reviewed-on: https://go-review.googlesource.com/134226 From-SVN: r264282
2018-09-13libgo: build roots index to speed up bulkBarrierPreWriteIan Lance Taylor4-21/+122
To reduce the amount of time spent in write barrier processing (specifically runtime.bulkBarrierPreWrite), add support for building a 'GC roots index', basically a sorted list of all roots, so as to allow more efficient lookups of gcdata structures for globals. The previous implementation worked on the raw (unsorted) roots list itself, which did not scale well. Reviewed-on: https://go-review.googlesource.com/132595 From-SVN: r264276
2018-08-29compiler, runtime: remove hmap field from maptypesIan Lance Taylor3-15/+1
This is the gofrontend version of https://golang.org/cl/91796. This is part of that CL, just the compiler change and required runtime changes, in preparation for updating libgo to 1.11. Relevant part of original CL description: The hmap field in the maptype is only used by the runtime to check the sizes of the hmap structure created by the compiler and runtime agree. Comments are already present about the hmap structure definitions in the compiler and runtime needing to be in sync. Reviewed-on: https://go-review.googlesource.com/130976 From-SVN: r263941
2018-08-24runtime: remove the dummy arg of getcallerspIan Lance Taylor7-27/+25
This is a port of https://golang.org/cl/109596 to the gofrontend, in preparation for updating libgo to 1.11. Original CL description: getcallersp is intrinsified, and so the dummy arg is no longer needed. Remove it, as well as a few dummy args that are solely to feed getcallersp. Reviewed-on: https://go-review.googlesource.com/131116 From-SVN: r263840
2018-08-07runtime: use poll rather than pollset for netpoll on AIXIan Lance Taylor2-109/+95
Updates golang/go#26634 Reviewed-on: https://go-review.googlesource.com/126857 From-SVN: r263364
2018-08-07libgo: uncomment trace.Stop() call in testing packageIan Lance Taylor1-1/+1
Fix up the testing package to insure that execution traces work properly (e.g. "-test.trace=<XXX>" command line option). The call to stop tracing and emit the output file was stubbed out. Reviewed-on: https://go-review.googlesource.com/128275 From-SVN: r263363
2018-07-27libgo: prune sighandler frames in runtime.sigprofIan Lance Taylor2-11/+70
When writing stack frames to the pprof CPU profile machinery, it is very important to insure that the frames emitted do not contain any frames corresponding to artifacts of the profiling process itself (signal handlers, sigprof, etc). This patch changes runtime.sigprof to strip out those frames from the raw stack generated by "runtime.callers". Fixes golang/go#26595. Reviewed-on: https://go-review.googlesource.com/126175 From-SVN: r263035
2018-07-13runtime: skip zero-sized fields in structs when converting to FFIIan Lance Taylor1-3/+45
The libffi library doesn't understand zero-sized objects. When we see a zero-sized field in a struct, just skip it when converting to the FFI data structures. There is no value to pass in any case, so not telling libffi about the field doesn't affect anything. The test case for this is https://golang.org/cl/123316. Fixes golang/go#26335 Reviewed-on: https://go-review.googlesource.com/123335 From-SVN: r262651
2018-07-02re PR go/86331 (the gccgo's "go" tool looks like failing to invoke any sub ↵Ian Lance Taylor1-2/+5
go command) PR go/86331 os: check return value as well as error from waitid https://gcc.gnu.org/PR86331 indicates that if a signal handler runs it is possible for syscall.Syscall6 to return a non-zero errno value even if no error occurs. That is a problem in general, but this fix will let us work around the general problem for the specific case of calling waitid. Reviewed-on: https://go-review.googlesource.com/121595 From-SVN: r262313
2018-06-22syscall: remove UstatIan Lance Taylor1-12/+0
glibc 2.28 removes ustat.h and the ustat function entirely, which breaks syscall.Ustat. Updates golang/go#25990 Reviewed-on: https://go-review.googlesource.com/120535 From-SVN: r261896
2018-06-21cmd/go: re-enable a couple of tests of gccgoIan Lance Taylor1-2/+0
Port https://golang.org/cl/120375 over to the gofrontend repo so that it gets more reliable testing. Updates golang/go#22472 Reviewed-on: https://go-review.googlesource.com/120395 From-SVN: r261871
2018-06-13libgo: update to Go 1.10.3 releaseIan Lance Taylor26-323/+548
Reviewed-on: https://go-review.googlesource.com/118495 From-SVN: r261549
2018-06-11libgo: add riscv and js/wasm as known targetsIan Lance Taylor2-3/+4
Incorporates cut down versions of https://golang.org/cl/102835 and https://golang.org/cl/106256 from the master sources. This will tell go/build to skip files with those tags. Reviewed-on: https://go-review.googlesource.com/117996 From-SVN: r261451
2018-06-06reflect: fix StructOf hash and stringIan Lance Taylor2-2/+13
Adjust the hash and string fields computed by StructOf to match the values that the compiler computes for a struct type with the same field names and types. This makes the reflect code match the compiler's Type::hash_for_method and Type::reflection methods. Fixes golang/go#25284 Reviewed-on: https://go-review.googlesource.com/116515 From-SVN: r261235
2018-06-05reflect: canonicalize types returned by StructOf() and friendsIan Lance Taylor2-20/+33
Background: since gccgo does not currently merge identical types at link time, the reflect function canonicalize() exists to choose a canonical specimen for each set of identical types. In this way, user code has the guarantee that identical types will always compare as == Change: arrange reflect functions MapOf(), SliceOf(), StructOf() etc. to call canonicalize() on the types they create, before storing the types in internal lookup caches and returning them. This fixes known cases where canonicalize() is needed but was missing. Supersedes https://golang.org/cl/112575 and mostly fixes issue 25284. Updates golang/go#25284 Reviewed-on: https://go-review.googlesource.com/115577 From-SVN: r261216
2018-05-31libgo: update to Go 1.10.2 releaseIan Lance Taylor31-155/+808
Reviewed-on: https://go-review.googlesource.com/115196 From-SVN: r261041
2018-05-30cmd/go, cmd/vet: make vet work with gccgoIan Lance Taylor5-10/+34
Backport https://golang.org/cl/113715 and https://golang.org/cl/113716: cmd/go: don't pass -compiler flag to vet Without this running go vet -compiler=gccgo causes vet to fail. The vet tool does need to know the compiler, but it is passed in vetConfig.Compiler. cmd/go, cmd/vet, go/internal/gccgoimport: make vet work with gccgo When using gccgo/GoLLVM, there is no package file for a standard library package. Since it is impossible for the go tool to rebuild the package, and since the package file exists only in the form of a .gox file, this seems like the best choice. Unfortunately it was confusing vet, which wanted to see a real file. This caused vet to report errors about missing package files for standard library packages. The gccgoimporter knows how to correctly handle this case. Fix this by 1) telling vet which packages are standard; 2) letting vet skip those packages; 3) letting the gccgoimporter handle this case. As a separate required fix, gccgo/GoLLVM has no runtime/cgo package, so don't try to depend on it (as it happens, this fixes golang/go#25324). The result is that the cmd/go vet tests pass when using -compiler=gccgo. Reviewed-on: https://go-review.googlesource.com/114516 From-SVN: r260913
2018-05-30crypto/x509: specify path to AIX certificate fileIan Lance Taylor1-1/+3
Reviewed-on: https://go-review.googlesource.com/113179 From-SVN: r260908
2018-05-09go/build, cmd/go: update to match recent changes to gcIan Lance Taylor7-47/+163
Several recent changes to the gc version of cmd/go improve the gofrontend support. These changes are partially copies of existing gofrontend differences, and partially new code. This CL makes the gofrontend match the upstream code. The changes included here come from: https://golang.org/cl/111575 https://golang.org/cl/111595 https://golang.org/cl/111635 https://golang.org/cl/111636 For the record, the following recent gc changes are based on code already present in the gofrontend repo: https://golang.org/cl/110915 https://golang.org/cl/111615 For the record, a gc change, partially based on earlier gofrontend work, also with new gc code, was already copied to gofrontend repo in CL 111099: https://golang.org/cl/111097 This moves the generated list of standard library packages from cmd/go/internal/load to go/build. Reviewed-on: https://go-review.googlesource.com/112475 gotools/: * Makefile.am (check-go-tool): Don't copy zstdpkglist.go. * Makefile.in: Rebuild. From-SVN: r260097
2018-05-04cmd/go: on AIX, pass -X64 first when invoking arIan Lance Taylor1-1/+1
Reviewed-on: https://go-review.googlesource.com/111535 From-SVN: r259946
2018-05-04cmd/go: update mkalldocs.shIan Lance Taylor2-9/+11
Update mkalldocs.sh from the current master sources, replacing the old mkdoc.sh. Reviewed-on: https://go-review.googlesource.com/111096 From-SVN: r259920
2018-05-04cmd/go: enable tests of vet toolIan Lance Taylor1-4/+0
Since gofrontend does have the vet tool now, we can test it. Reviewed-on: https://go-review.googlesource.com/111095 From-SVN: r259919
2018-05-04cmd/go: update to match recent changes to gcIan Lance Taylor7-20/+46
In https://golang.org/cl/111097 the gc version of cmd/go was updated to include some gofrontend-specific changes. The gofrontend code already has different versions of those changes; this CL makes the gofrontend match the upstream code. Reviewed-on: https://go-review.googlesource.com/111099 From-SVN: r259918
2018-05-03cmd/go: run tests that require package build IDsIan Lance Taylor1-2/+0
These tests used to be disabled in the gofrontend since the go tool didn't support build IDs for the gofrontend. It does now, so enable the tests again. Reviewed-on: https://go-review.googlesource.com/111098 From-SVN: r259875
2018-05-02libgo: add support for the Nios II architectureIan Lance Taylor8-7/+9
Reviewed-on: https://go-review.googlesource.com/90775 From-SVN: r259866
2018-05-02runtime: remove unused stack.goIan Lance Taylor1-1229/+0
We're never going to use stack.go for gccgo. Although a build tag keeps it from being built, even having it around can be confusing. Remove it. Reviewed-on: https://go-review.googlesource.com/40774 From-SVN: r259865
2018-05-01re PR go/85429 (Several gotools tests FAIL with Solaris as)Ian Lance Taylor1-2/+21
PR go/85429 cmd/go: support more Solaris assembler syntaxes Patch by Rainer Orth. Reviewed-on: https://go-review.googlesource.com/110563 From-SVN: r259797
2018-04-27re PR go/85429 (Several gotools tests FAIL with Solaris as)Ian Lance Taylor1-3/+9
PR go/85429 cmd/go: add Solaris assembler syntax for gccgo buildid file The Solaris assembler uses a different syntax for section directives. This is https://golang.org/cl/109140 ported over to gccgo. Reviewed-on: https://go-review.googlesource.com/109141 From-SVN: r259719
2018-04-17os/signal: disable loading of history during testIan Lance Taylor1-0/+2
Bring in https://golang.org/cl/98616 from gc tip. Original CL description: This change modifies Go to disable loading of users' shell history for TestTerminalSignal tests. TestTerminalSignal, as part of its workload, will execute a new interactive bash shell. Bash will attempt to load the user's history from the file pointed to by the HISTFILE environment variable. For users with large histories that may take up to several seconds, pushing the whole test past the 5 second timeout and causing it to fail. Reviewed-on: https://go-review.googlesource.com/107624 From-SVN: r259452
2018-04-17gccgo: suppress "ar rcD" and "-zdefs" on AIXIan Lance Taylor1-5/+8
Reviewed-on: https://go-review.googlesource.com/100955 From-SVN: r259445
2018-03-26runtime: don't check for stale runtimeIan Lance Taylor1-0/+3
The gccgo runtime is never stale, and on a system with gc sources in ~/go the test may wind up checking whether the gc runtime is stale. Reviewed-on: https://go-review.googlesource.com/102282 From-SVN: r258865
2018-03-15cmd/go: force LANG=C when looking for compiler versionIan Lance Taylor1-1/+12
Tested by installing the gcc-locales package and running LANG=de_DE.utf8 go build hello.go Without this change, that fails, as described at https://gcc.gnu.org/PR84765. Reviewed-on: https://go-review.googlesource.com/100737 From-SVN: r258565
2018-03-07runtime: push arena on AIX higher due to clashesIan Lance Taylor1-2/+2
Reviewed-on: https://go-review.googlesource.com/99117 From-SVN: r258337
2018-02-28runtime: update AIX memory allocation for new versionsIan Lance Taylor1-5/+8
Reviewed-on: https://go-review.googlesource.com/97357 From-SVN: r258052
2018-02-28libgo: update to final Go 1.10 releaseIan Lance Taylor4-9/+64
Reviewed-on: https://go-review.googlesource.com/97517 From-SVN: r258051
2018-02-22re PR go/84484 (libgo configure tests fail to find -latomic)Andreas Schwab8-7/+9
PR go/84484 libgo: add support for riscv64 Patch by Andreas Schwab. Reviewed-on: https://go-review.googlesource.com/96377 * go.test/go-test.exp (go-set-goarch): Recognize riscv64-*-*. From-SVN: r257914
2018-02-20runtime: allow preemption in fast syscall returnIan Lance Taylor1-0/+7
Let a fast syscall return be a preemption point. This helps with tight loops that make system calls, as in BenchmarkSyscallExcessWork. Reviewed-on: https://go-review.googlesource.com/94895 From-SVN: r257848
2018-02-16runtime: add some more preemption checksIan Lance Taylor5-2/+46
In particular this lets BenchmarkPingPongHog in runtime/proc_test.go complete. Reviewed-on: https://go-review.googlesource.com/94735 From-SVN: r257743
2018-02-12compiler: error on func declaration/definitionIan Lance Taylor2-21/+0
Long long long ago Go permitted writing func F() in one file and writing func F() {} in another file. This was removed from the language, and that is now considered to be a multiple definition error. Gccgo never caught up to that, and it has been permitting this invalid code for some time. Stop permitting it, so that we give correct errors. Since we've supported it for a long time, the compiler uses it in a couple of cases: it predeclares the hash/equal methods if it decides to create them while compiling another function, and it predeclares main.main as a mechanism for getting the right warning if a program uses the wrong signature for main. For simplicity, keep those existing uses. This required a few minor changes in libgo which were relying, unnecessarily, on the current behavior. Reviewed-on: https://go-review.googlesource.com/93083 From-SVN: r257600
2018-02-12re PR go/84215 (Random results in go/libgo tests)Ian Lance Taylor3-50/+69
PR go/84215 runtime, sync/atomic: use write barrier for atomic pointer functions This copies atomic_pointer.go from 1.10rc2. It was omitted during the transition of the runtime from C to Go, and I forgot about it. This may help with https://gcc.gnu.org/PR84215. Reviewed-on: https://go-review.googlesource.com/93197 From-SVN: r257599
2018-02-08runtime: get missing function name from symbol tableIan Lance Taylor5-0/+177
If we trace back through code that has no debug info, as when calling through C code compiled with -g0, we won't have a function name. Try to fetch the function name using the symbol table. Adding the test case revealed that gotest failed to use the gccgo tag when matching files, so add that. Reviewed-on: https://go-review.googlesource.com/92756 From-SVN: r257495
2018-02-08libgo: update to Go1.10rc2Ian Lance Taylor32-319/+1001
Reviewed-on: https://go-review.googlesource.com/92736 From-SVN: r257493
2018-02-07runtime: don't call funcPC from a functionIan Lance Taylor3-6/+8
The escape analysis support is not yet good enough to avoid escaping the argument to funcPC. This causes unnecessary and often harmful memory allocation. E.g., (*cpuProfile).addExtra can be called from a signal handler, and it must not allocate memory. Move the calls to funcPC to use variables instead. This was done in the original migration to using funcPC, but was not done for newer code. In one case, in signal handling code, use getSigtramp. Reviewed-on: https://go-review.googlesource.com/92735 From-SVN: r257463
2018-02-06runtime: correct runtime structfield type to match reflectIan Lance Taylor2-6/+14
The offset field in structfield has changed to offsetAnon, and now requires a shift to get the actual offset value. Fixes golang/go#23391 Reviewed-on: https://go-review.googlesource.com/92275 From-SVN: r257413
2018-02-05cmd/go: don't lose last flag from _cgo_flagsIan Lance Taylor1-0/+3
The quoting code that read _cgo_flags, currently only in the gccgo version of cmd/go, was losing the last flag read from the file. Fixes golang/go#23666 Reviewed-on: https://go-review.googlesource.com/91655 From-SVN: r257373
2018-02-02reflect: enable allocation testsIan Lance Taylor1-6/+0
They were disabled due to the lack of escape analysis. Now that we have escape analysis, unskip these tests. Reviewed-on: https://go-review.googlesource.com/86248 From-SVN: r257324
2018-02-02runtime: scan register backing store on ia64Ian Lance Taylor1-0/+4
On ia64, a separate stack is used for saving/restoring register frames, occupying the other end of the stack mapping. This must also be scanned for pointers into the heap. Reviewed-on: https://go-review.googlesource.com/85276 From-SVN: r257323
2018-02-01math: adjust compilation flags, use them when testingIan Lance Taylor1-5/+5
We were using special compilation flags for the math package, but we weren't using them when testing. That meant that our tests were not checking the real code we were providing. Fix that. Fixing that revealed that we were not using a good set of flags, or at least were not using flags that let the tests pass. Adjust the flags to stop using -funsafe-math-optimizations on x86. Instead always use -ffp-contract=off -fno-math-errno -fno-trapping-math for all targets. Fixes golang/go#23647 Reviewed-on: https://go-review.googlesource.com/91355 From-SVN: r257312
2018-02-01compiler: omit field name for embedded fields in reflection stringIan Lance Taylor1-0/+8
This matches the gc compiler. The test case was sent for the master repo as https://golang.org/cl/91138. Fixes golang/go#23620 Reviewed-on: https://go-review.googlesource.com/91139 From-SVN: r257300