libgo: add s390 support
commit141eb62b271e86f160340936655dfbc302b31356
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 4 Nov 2014 22:39:30 +0000 (4 22:39 +0000)
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 4 Nov 2014 22:39:30 +0000 (4 22:39 +0000)
tree770354d65e888c2d5026ac0f9759649f58da3104
parentb41c650b1b57b1f77b9bafdb3bcfa36b132ce0e0
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217106 138bc75d-0d04-0410-961f-82ee72b054a4
20 files changed:
libgo/Makefile.am
libgo/Makefile.in
libgo/configure
libgo/configure.ac
libgo/go/debug/elf/elf.go
libgo/go/debug/elf/file.go
libgo/go/go/build/build.go
libgo/go/go/build/syslist.go
libgo/go/reflect/makefunc.go
libgo/go/reflect/makefunc_s390.c [new file with mode: 0644]
libgo/go/reflect/makefuncgo_s390.go [new file with mode: 0644]
libgo/go/reflect/makefuncgo_s390x.go [new file with mode: 0644]
libgo/go/runtime/pprof/pprof.go
libgo/go/syscall/exec_linux.go
libgo/go/syscall/libcall_linux_s390.go [new file with mode: 0644]
libgo/go/syscall/libcall_linux_s390x.go [new file with mode: 0644]
libgo/go/syscall/syscall_linux_s390.go [new file with mode: 0644]
libgo/go/syscall/syscall_linux_s390x.go [new file with mode: 0644]
libgo/mksysinfo.sh
libgo/runtime/runtime.c