mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-12-11 21:03:45 +08:00
4a7a8e11a3
libgo: Backport from mainline With the change in the Solaris release model (no more major releases like Solaris 12 but only minor ones like 11.4), the Solaris 12 references in GCC need to be adapted. Patch by Rainer Orth. Reviewed-on: https://go-review.googlesource.com/77490 libgcc: Backport from mainline 2017-11-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> * config.host (*-*-solaris2*): Adapt comment for Solaris 12 renaming. * config/sol2/crtpg.c (__start_crt_compiler): Likewise. * configure.ac (libgcc_cv_solaris_crts): Likewise. * configure: Regenerate. gcc: Backport from mainline 2017-11-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> * config.gcc (*-*-solaris2*): Enable default_use_cxa_atexit since Solaris 11. Update comment. * configure.ac (gcc_cv_ld_pid): Adapt comment for Solaris 12 renaming. * config/sol2.h (STARTFILE_SPEC): Likewise. * configure: Regenerate. gcc/testsuite: Backport from mainline 2017-11-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> * lib/target-supports.exp (check_effective_target_pie): Adapt comment for Solaris 12 renaming. * gcc.dg/torture/pr60092.c: Remove *-*-solaris2.11* dg-xfail-run-if. From-SVN: r254994
148 lines
5.3 KiB
Bash
Executable File
148 lines
5.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Copyright 2016 The Go Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style
|
|
# license that can be found in the LICENSE file.
|
|
|
|
# Create runtime_sysinfo.go from gen-sysinfo.go and errno.i.
|
|
|
|
OUT=tmp-runtime_sysinfo.go
|
|
|
|
set -e
|
|
|
|
echo 'package runtime' > ${OUT}
|
|
|
|
# Get all the consts and types, skipping ones which could not be
|
|
# represented in Go and ones which we need to rewrite. We also skip
|
|
# function declarations, as we don't need them here. All the symbols
|
|
# will all have a leading underscore.
|
|
grep -v '^// ' gen-sysinfo.go | \
|
|
grep -v '^func' | \
|
|
grep -v '^var ' | \
|
|
grep -v '^type _timeval ' | \
|
|
grep -v '^type _timespec_t ' | \
|
|
grep -v '^type _timespec ' | \
|
|
grep -v '^type _epoll_' | \
|
|
grep -v 'in6_addr' | \
|
|
grep -v 'sockaddr_in6' | \
|
|
sed -e 's/\([^a-zA-Z0-9_]\)_timeval\([^a-zA-Z0-9_]\)/\1timeval\2/g' \
|
|
-e 's/\([^a-zA-Z0-9_]\)_timespec_t\([^a-zA-Z0-9_]\)/\1timespec\2/g' \
|
|
-e 's/\([^a-zA-Z0-9_]\)_timespec\([^a-zA-Z0-9_]\)/\1timespec\2/g' \
|
|
>> ${OUT}
|
|
|
|
# The time structures need special handling: we need to name the
|
|
# types, so that we can cast integers to the right types when
|
|
# assigning to the structures.
|
|
timeval=`grep '^type _timeval ' gen-sysinfo.go`
|
|
timeval_sec=`echo $timeval | sed -n -e 's/^.*tv_sec \([^ ]*\);.*$/\1/p'`
|
|
timeval_usec=`echo $timeval | sed -n -e 's/^.*tv_usec \([^ ]*\);.*$/\1/p'`
|
|
echo "type timeval_sec_t $timeval_sec" >> ${OUT}
|
|
echo "type timeval_usec_t $timeval_usec" >> ${OUT}
|
|
echo $timeval | \
|
|
sed -e 's/type _timeval /type timeval /' \
|
|
-e 's/tv_sec *[a-zA-Z0-9_]*/tv_sec timeval_sec_t/' \
|
|
-e 's/tv_usec *[a-zA-Z0-9_]*/tv_usec timeval_usec_t/' >> ${OUT}
|
|
echo >> ${OUT}
|
|
echo "func (tv *timeval) set_usec(x int32) {" >> ${OUT}
|
|
echo " tv.tv_usec = timeval_usec_t(x)" >> ${OUT}
|
|
echo "}" >> ${OUT}
|
|
|
|
timespec=`grep '^type _timespec ' gen-sysinfo.go || true`
|
|
if test "$timespec" = ""; then
|
|
# IRIX 6.5 has __timespec instead.
|
|
timespec=`grep '^type ___timespec ' gen-sysinfo.go || true`
|
|
fi
|
|
timespec_sec=`echo $timespec | sed -n -e 's/^.*tv_sec \([^ ]*\);.*$/\1/p'`
|
|
timespec_nsec=`echo $timespec | sed -n -e 's/^.*tv_nsec \([^ ]*\);.*$/\1/p'`
|
|
echo "type timespec_sec_t $timespec_sec" >> ${OUT}
|
|
echo "type timespec_nsec_t $timespec_nsec" >> ${OUT}
|
|
echo $timespec | \
|
|
sed -e 's/^type ___timespec /type timespec /' \
|
|
-e 's/^type _timespec /type timespec /' \
|
|
-e 's/tv_sec *[a-zA-Z0-9_]*/tv_sec timespec_sec_t/' \
|
|
-e 's/tv_nsec *[a-zA-Z0-9_]*/tv_nsec timespec_nsec_t/' >> ${OUT}
|
|
echo >> ${OUT}
|
|
echo "func (ts *timespec) set_sec(x int64) {" >> ${OUT}
|
|
echo " ts.tv_sec = timespec_sec_t(x)" >> ${OUT}
|
|
echo "}" >> ${OUT}
|
|
echo >> ${OUT}
|
|
echo "func (ts *timespec) set_nsec(x int32) {" >> ${OUT}
|
|
echo " ts.tv_nsec = timespec_nsec_t(x)" >> ${OUT}
|
|
echo "}" >> ${OUT}
|
|
|
|
# Define the epollevent struct. This needs special attention because
|
|
# the C definition uses a union and is sometimes packed.
|
|
if grep '^const _epoll_data_offset ' ${OUT} >/dev/null 2>&1; then
|
|
val=`grep '^const _epoll_data_offset ' ${OUT} | sed -e 's/const _epoll_data_offset = \(.*\)$/\1/'`
|
|
if test "$val" = "4"; then
|
|
echo 'type epollevent struct { events uint32; data [8]byte }' >> ${OUT}
|
|
elif test "$val" = "8"; then
|
|
echo 'type epollevent struct { events uint32; pad [4]byte; data [8]byte }' >> ${OUT}
|
|
else
|
|
echo 1>&2 "unknown epoll data offset value ${val}"
|
|
exit 1
|
|
fi
|
|
fi
|
|
# Make sure EPOLLET is positive.
|
|
if grep '^const _EPOLLET = [0-9]' gen-sysinfo.go > /dev/null 2>&1; then
|
|
echo "const _EPOLLETpos = _EPOLLET" >> ${OUT}
|
|
else
|
|
echo "const _EPOLLETpos = 0x80000000" >> ${OUT}
|
|
fi
|
|
# Make sure EPOLLRDHUP and EPOLL_CLOEXEC are defined.
|
|
if ! grep '^const _EPOLLRDHUP' ${OUT} >/dev/null 2>&1; then
|
|
echo "const _EPOLLRDHUP = 0x2000" >> ${OUT}
|
|
fi
|
|
if ! grep '^const _EPOLL_CLOEXEC' ${OUT} >/dev/null 2>&1; then
|
|
echo "const _EPOLL_CLOEXEC = 02000000" >> ${OUT}
|
|
fi
|
|
|
|
# The semt structure, for Solaris.
|
|
grep '^type _sem_t ' gen-sysinfo.go | \
|
|
sed -e 's/_sem_t/semt/' >> ${OUT}
|
|
|
|
# Solaris 2 needs _u?pad128_t, but its default definition in terms of long
|
|
# double is commented by -fdump-go-spec.
|
|
if grep "^// type _pad128_t" gen-sysinfo.go > /dev/null 2>&1; then
|
|
echo "type _pad128_t struct { _l [4]int32; }" >> ${OUT}
|
|
fi
|
|
if grep "^// type _upad128_t" gen-sysinfo.go > /dev/null 2>&1; then
|
|
echo "type _upad128_t struct { _l [4]uint32; }" >> ${OUT}
|
|
fi
|
|
|
|
# The Solaris 11 Update 1 _zone_net_addr_t struct.
|
|
grep '^type _zone_net_addr_t ' gen-sysinfo.go | \
|
|
sed -e 's/_in6_addr/[16]byte/' \
|
|
>> ${OUT}
|
|
|
|
# The Solaris 11.4 _flow_arp_desc_t struct.
|
|
grep '^type _flow_arp_desc_t ' gen-sysinfo.go | \
|
|
sed -e 's/_in6_addr_t/[16]byte/g' \
|
|
>> ${OUT}
|
|
|
|
# The Solaris 11.4 _flow_l3_desc_t struct.
|
|
grep '^type _flow_l3_desc_t ' gen-sysinfo.go | \
|
|
sed -e 's/_in6_addr_t/[16]byte/g' \
|
|
>> ${OUT}
|
|
|
|
# The Solaris 11.3 _mac_ipaddr_t struct.
|
|
grep '^type _mac_ipaddr_t ' gen-sysinfo.go | \
|
|
sed -e 's/_in6_addr_t/[16]byte/g' \
|
|
>> ${OUT}
|
|
|
|
# The Solaris 11.3 _mactun_info_t struct.
|
|
grep '^type _mactun_info_t ' gen-sysinfo.go | \
|
|
sed -e 's/_in6_addr_t/[16]byte/g' \
|
|
>> ${OUT}
|
|
|
|
# The Solaris port_event_t struct.
|
|
grep '^type _port_event_t ' gen-sysinfo.go | \
|
|
sed -e s'/_port_event_t/portevent/' \
|
|
>> ${OUT}
|
|
|
|
# The *BSD kevent struct.
|
|
grep '^type _kevent ' gen-sysinfo.go | \
|
|
sed -e s'/_kevent/keventt/' \
|
|
-e 's/ udata [^;}]*/ udata *byte/' \
|
|
>> ${OUT}
|