dc9e47ae00
Use pmbootstrap aportgen to generate these new packages. [ci:skip-vercheck]
199 lines
8.1 KiB
Diff
199 lines
8.1 KiB
Diff
From 3b9243b891cc06373639a23ed5717b0d1c2d8ea6 Mon Sep 17 00:00:00 2001
|
|
From: Ian Lance Taylor <iant@golang.org>
|
|
Date: Tue, 14 Jun 2022 06:13:43 -0700
|
|
Subject: [PATCH] libgo: permit loff_t and off_t to be macros
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
They are macros in musl libc, rather than typedefs, and -fgo-dump-spec
|
|
doesn't handle that case.
|
|
|
|
Based on patch by Sören Tempel.
|
|
|
|
Change-Id: Ic9a608fd964a6f78e754aa8e3100aff06ab3dade
|
|
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/412075
|
|
Reviewed-by: Ian Lance Taylor <iant@google.com>
|
|
Reviewed-by: Cherry Mui <cherryyz@google.com>
|
|
|
|
libgo: #include <sys/types.h> when checking for loff_t
|
|
|
|
Fixes https://gcc.gnu.org/PR106033
|
|
Fixes golang/go#53469
|
|
|
|
Change-Id: I060021b7bb9334949b567442448abb6822fd6d35
|
|
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/413214
|
|
Reviewed-by: Cherry Mui <cherryyz@google.com>
|
|
Reviewed-by: Than McIntosh <thanm@google.com>
|
|
---
|
|
libgo/config.h.in | 3 +++
|
|
libgo/configure | 12 ++++++++++--
|
|
libgo/configure.ac | 11 +++++++++--
|
|
libgo/go/syscall/libcall_linux.go | 17 +++++++++--------
|
|
libgo/mksysinfo.sh | 6 +-----
|
|
libgo/sysinfo.c | 15 ++++++++++++++-
|
|
6 files changed, 46 insertions(+), 18 deletions(-)
|
|
|
|
diff --git a/libgo/config.h.in b/libgo/config.h.in
|
|
index 25b8ab8f9ee..2c3c7469675 100644
|
|
--- a/libgo/config.h.in
|
|
+++ b/libgo/config.h.in
|
|
@@ -70,6 +70,9 @@
|
|
/* Define to 1 if you have the `fchownat' function. */
|
|
#undef HAVE_FCHOWNAT
|
|
|
|
+/* Define to 1 if you have the <fcntl.h> header file. */
|
|
+#undef HAVE_FCNTL_H
|
|
+
|
|
/* Define to 1 if you have the `futimesat' function. */
|
|
#undef HAVE_FUTIMESAT
|
|
|
|
diff --git a/libgo/configure b/libgo/configure
|
|
index ffe17c9be55..61a49947eb9 100755
|
|
--- a/libgo/configure
|
|
+++ b/libgo/configure
|
|
@@ -15249,7 +15249,7 @@ $as_echo "#define HAVE_GETIPINFO 1" >>confdefs.h
|
|
fi
|
|
|
|
|
|
-for ac_header in port.h sched.h semaphore.h sys/file.h sys/mman.h syscall.h sys/epoll.h sys/event.h sys/inotify.h sys/ptrace.h sys/syscall.h sys/sysctl.h sys/user.h sys/utsname.h sys/select.h sys/socket.h net/bpf.h net/if.h net/if_arp.h net/route.h netpacket/packet.h sys/prctl.h sys/mount.h sys/vfs.h sys/statfs.h sys/timex.h sys/sysinfo.h utime.h linux/ether.h linux/fs.h linux/ptrace.h linux/reboot.h netinet/in_syst.h netinet/ip.h netinet/ip_mroute.h netinet/if_ether.h lwp.h
|
|
+for ac_header in fcntl.h port.h sched.h semaphore.h sys/file.h sys/mman.h syscall.h sys/epoll.h sys/event.h sys/inotify.h sys/ptrace.h sys/syscall.h sys/sysctl.h sys/user.h sys/utsname.h sys/select.h sys/socket.h net/bpf.h net/if.h net/if_arp.h net/route.h netpacket/packet.h sys/prctl.h sys/mount.h sys/vfs.h sys/statfs.h sys/timex.h sys/sysinfo.h utime.h linux/ether.h linux/fs.h linux/ptrace.h linux/reboot.h netinet/in_syst.h netinet/ip.h netinet/ip_mroute.h netinet/if_ether.h lwp.h
|
|
do :
|
|
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
|
|
ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
|
|
@@ -15546,7 +15546,14 @@ _ACEOF
|
|
|
|
fi
|
|
|
|
-ac_fn_c_check_type "$LINENO" "loff_t" "ac_cv_type_loff_t" "$ac_includes_default"
|
|
+
|
|
+CFLAGS_hold="$CFLAGS"
|
|
+CFLAGS="$OSCFLAGS $CFLAGS"
|
|
+ac_fn_c_check_type "$LINENO" "loff_t" "ac_cv_type_loff_t" "
|
|
+#include <sys/types.h>
|
|
+#include <fcntl.h>
|
|
+
|
|
+"
|
|
if test "x$ac_cv_type_loff_t" = xyes; then :
|
|
|
|
cat >>confdefs.h <<_ACEOF
|
|
@@ -15556,6 +15563,7 @@ _ACEOF
|
|
|
|
fi
|
|
|
|
+CFLAGS="$CFLAGS_hold"
|
|
|
|
LIBS_hold="$LIBS"
|
|
LIBS="$LIBS -lm"
|
|
diff --git a/libgo/configure.ac b/libgo/configure.ac
|
|
index 7e2b98ba67c..274fcfc35c7 100644
|
|
--- a/libgo/configure.ac
|
|
+++ b/libgo/configure.ac
|
|
@@ -579,7 +579,7 @@ AC_C_BIGENDIAN
|
|
|
|
GCC_CHECK_UNWIND_GETIPINFO
|
|
|
|
-AC_CHECK_HEADERS(port.h sched.h semaphore.h sys/file.h sys/mman.h syscall.h sys/epoll.h sys/event.h sys/inotify.h sys/ptrace.h sys/syscall.h sys/sysctl.h sys/user.h sys/utsname.h sys/select.h sys/socket.h net/bpf.h net/if.h net/if_arp.h net/route.h netpacket/packet.h sys/prctl.h sys/mount.h sys/vfs.h sys/statfs.h sys/timex.h sys/sysinfo.h utime.h linux/ether.h linux/fs.h linux/ptrace.h linux/reboot.h netinet/in_syst.h netinet/ip.h netinet/ip_mroute.h netinet/if_ether.h lwp.h)
|
|
+AC_CHECK_HEADERS(fcntl.h port.h sched.h semaphore.h sys/file.h sys/mman.h syscall.h sys/epoll.h sys/event.h sys/inotify.h sys/ptrace.h sys/syscall.h sys/sysctl.h sys/user.h sys/utsname.h sys/select.h sys/socket.h net/bpf.h net/if.h net/if_arp.h net/route.h netpacket/packet.h sys/prctl.h sys/mount.h sys/vfs.h sys/statfs.h sys/timex.h sys/sysinfo.h utime.h linux/ether.h linux/fs.h linux/ptrace.h linux/reboot.h netinet/in_syst.h netinet/ip.h netinet/ip_mroute.h netinet/if_ether.h lwp.h)
|
|
|
|
AC_CHECK_HEADERS([netinet/icmp6.h], [], [],
|
|
[#include <netinet/in.h>
|
|
@@ -601,7 +601,14 @@ AC_STRUCT_DIRENT_D_TYPE
|
|
|
|
AC_CHECK_FUNCS(accept4 dup3 epoll_create1 faccessat fallocate fchmodat fchownat futimesat getxattr inotify_add_watch inotify_init inotify_init1 inotify_rm_watch listxattr mkdirat mknodat open64 openat pipe2 removexattr renameat setxattr sync_file_range splice syscall tee unlinkat unshare utimensat)
|
|
AC_TYPE_OFF_T
|
|
-AC_CHECK_TYPES([loff_t])
|
|
+
|
|
+CFLAGS_hold="$CFLAGS"
|
|
+CFLAGS="$OSCFLAGS $CFLAGS"
|
|
+AC_CHECK_TYPES([loff_t], [], [], [[
|
|
+#include <sys/types.h>
|
|
+#include <fcntl.h>
|
|
+]])
|
|
+CFLAGS="$CFLAGS_hold"
|
|
|
|
LIBS_hold="$LIBS"
|
|
LIBS="$LIBS -lm"
|
|
diff --git a/libgo/go/syscall/libcall_linux.go b/libgo/go/syscall/libcall_linux.go
|
|
index 96974bd3269..65eb1a745f7 100644
|
|
--- a/libgo/go/syscall/libcall_linux.go
|
|
+++ b/libgo/go/syscall/libcall_linux.go
|
|
@@ -209,19 +209,20 @@ func Gettid() (tid int) {
|
|
//sys Setxattr(path string, attr string, data []byte, flags int) (err error)
|
|
//setxattr(path *byte, name *byte, value *byte, size Size_t, flags _C_int) _C_int
|
|
|
|
-//sys splice(rfd int, roff *_loff_t, wfd int, woff *_loff_t, len int, flags int) (n int64, err error)
|
|
-//splice(rfd _C_int, roff *_loff_t, wfd _C_int, woff *_loff_t, len Size_t, flags _C_uint) Ssize_t
|
|
+//sys splice(rfd int, roff *_libgo_loff_t_type, wfd int, woff *_libgo_loff_t_type, len int, flags int) (n int64, err error)
|
|
+//splice(rfd _C_int, roff *_libgo_loff_t_type, wfd _C_int, woff *_libgo_loff_t_type, len Size_t, flags _C_uint) Ssize_t
|
|
+
|
|
func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {
|
|
- var lroff _loff_t
|
|
- var plroff *_loff_t
|
|
+ var lroff _libgo_loff_t_type
|
|
+ var plroff *_libgo_loff_t_type
|
|
if roff != nil {
|
|
- lroff = _loff_t(*roff)
|
|
+ lroff = _libgo_loff_t_type(*roff)
|
|
plroff = &lroff
|
|
}
|
|
- var lwoff _loff_t
|
|
- var plwoff *_loff_t
|
|
+ var lwoff _libgo_loff_t_type
|
|
+ var plwoff *_libgo_loff_t_type
|
|
if woff != nil {
|
|
- lwoff = _loff_t(*woff)
|
|
+ lwoff = _libgo_loff_t_type(*woff)
|
|
plwoff = &lwoff
|
|
}
|
|
n, err = splice(rfd, plroff, wfd, plwoff, len, flags)
|
|
diff --git a/libgo/mksysinfo.sh b/libgo/mksysinfo.sh
|
|
index 0c52ea5d71a..5aa309155c3 100755
|
|
--- a/libgo/mksysinfo.sh
|
|
+++ b/libgo/mksysinfo.sh
|
|
@@ -403,11 +403,7 @@ fi
|
|
# Some basic types.
|
|
echo 'type Size_t _size_t' >> ${OUT}
|
|
echo "type Ssize_t _ssize_t" >> ${OUT}
|
|
-if grep '^const _HAVE_OFF64_T = ' gen-sysinfo.go > /dev/null 2>&1; then
|
|
- echo "type Offset_t _off64_t" >> ${OUT}
|
|
-else
|
|
- echo "type Offset_t _off_t" >> ${OUT}
|
|
-fi
|
|
+echo "type Offset_t _libgo_off_t_type" >> ${OUT}
|
|
echo "type Mode_t _mode_t" >> ${OUT}
|
|
echo "type Pid_t _pid_t" >> ${OUT}
|
|
echo "type Uid_t _uid_t" >> ${OUT}
|
|
diff --git a/libgo/sysinfo.c b/libgo/sysinfo.c
|
|
index 336a5983750..fc0210992fa 100644
|
|
--- a/libgo/sysinfo.c
|
|
+++ b/libgo/sysinfo.c
|
|
@@ -354,6 +354,18 @@ enum {
|
|
};
|
|
#endif
|
|
|
|
+#if defined(HAVE_LOFF_T)
|
|
+// loff_t can be defined as a macro; for -fgo-dump-spec make sure we
|
|
+// see a typedef.
|
|
+typedef loff_t libgo_loff_t_type;
|
|
+#endif
|
|
+
|
|
+#if defined(HAVE_OFF64_T)
|
|
+typedef off64_t libgo_off_t_type;
|
|
+#else
|
|
+typedef off_t libgo_off_t_type;
|
|
+#endif
|
|
+
|
|
// The following section introduces explicit references to types and
|
|
// constants of interest to support bootstrapping libgo using a
|
|
// compiler that doesn't support -fdump-go-spec (e.g., clang), via
|
|
@@ -534,7 +546,8 @@ SREF(timex);
|
|
// From sys/types.h
|
|
TREF(pid_t);
|
|
TREF(off_t);
|
|
-TREF(loff_t);
|
|
+TREF(libgo_loff_t_type);
|
|
+TREF(libgo_off_t_type);
|
|
TREF(size_t);
|
|
TREF(ssize_t);
|
|
TREF(mode_t);
|