Commit Graph

618 Commits

Author SHA1 Message Date
Ian Lance Taylor
ab24432b9a re PR go/65462 (Use of 'go get' with gccgo is not finding dependencies correctly)
PR go/65462
cmd: Fix dependencies for 'go get' with gccgo

Problem described in GCC BZ 65462.
Generate the list of the standard GO package names based on what was built into libgo in the libgo Makefile.
Change the var name from reqPkgSrc to reqStdPkgSrc to clarify it only affects standard GO packages.
Skip the attempted loading of a package only if it is a standard GO package and the flag is set indicating its source is not required to be available.
This requires a corresponding change to gotools to build and link in the new file containing the list of standard GO package names that was generated by the libgo Makefile.

gotools/:
	PR go/65462
	* Makefile.am (go_cmd_go_files): Add $(libgodir)/zstdpkglist.go.
	* Makefile.in: Rebuild.

From-SVN: r221643
2015-03-24 19:50:31 +00:00
Ian Lance Taylor
f41914c385 libgo/README: Minor updates.
In particular, mention that libgo should not be stripped.

From-SVN: r221427
2015-03-13 18:53:13 +00:00
Ian Lance Taylor
2960e09d9d go/build: cgo works on linux/arm64.
From-SVN: r221398
2015-03-12 17:05:22 +00:00
Ian Lance Taylor
64b54a6fd2 re PR go/65404 (cgo tool on powerpc-linux-gnu maybe incomplete)
PR go/65404
go/build: cgo works on linux/pcc.

From-SVN: r221396
2015-03-12 16:41:28 +00:00
Ian Lance Taylor
1c1f0c595b re PR go/65353 (unknown ptrSize for $GOARCH "arm64" on aarch64-linux-gnu)
PR go/65353.
cmd/cgo: Add all gccgo GOARCH values to size maps.

From-SVN: r221293
2015-03-10 00:14:58 +00:00
Ian Lance Taylor
dc4d494ae9 re PR go/65349 (go tool crashes, can't compile go code on 32bit linux systems)
PR go/65349
runtime: Don't crash if explicitly freeing small map.

From-SVN: r221292
2015-03-09 23:43:16 +00:00
Ian Lance Taylor
4729d7726b re PR go/65349 (go tool crashes, can't compile go code on 32bit linux systems)
PR go/65349
runtime: Don't call malloc from __go_file_line callback.

When crashing, we call runtime_printcreatedby which calls
__go_file_line which used to call the Go malloc.  If we are
crashing due to a signal due to heap corruption of some sort,
the GO malloc lock might already be held, leading to a crash
within a crash.  Avoid that by assuming that the libbacktrace
strings will stick around, as we already do in go-callers.c.

From-SVN: r221291
2015-03-09 23:40:58 +00:00
Ian Lance Taylor
c271e224c2 libgo: Upgrade to Go 1.4.2 release.
From-SVN: r221245
2015-03-06 16:19:05 +00:00
Ian Lance Taylor
898c81f831 mksysinfo.sh: Remove _zone_net_addr_t handling.
From Rainer Orth.

The recent godump changes broke Solaris 11.1+ bootstrap in
libgo: before, gen-sysinfo.so had

type _zone_net_addr_t struct { zna_family uint16; zna_plen uint16; zna_addru struct { znau_addr6 _in6_addr; }; }

which was filtered out by mksysinfo.sh due to the use of
_in6_addr.

After the change, there's now

type _zone_net_addr_t struct { zna_family uint16; zna_plen uint16; zna_addru struct { znau_addr6 [16]byte; Godump_0_align [0]uint32; }; }

instead, not filtered, but added a second time by the
_zone_net_addr_t code in mksysinfo.sh, which leads to
redefinition warnings/errors.

Simply removing the old _zone_net_addr_t fragment fixes this
and restores bootstrap.

From-SVN: r220481
2015-02-06 16:18:14 +00:00
Ian Lance Taylor
8c5c44aa7e runtime: Add memprofilerate to GODEBUG
Add memprofilerate as a value recognized
in the GODEBUG env var.  The value provided
is used as the new setting for
runtime.MemProfileRate, allowing the user
to adjust memory profiling.

From-SVN: r220470
2015-02-06 05:03:22 +00:00
Ian Lance Taylor
bfdd75a859 go/types: Remove unused testdata files.
The go/types package was removed in July 2013, but the
testdata files were accidentally left behind.

From-SVN: r220378
2015-02-03 21:39:27 +00:00
Ian Lance Taylor
ba986acb05 re PR go/64573 (Cmd.Start swallows error from fork()/clone())
PR go/64573
syscall: Restore line somehow lost in libgo merge.

From-SVN: r220068
2015-01-23 23:45:04 +00:00
Ian Lance Taylor
9d8d3ba2bc re PR go/64725 (FAIL: libgo/runtime TestFinalizerType testing.go:278: #2: finalizer for type func(*int) didn't run)
PR go/64725
runtime: Disable tests that require that a finalizer run.

From-SVN: r220067
2015-01-23 23:22:29 +00:00
Ian Lance Taylor
e0a0c2f4c6 re PR go/64595 (go programs abort when debug info is stripped)
PR go/64595
runtime: Don't crash in runtime_callers if no debug info available.

From-SVN: r220057
2015-01-23 19:49:53 +00:00
Ian Lance Taylor
6632034718 runtime: Add the Go language version information to the Version output.
From-SVN: r219976
2015-01-21 23:03:41 +00:00
Ian Lance Taylor
73cb399d51 re PR go/64683 (FAIL: runtime/pprof -- testing.go:278: The entry did not match)
PR go/64683
runtime/pprof: Let memory profiler test pass if value not collected.

Since gccgo's GC is not precise, the transient value may not
be collected.  Let the regexp match that case as well.

From-SVN: r219900
2015-01-20 16:11:36 +00:00
Ian Lance Taylor
cea526b81c runtime: No special case for 386 complex in FFI support.
All supported libgo 386 targets now have complex support in
libffi.

From Uros Bizjak.

From-SVN: r219877
2015-01-20 04:18:12 +00:00
Richard Henderson
3bac62c2b2 Add attribute unused to dummy arguments in ffi stub
From-SVN: r219862
2015-01-19 14:10:59 -08:00
Ian Lance Taylor
b077669c47 reflect: Fix build for systems that do not define ffi_go_closure.
From-SVN: r219831
2015-01-19 02:56:28 +00:00
Ian Lance Taylor
0f59f5c120 runtime: Add __sparc__ case for SETCONTEXT_CLOBBERS_TLS.
The glibc setcontext incorrectly modifies %g7 on SPARC.

From Richard Henderson.

From-SVN: r219778
2015-01-16 23:23:31 +00:00
Ian Lance Taylor
20780a006f testing/quick: Revert Alpha specific change.
No longer needed now that libffi supports complex types.

From-SVN: r219777
2015-01-16 23:19:20 +00:00
Richard Henderson
38bf819a5f compiler, reflect, runtime: Use static chain for closures.
Change from using __go_set_closure to passing the closure
value in the static chain field.  Uses new backend support for
setting the closure chain in a call from C via
__builtin_call_with_static_chain.  Uses new support in libffi
for Go closures.

The old architecture specific support for reflect.MakeFunc is
removed, replaced by the libffi support.

All work done by Richard Henderson.

	* go-gcc.cc (Gcc_backend::call_expression): Add chain_expr argument.
	(Gcc_backend::static_chain_variable): New method.

From-SVN: r219776
2015-01-16 22:58:53 +00:00
Ian Lance Taylor
72d7151a72 net: Restore earlier Solaris-specific version of setKeepAlivePeriod.
The version from the master repository seems to be appropriate
for OpenSolaris but not for Solaris itself.  Solaris 11.2
proper does not define TCP_KEEPIDLE or TCP_KEEPINTVL.

From-SVN: r219749
2015-01-16 15:57:32 +00:00
Ian Lance Taylor
cb054b6341 runtime: Use a struct, not void, for an empty struct for libffi.
A recent libffi upgrade caused the reflect test to fail on
386.  The problem case is a function that returns an empty
struct--a struct with no fields.  The libffi library does not
recognize the existence of empty structs, presumably since
they can't happen in C.  To work around this, the Go interface
to the libffi library changes an empty struct to void.  This
normally works fine, but with the new libffi upgrade it fails
for a function that returns an empty struct.  On 386 a
function that returns a struct is expected to pop the hidden
pointer when it returns.  So when we convert an empty struct
to void, libffi is calling a function that pops the hidden
pointer but does not expect that to happen.

In the older version of libffi, this didn't matter, because
the libffi code for 386 used a frame pointer, so the fact that
the stack pointer was wonky when the function returned was
ignored as the stack pointer was immediately replaced by the
saved frame pointer.  In the newer version of libffi, the 386
code is more efficient and does not use a frame pointer, and
therefore it matters whether libffi expects the function to
pop the hidden pointer or not.

This patch changes libgo to convert an empty to a struct with
a single field of type void.  This seems to be enough to get
the test cases working again.

Of course the real fix would be to change libffi to handle
empty types, but as libffi uses size == 0 as a marker for an
uninitialized type, that would be a non-trivial change.

From-SVN: r219701
2015-01-16 02:54:13 +00:00
Ian Lance Taylor
1d59990631 go/build: cgo works on linux/alpha.
From Uros Bizjak.

From-SVN: r219691
2015-01-15 22:06:54 +00:00
Ian Lance Taylor
4c16468417 reflect: Correct error in conversion of s390x support to Go 1.4.
From-SVN: r219685
2015-01-15 20:42:43 +00:00
Ian Lance Taylor
d5d9c650a2 libgo: Bump version number in libgo configure script.
From-SVN: r219629
2015-01-15 00:52:38 +00:00
Ian Lance Taylor
3307c079d5 Add files somehow left out of last commit (upgrade to Go 1.4).
From-SVN: r219628
2015-01-15 00:40:25 +00:00
Ian Lance Taylor
f8d9fa9e80 libgo, compiler: Upgrade libgo to Go 1.4, except for runtime.
This upgrades all of libgo other than the runtime package to
the Go 1.4 release.  In Go 1.4 much of the runtime was
rewritten into Go.  Merging that code will take more time and
will not change the API, so I'm putting it off for now.

There are a few runtime changes anyhow, to accomodate other
packages that rely on minor modifications to the runtime
support.

The compiler changes slightly to add a one-bit flag to each
type descriptor kind that is stored directly in an interface,
which for gccgo is currently only pointer types.  Another
one-bit flag (gcprog) is reserved because it is used by the gc
compiler, but gccgo does not currently use it.

There is another error check in the compiler since I ran
across it during testing.

gotools/:
	* Makefile.am (go_cmd_go_files): Sort entries.  Add generate.go.
	* Makefile.in: Rebuild.

From-SVN: r219627
2015-01-15 00:27:56 +00:00
Ian Lance Taylor
bb782ca3ec cmd/go: Back-port CL 157460043 (pass $CGO_LDFLAGS to linker with the "gccgo" toolchain).
From-SVN: r219419
2015-01-10 01:01:10 +00:00
Ian Lance Taylor
b44fb4c37a cmd/go: Adjust finding gccgo to match current upstream sources.
From-SVN: r219406
2015-01-09 21:18:04 +00:00
Ian Lance Taylor
d9ebff44bb cmd/go: Use builtin constant to set default gccgo compiler.
Don't look it up on PATH.  This lets a go tool built as part
of a GCC build use the gccgo from the same build.

Also pass -c when assembling a .s file with gccgo.

From-SVN: r219358
2015-01-08 20:32:42 +00:00
Ian Lance Taylor
7d7d64c1ae libgo: Add sources for go, cgo, and gofmt commands.
The new commands are not yet built.  That will be done
separately.

Also include a few changes to go/build to support them.

From-SVN: r219272
2015-01-06 23:26:02 +00:00
Ian Lance Taylor
24fa8749bb re PR go/61871 (FAIL: regexp from libgo testsuite on non-split stack targets)
PR go/61871
runtime: Increase stack size on 64-bit non-split-stack systems.

From Uros Bizjak.

From-SVN: r219192
2015-01-05 16:13:06 +00:00
Ian Lance Taylor
bca4b95c4a runtime: Remove undefined references to runtime_race*.
From-SVN: r219049
2014-12-23 20:33:53 +00:00
Ian Lance Taylor
658b028ad0 mksysinfo: Pass -O to compiler to avoid warnings on CentOS.
From Uros Bizjak.
https://gcc.gnu.org/ml/gcc-patches/2014-12/msg01366.html

From-SVN: r218819
2014-12-17 14:26:55 +00:00
Ian Lance Taylor
9ac18f8c2a re PR go/61258 (gccgo: assertion failure go-map-delete.c:37 [GoSmith])
PR go/61258
runtime: Don't crash when deleting zero-sized key.

From-SVN: r218702
2014-12-13 01:58:46 +00:00
Ian Lance Taylor
e846322c86 testing: Add testing.MainStart function.
This patches in the Go 1.4 function, for convenience for
people using the Go 1.4 go tool with mainline gccgo.

From-SVN: r218700
2014-12-13 01:00:49 +00:00
Ian Lance Taylor
c31fc2f424 runtime: Clear stack pointers for extra G's.
Fix an unusual C to Go callback case.  Newly created C threads
call into Go code, forcing the Go code to allocate new M and G
structures.  While executing Go code, the stack is split.  The
Go code then returns.  Returning from a Go callback is treated
as entering a system call, so the G gcstack field is set to
point to the Go stack.  In this case, though, we were called
from a newly created C thread, so we drop the extra M and G
structures.  The C thread then exits.

Then a new C thread calls into Go code, reusing the previously
created M and G.  The Go code requires a larger stack frame,
causing the old stack segment to be unmapped and a new stack
segment allocated.  At this point the gcstack field is
pointing to the old stack segment.

Then a garbage collection occurs.  The garbage collector sees
that the gcstack field is not nil, so it scans it as the first
stack segment.  Unfortunately it points to memory that was
unmapped.  So the program crashes.

The fix is simple: when handling extra G structures created
for callbacks from new C threads, clear the gcstack field.

From-SVN: r218699
2014-12-13 00:52:20 +00:00
Kyrylo Tkachov
69aef6dcdc Add load of target-utils.exp to libatomic, libitm, libvtv, libgo testsuite drivers
* testsuite/lib/libatomic.exp: Load target-utils.exp

	* testsuite/lib/libitm.exp: Load target-utils.exp.
	Move load of target-supports.exp earlier.

	* testsuite/lib/libvtv.exp: Load target-utils.exp

From-SVN: r218664
2014-12-12 12:00:01 +00:00
Ian Lance Taylor
4368bc4589 runtime: introduce mvifdiff.sh script to replace GCC's move-if-change
This goes towards making libgo more self-contained.

From-SVN: r218198
2014-12-01 01:06:29 +00:00
Ian Lance Taylor
6f7ccafa91 runtime: GOARCH values for ppc64 BE & LE
ppc64 for BE
ppc64le for LE
issue 8654

From-SVN: r217941
2014-11-21 18:22:05 +00:00
Ian Lance Taylor
4c46b5f0c2 runtime: set library name based on compiler name
Different compilers may have different release cadences or ABI
incompatibilities, so it does not make sense to use the same library
name for runtime libraries intended for different compilers.

This CL causes a libgo built by llgo to receive the name libgo-llgo.
Likewise, libgobegin is named libgobegin-llgo.

From-SVN: r217583
2014-11-14 18:02:50 +00:00
Ian Lance Taylor
327a26a3af libgo: Update libtool support to files in current GCC trunk.
From-SVN: r217404
2014-11-12 03:51:36 +00:00
Dominik Vogt
4ad4ebfeae runtime: Use stckf unconditionally on s390.
2014-11-05  Dominik Vogt  <vogt@linux.vnet.ibm.com>

* libgo/runtime/runtime.c (runtime_cputicks): s390: use stckf
unconditionally

From-SVN: r217195
2014-11-06 17:00:13 +00:00
Dominik Vogt
5c2648fb01 mksysinfo: Tolerate missing structures in upcase_fields.
2014-11-06  Dominik Vogt  <vogt@linux.vnet.ibm.com>

* libgo/mksysinfo.sh: Tolerate missing structures.

From-SVN: r217194
2014-11-06 16:44:32 +00:00
Ian Lance Taylor
c9bc4e2d2b sync/atomic: fix data races in tests
Backport https://codereview.appspot.com/111320044 from Go
master library.

From-SVN: r217110
2014-11-05 03:39:49 +00:00
Ian Lance Taylor
1fec5f5274 libgo: add s390 support
From Dominik Vogt.

* libgo/go/syscall/libcall_linux_s390.go: New file for s390 support.
* libgo/go/syscall/syscall_linux_s390.go: Ditto.
* libgo/go/syscall/libcall_linux_s390x.go: New file for s390x support.
* libgo/go/syscall/syscall_linux_s390x.go: Ditto.
* libgo/go/runtime/pprof/pprof.go (printStackRecord): Support s390 and
s390x.
* libgo/runtime/runtime.c (runtime_cputicks): Add support for s390 and
s390x
* libgo/mksysinfo.sh: Ditto.
(upcase_fields): New helper function

* libgo/go/debug/elf/file.go (applyRelocations): Implement relocations
on s390x.
(applyRelocationsS390x): Ditto.
(DWARF): Ditto.
* libgo/go/debug/elf/elf.go (R_390): New constants for S390 relocations.
(r390Strings): Ditto.
(String): Helper function for S390 relocations.
(GoString): Ditto.

* libgo/go/reflect/makefuncgo_s390.go: New file.
(S390MakeFuncStubGo): Implementation of s390 abi.
* libgo/go/reflect/makefuncgo_s390x.go: New file.
(S390xMakeFuncStubGo): Implementation of s390x abi.
* libgo/go/reflect/makefunc_s390.c: New file.
(makeFuncStub): s390 and s390x specific implementation of function.
* libgo/go/reflect/makefunc.go
(MakeFunc): Add support for s390 and s390x.
(makeMethodValue): Ditto.
(makeValueMethod): Ditto.
* libgo/Makefile.am (go_reflect_makefunc_s_file): Ditto.
(go_reflect_makefunc_file): Ditto.
* libgo/go/reflect/makefunc_dummy.c: Ditto.
* libgo/runtime/runtime.h (__go_makefunc_can_recover): Export prototype
for use in makefunc_s390.c.
(__go_makefunc_returning): Ditto.

* libgo/go/syscall/exec_linux.go (forkAndExecInChild): Fix order of the
arguments of the clone system call for s390[x].

* libgo/configure.ac (is_s390): New variable.
(is_s390x): Ditto
(LIBGO_IS_S390): Ditto.
(LIBGO_IS_S390X): Ditto.
(GOARCH): Support s390 and s390x.
* libgo/go/go/build/build.go (cgoEnabled): Ditto.
* libgo/go/go/build/syslist.go (goarchList): Ditto.

From-SVN: r217106
2014-11-04 22:39:30 +00:00
Ian Lance Taylor
24606f7137 runtime: use "$GOC -dumpversion" instead of BASE-VER to discover compiler version
From-SVN: r217049
2014-11-03 16:30:51 +00:00
Ian Lance Taylor
5d51c2d70c debug/elf: add power64 support along with relocation test
Backport of https://codereview.appspot.com/125910043 from the
dev.power64 branch of the master repository.

From-SVN: r216813
2014-10-28 22:57:35 +00:00