summaryrefslogtreecommitdiffstats
path: root/vendor/rustix/ci
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/rustix/ci')
-rw-r--r--vendor/rustix/ci/getsockopt-timeouts.patch80
-rw-r--r--vendor/rustix/ci/s390x-stat-have-nsec.patch27
-rw-r--r--vendor/rustix/ci/translate-errno.patch28
3 files changed, 135 insertions, 0 deletions
diff --git a/vendor/rustix/ci/getsockopt-timeouts.patch b/vendor/rustix/ci/getsockopt-timeouts.patch
new file mode 100644
index 000000000..a9a989325
--- /dev/null
+++ b/vendor/rustix/ci/getsockopt-timeouts.patch
@@ -0,0 +1,80 @@
+From: Dan Gohman <dev@sunfishcode.online>
+Subject: [PATCH] Avoid storing unexpected values for `SO_RCVTIMEO_NEW` etc.
+
+This issue is reported upstream [here].
+
+[here]: https://gitlab.com/qemu-project/qemu/-/issues/885
+
+---
+ linux-user/generic/sockbits.h | 2 ++
+ linux-user/mips/sockbits.h | 2 ++
+ linux-user/sparc/sockbits.h | 2 ++
+ linux-user/syscall.c | 6 ++++++
+ 4 files changed, 12 insertions(+)
+
+diff --git a/linux-user/generic/sockbits.h b/linux-user/generic/sockbits.h
+index b3b4a8e44c..f95747e3cc 100644
+--- a/linux-user/generic/sockbits.h
++++ b/linux-user/generic/sockbits.h
+@@ -36,6 +36,8 @@
+ #define TARGET_SO_SNDLOWAT 19
+ #define TARGET_SO_RCVTIMEO 20
+ #define TARGET_SO_SNDTIMEO 21
++#define TARGET_SO_RCVTIMEO_NEW 66
++#define TARGET_SO_SNDTIMEO_NEW 67
+
+ /* Security levels - as per NRL IPv6 - don't actually do anything */
+ #define TARGET_SO_SECURITY_AUTHENTICATION 22
+diff --git a/linux-user/mips/sockbits.h b/linux-user/mips/sockbits.h
+index 562cad88e2..4d411f7b61 100644
+--- a/linux-user/mips/sockbits.h
++++ b/linux-user/mips/sockbits.h
+@@ -39,6 +39,8 @@
+ #define TARGET_SO_RCVLOWAT 0x1004 /* receive low-water mark */
+ #define TARGET_SO_SNDTIMEO 0x1005 /* send timeout */
+ #define TARGET_SO_RCVTIMEO 0x1006 /* receive timeout */
++#define TARGET_SO_RCVTIMEO_NEW 66
++#define TARGET_SO_SNDTIMEO_NEW 67
+ #define TARGET_SO_ACCEPTCONN 0x1009
+ #define TARGET_SO_PROTOCOL 0x1028 /* protocol type */
+ #define TARGET_SO_DOMAIN 0x1029 /* domain/socket family */
+diff --git a/linux-user/sparc/sockbits.h b/linux-user/sparc/sockbits.h
+index 0a822e3e1f..8420ef9953 100644
+--- a/linux-user/sparc/sockbits.h
++++ b/linux-user/sparc/sockbits.h
+@@ -26,6 +26,8 @@
+ #define TARGET_SO_SNDLOWAT 0x1000
+ #define TARGET_SO_RCVTIMEO 0x2000
+ #define TARGET_SO_SNDTIMEO 0x4000
++#define TARGET_SO_RCVTIMEO_NEW 68
++#define TARGET_SO_SNDTIMEO_NEW 69
+ #define TARGET_SO_ACCEPTCONN 0x8000
+
+ #define TARGET_SO_SNDBUF 0x1001
+diff --git a/linux-user/syscall.c b/linux-user/syscall.c
+index a8eae3c4ac..8326e03a19 100644
+--- a/linux-user/syscall.c
++++ b/linux-user/syscall.c
+@@ -2348,6 +2348,9 @@ set_timeout:
+ case TARGET_SO_SNDTIMEO:
+ optname = SO_SNDTIMEO;
+ goto set_timeout;
++ case TARGET_SO_RCVTIMEO_NEW:
++ case TARGET_SO_SNDTIMEO_NEW:
++ return -TARGET_ENOPROTOOPT;
+ case TARGET_SO_ATTACH_FILTER:
+ {
+ struct target_sock_fprog *tfprog;
+@@ -2595,6 +2598,9 @@ get_timeout:
+ case TARGET_SO_SNDTIMEO:
+ optname = SO_SNDTIMEO;
+ goto get_timeout;
++ case TARGET_SO_RCVTIMEO_NEW:
++ case TARGET_SO_SNDTIMEO_NEW:
++ return -TARGET_ENOPROTOOPT;
+ case TARGET_SO_PEERCRED: {
+ struct ucred cr;
+ socklen_t crlen;
+--
+2.32.0
+
diff --git a/vendor/rustix/ci/s390x-stat-have-nsec.patch b/vendor/rustix/ci/s390x-stat-have-nsec.patch
new file mode 100644
index 000000000..1a4562298
--- /dev/null
+++ b/vendor/rustix/ci/s390x-stat-have-nsec.patch
@@ -0,0 +1,27 @@
+From: Dan Gohman <dev@sunfishcode.online>
+Subject: [PATCH] Define `TARGET_STAT_HAVE_NSEC` for s390x
+
+Without this, The `fstat` syscall sets `st_mtime_nsec` and the other `_nsec`
+fields to 0. Libc `fstat` will sometimes use the `fstatat` or `fstat64`
+syscalls instead, which aren't affected, but the libc `fstat` on ubuntu-20.04
+on Github Actions appears to be affected.
+
+This can be seen in the `st_mtime_nsec` assert in tests/fs/futimens.rs.
+
+It's not yet known why upstream qemu doesn't define this.
+
+---
+ linux-user/generic/sockbits.h | 1 +
+ 1 files changed, 1 insertions(+)
+
+diff -ur a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
+--- a/linux-user/syscall_defs.h 2021-08-24 10:35:41.000000000 -0700
++++ b/linux-user/syscall_defs.h 2022-04-12 13:23:25.291064887 -0700
+@@ -2040,6 +2040,7 @@
+ abi_long __unused[3];
+ };
+ #elif defined(TARGET_S390X)
++#define TARGET_STAT_HAVE_NSEC
+ struct target_stat {
+ abi_ulong st_dev;
+ abi_ulong st_ino;
diff --git a/vendor/rustix/ci/translate-errno.patch b/vendor/rustix/ci/translate-errno.patch
new file mode 100644
index 000000000..6a4152038
--- /dev/null
+++ b/vendor/rustix/ci/translate-errno.patch
@@ -0,0 +1,28 @@
+From: Dan Gohman <dev@sunfishcode.online>
+Subject: [PATCH] Translate errno codes from host to target for `SO_ERROR`.
+
+This issue is reported upstream [here].
+
+[here]: https://gitlab.com/qemu-project/qemu/-/issues/872
+
+---
+ linux-user/syscall.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/linux-user/syscall.c b/linux-user/syscall.c
+index b9b18a7eaf..a8eae3c4ac 100644
+--- a/linux-user/syscall.c
++++ b/linux-user/syscall.c
+@@ -2767,6 +2767,9 @@ get_timeout:
+ if (optname == SO_TYPE) {
+ val = host_to_target_sock_type(val);
+ }
++ if (level == SOL_SOCKET && optname == SO_ERROR) {
++ val = host_to_target_errno(val);
++ }
+ if (len > lv)
+ len = lv;
+ if (len == 4) {
+--
+2.32.0
+