From: Ian Lance Taylor Date: Thu, 19 Sep 2019 00:03:25 +0000 (+0000) Subject: libgo: support gollvm build on arm64 linux X-Git-Tag: misc/cutover-git~2649 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ab2d47a87fe8a0989c766a0082f4598d9bf6143d;p=thirdparty%2Fgcc.git libgo: support gollvm build on arm64 linux This CL serves as part of an initial change for enabling gollvm building on arm64 linux, the rest of the change will be covered by another one to the gollvm repo. Incorporate type definition of 'uint128' to 'runtime' and 'syscall' packges, the change is not specific to arm64 linux but made available for all platforms. Verified by building and unit-testing gollvm on linux x86-64 and arm64. Verified by building and checking gccgo on linux x86-64 and arm64. Fixes golang/go#33711 Change-Id: I4720c7d810cfd4ef720962fb4104c5641b2459c0 From-SVN: r275919 --- diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index 4b7a4b3073b4..330c458ec8c6 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -09ca3c1ea8a52b5d3d6c4331c59d44e0b6bfab57 +d81ff42c367cce2110ccf5ddbadb6cc9bdf94e28 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. diff --git a/libgo/mkrsysinfo.sh b/libgo/mkrsysinfo.sh index 0a5e29ed4ba4..c28f0e5f1f69 100755 --- a/libgo/mkrsysinfo.sh +++ b/libgo/mkrsysinfo.sh @@ -209,3 +209,9 @@ grep '^type _kevent ' gen-sysinfo.go | \ sed -e s'/_kevent/keventt/' \ -e 's/ udata [^;}]*/ udata *byte/' \ >> ${OUT} + +# Type 'uint128' is needed in a couple of type definitions on arm64,such +# as _user_fpsimd_struct, _elf_fpregset_t, etc. +if ! grep '^type uint128' ${OUT} > /dev/null 2>&1; then + echo "type uint128 [16]byte" >> ${OUT} +fi diff --git a/libgo/mksysinfo.sh b/libgo/mksysinfo.sh index d616bd809770..488b223b434f 100755 --- a/libgo/mksysinfo.sh +++ b/libgo/mksysinfo.sh @@ -1393,4 +1393,10 @@ grep '^type _mactun_info_t ' gen-sysinfo.go | \ sed -e 's/_in6_addr_t/[16]byte/g' \ >> ${OUT} +# Type 'uint128' is needed in a couple of type definitions on arm64,such +# as _user_fpsimd_struct, _elf_fpregset_t, etc. +if ! grep '^type uint128' ${OUT} > /dev/null 2>&1; then + echo "type uint128 [16]byte" >> ${OUT} +fi + exit $? diff --git a/libgo/sysinfo.c b/libgo/sysinfo.c index 4ab798c49788..0692fd41eb79 100644 --- a/libgo/sysinfo.c +++ b/libgo/sysinfo.c @@ -424,7 +424,11 @@ EREF(MNT_FORCE); #if defined(HAVE_SYS_PTRACE_H) // From +#if defined (__aarch64__) +SREF(user_pt_regs); +#else SREF(pt_regs); +#endif EREF(PTRACE_PEEKTEXT); #endif