[Pkg-rust-maintainers] Bug#1106141: unblock: rust-rustix/0.38.37-4

Fabian Grünbichler debian at fabian.gruenbichler.email
Tue May 20 08:49:37 BST 2025


Package: release.debian.org
Severity: normal
X-Debbugs-Cc: rust-rustix at packages.debian.org
Control: affects -1 + src:rust-rustix
User: release.debian.org at packages.debian.org
Usertags: unblock

Please unblock package rust-rustix

[ Reason ]
This fixes a bug exposed by rust-timerfd on arm64 (#1104704).

rustix has a backend that makes use of Linux' vDSO, and thus
requires changes from time to time when the kernel is updated.

[ Impact ]
rust-timerfd (and thus anything making use of it) would continue
to be broken, other code attempting to use the vDSO parts of
rustix might be broken as well.

[ Tests ]
A big part of the cherry-picked changes are tests for the feature
that is fixed. autopkgtests caught an incomplete/broken cherry-pick
that got fixed in a subsequent upload.

[ Risks ]
The code is not trivial, but it was broken before and the fixes
are already part of an upstream release.

[ Checklist ]
  [x] all changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in testing

[ Other info ]
There's a related binNMU request by the r.d.n folks:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1105033

unblock rust-rustix/0.38.37-4
-------------- next part --------------
diff -Nru rust-rustix-0.38.37/debian/changelog rust-rustix-0.38.37/debian/changelog
--- rust-rustix-0.38.37/debian/changelog	2024-10-11 12:08:01.000000000 +0200
+++ rust-rustix-0.38.37/debian/changelog	2025-05-14 16:37:22.000000000 +0200
@@ -1,3 +1,27 @@
+rust-rustix (0.38.37-4) unstable; urgency=medium
+
+  * Team upload.
+  * Package rustix 0.38.37 from crates.io using debcargo 2.7.8
+  * one more vdso test fix
+
+ -- Fabian Gr?nbichler <debian at fabian.gruenbichler.email>  Wed, 14 May 2025 16:37:22 +0200
+
+rust-rustix (0.38.37-3) unstable; urgency=medium
+
+  * Team upload.
+  * Package rustix 0.38.37 from crates.io using debcargo 2.7.8
+  * Fix vdso patch (Closes: #1105189)
+
+ -- Fabian Gr?nbichler <debian at fabian.gruenbichler.email>  Tue, 13 May 2025 21:13:04 +0200
+
+rust-rustix (0.38.37-2) unstable; urgency=medium
+
+  * Team upload.
+  * Package rustix 0.38.37 from crates.io using debcargo 2.7.8
+  * Cherry-pick vDSO fixes (Closes: #1104704)
+
+ -- Fabian Gr?nbichler <debian at fabian.gruenbichler.email>  Fri, 09 May 2025 20:01:22 +0200
+
 rust-rustix (0.38.37-1) unstable; urgency=medium
 
   * Team upload.
diff -Nru rust-rustix-0.38.37/debian/control rust-rustix-0.38.37/debian/control
--- rust-rustix-0.38.37/debian/control	2024-10-11 12:08:01.000000000 +0200
+++ rust-rustix-0.38.37/debian/control	2025-05-14 16:37:22.000000000 +0200
@@ -2,8 +2,8 @@
 Section: rust
 Priority: optional
 Build-Depends: debhelper-compat (= 13),
- dh-sequence-cargo,
- cargo:native <!nocheck>,
+ dh-sequence-cargo
+Build-Depends-Arch: cargo:native <!nocheck>,
  rustc:native (>= 1.63) <!nocheck>,
  libstd-rust-dev <!nocheck>,
  librust-bitflags-2+std-dev (>= 2.4.0-~~) <!nocheck>,
@@ -24,6 +24,7 @@
 Standards-Version: 4.7.0
 Vcs-Git: https://salsa.debian.org/rust-team/debcargo-conf.git [src/rustix]
 Vcs-Browser: https://salsa.debian.org/rust-team/debcargo-conf/tree/master/src/rustix
+Homepage: https://github.com/bytecodealliance/rustix
 X-Cargo-Crate: rustix
 Rules-Requires-Root: no
 
diff -Nru rust-rustix-0.38.37/debian/copyright.debcargo.hint rust-rustix-0.38.37/debian/copyright.debcargo.hint
--- rust-rustix-0.38.37/debian/copyright.debcargo.hint	2024-10-11 12:08:01.000000000 +0200
+++ rust-rustix-0.38.37/debian/copyright.debcargo.hint	2025-05-14 16:37:22.000000000 +0200
@@ -18,8 +18,8 @@
 
 Files: debian/*
 Copyright:
- 2022-2024 Debian Rust Maintainers <pkg-rust-maintainers at alioth-lists.debian.net>
- 2022-2024 John Goerzen <jgoerzen at complete.org>
+ 2022-2025 Debian Rust Maintainers <pkg-rust-maintainers at alioth-lists.debian.net>
+ 2022-2025 John Goerzen <jgoerzen at complete.org>
 License: Apache-2.0 WITH LLVM-exception or Apache-2.0 or MIT
 
 License: Apache-2.0
diff -Nru rust-rustix-0.38.37/debian/patches/fix-arm64-vdso.patch rust-rustix-0.38.37/debian/patches/fix-arm64-vdso.patch
--- rust-rustix-0.38.37/debian/patches/fix-arm64-vdso.patch	1970-01-01 01:00:00.000000000 +0100
+++ rust-rustix-0.38.37/debian/patches/fix-arm64-vdso.patch	2025-05-14 16:37:22.000000000 +0200
@@ -0,0 +1,527 @@
+From 226840241248daf7bbf614677fcb4dc305aed20e Mon Sep 17 00:00:00 2001
+From: Dan Gohman <dev at sunfishcode.online>
+Date: Mon, 13 Jan 2025 09:01:52 -0800
+Subject: [PATCH] Implement the `DT_GNU_HASH` mechanism for vDSO parsing.
+ (#1259)
+
+* Implement the `DT_GNU_HASH` mechanism for vDSO parsing.
+
+Linux recently [removed] the `DT_HASH` section from the aarch64 vDSO. To
+continue to be able to read vDSOs, implement the `DT_GNU_HASH` section,
+following the logic in [this patch].
+
+[removed]: https://github.com/torvalds/linux/commit/48f6430505c0b0498ee9020ce3cf9558b1caaaeb
+[this patch]: https://lkml.org/lkml/2024/12/6/828
+
+* Fix compilation on s390x with experimental asm.
+
+* Fix pointer arithmetic on s390x.
+
+* Add comments.
+
+* Add more vDSO tests, and enable vDSO getcpu on s390x.
+---
+ src/backend/linux_raw/process/syscalls.rs |   6 +-
+ src/backend/linux_raw/vdso.rs             | 291 +++++++++++++++++-----
+ src/backend/linux_raw/vdso_wrappers.rs    |  33 ++-
+ 3 files changed, 255 insertions(+), 75 deletions(-)
+
+--- a/src/backend/linux_raw/process/syscalls.rs
++++ b/src/backend/linux_raw/process/syscalls.rs
+@@ -41,7 +41,8 @@
+     target_arch = "x86_64",
+     target_arch = "x86",
+     target_arch = "riscv64",
+-    target_arch = "powerpc64"
++    target_arch = "powerpc64",
++    target_arch = "s390x"
+ ))]
+ pub(crate) use crate::backend::vdso_wrappers::sched_getcpu;
+ 
+@@ -50,7 +51,8 @@
+     target_arch = "x86_64",
+     target_arch = "x86",
+     target_arch = "riscv64",
+-    target_arch = "powerpc64"
++    target_arch = "powerpc64",
++    target_arch = "s390x"
+ )))]
+ #[inline]
+ pub(crate) fn sched_getcpu() -> usize {
+--- a/src/backend/linux_raw/vdso.rs
++++ b/src/backend/linux_raw/vdso.rs
+@@ -5,6 +5,10 @@
+ //! with Creative Commons Zero License, version 1.0,
+ //! available at <https://creativecommons.org/publicdomain/zero/1.0/legalcode>
+ //!
++//! It also incorporates the patch at:
++//! <https://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest.git/commit/tools/testing/selftests/vDSO?h=next&id=01587d80b04f29747b6fd6d766c3bfa632f14eb0>,
++//! with changes to fix the pointer arithmetic on s390x.
++//!
+ //! # Safety
+ //!
+ //! Parsing the vDSO involves a lot of raw pointer manipulation. This
+@@ -34,6 +38,7 @@
+     // Symbol table
+     symtab: *const Elf_Sym,
+     symstrings: *const u8,
++    gnu_hash: *const u32,
+     bucket: *const ElfHashEntry,
+     chain: *const ElfHashEntry,
+     nbucket: ElfHashEntry,
+@@ -60,6 +65,16 @@
+     h
+ }
+ 
++fn gnu_hash(name: &CStr) -> u32 {
++    let mut h: u32 = 5381;
++    for s in name.to_bytes() {
++        h = h
++            .wrapping_add(h.wrapping_mul(32))
++            .wrapping_add(u32::from(*s));
++    }
++    h
++}
++
+ /// Create a `Vdso` value by parsing the vDSO at the `sysinfo_ehdr` address.
+ fn init_from_sysinfo_ehdr() -> Option<Vdso> {
+     // SAFETY: The auxv initialization code does extensive checks to ensure
+@@ -80,6 +95,7 @@
+             pv_offset: 0,
+             symtab: null(),
+             symstrings: null(),
++            gnu_hash: null(),
+             bucket: null(),
+             chain: null(),
+             nbucket: 0,
+@@ -159,6 +175,12 @@
+                     )?
+                     .as_ptr();
+                 }
++		// linux-raw-sys too old / missing DT_GNU_HASH
++                0x6fff_fef5 => {
++                    vdso.gnu_hash =
++                        check_raw_pointer::<u32>(vdso.addr_from_elf(d.d_un.d_ptr)? as *mut _)?
++                            .as_ptr()
++                }
+                 DT_VERSYM => {
+                     vdso.versym =
+                         check_raw_pointer::<u16>(vdso.addr_from_elf(d.d_un.d_ptr)? as *mut _)?
+@@ -183,7 +205,10 @@
+         // `check_raw_pointer` will have checked these pointers for null,
+         // however they could still be null if the expected dynamic table
+         // entries are absent.
+-        if vdso.symstrings.is_null() || vdso.symtab.is_null() || hash.is_null() {
++        if vdso.symstrings.is_null()
++            || vdso.symtab.is_null()
++            || (hash.is_null() && vdso.gnu_hash.is_null())
++        {
+             return None; // Failed
+         }
+ 
+@@ -192,10 +217,21 @@
+         }
+ 
+         // Parse the hash table header.
+-        vdso.nbucket = *hash.add(0);
+-        //vdso.nchain = *hash.add(1);
+-        vdso.bucket = hash.add(2);
+-        vdso.chain = hash.add(vdso.nbucket as usize + 2);
++        if !vdso.gnu_hash.is_null() {
++            vdso.nbucket = ElfHashEntry::from(*vdso.gnu_hash);
++            // The bucket array is located after the header (4 uint32) and the bloom
++            // filter (size_t array of gnu_hash[2] elements).
++            vdso.bucket = vdso
++                .gnu_hash
++                .add(4)
++                .add(size_of::<c::size_t>() / 4 * *vdso.gnu_hash.add(2) as usize)
++                .cast();
++        } else {
++            vdso.nbucket = *hash.add(0);
++            //vdso.nchain = *hash.add(1);
++            vdso.bucket = hash.add(2);
++            vdso.chain = hash.add(vdso.nbucket as usize + 2);
++        }
+ 
+         // That's all we need.
+         Some(vdso)
+@@ -261,49 +297,110 @@
+             && (name == CStr::from_ptr(self.symstrings.add(aux.vda_name as usize).cast()))
+     }
+ 
++    /// Check to see if the symbol is the one we're looking for.
++    ///
++    /// # Safety
++    ///
++    /// The raw pointers inside `self` must be valid.
++    unsafe fn check_sym(
++        &self,
++        sym: &Elf_Sym,
++        i: ElfHashEntry,
++        name: &CStr,
++        version: &CStr,
++        ver_hash: u32,
++    ) -> bool {
++        // Check for a defined global or weak function w/ right name.
++        //
++        // Accept `STT_NOTYPE` in addition to `STT_FUNC` for the symbol
++        // type, for compatibility with some versions of Linux on
++        // PowerPC64. See [this commit] in Linux for more background.
++        //
++        // [this commit]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/tools/testing/selftests/vDSO/parse_vdso.c?id=0161bd38c24312853ed5ae9a425a1c41c4ac674a
++        if ELF_ST_TYPE(sym.st_info) != STT_FUNC && ELF_ST_TYPE(sym.st_info) != STT_NOTYPE {
++            return false;
++        }
++        if ELF_ST_BIND(sym.st_info) != STB_GLOBAL && ELF_ST_BIND(sym.st_info) != STB_WEAK {
++            return false;
++        }
++        if name != CStr::from_ptr(self.symstrings.add(sym.st_name as usize).cast()) {
++            return false;
++        }
++
++        // Check symbol version.
++        if !self.versym.is_null()
++            && !self.match_version(*self.versym.add(i as usize), version, ver_hash)
++        {
++            return false;
++        }
++
++        true
++    }
++
+     /// Look up a symbol in the vDSO.
+     pub(super) fn sym(&self, version: &CStr, name: &CStr) -> *mut c::c_void {
+         let ver_hash = elf_hash(version);
+-        let name_hash = elf_hash(name);
+ 
+         // SAFETY: The pointers in `self` must be valid.
+         unsafe {
+-            let mut chain = *self
+-                .bucket
+-                .add((ElfHashEntry::from(name_hash) % self.nbucket) as usize);
+-
+-            while chain != ElfHashEntry::from(STN_UNDEF) {
+-                let sym = &*self.symtab.add(chain as usize);
+-
+-                // Check for a defined global or weak function w/ right name.
+-                //
+-                // Accept `STT_NOTYPE` in addition to `STT_FUNC` for the symbol
+-                // type, for compatibility with some versions of Linux on
+-                // PowerPC64. See [this commit] in Linux for more background.
+-                //
+-                // [this commit]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/tools/testing/selftests/vDSO/parse_vdso.c?id=0161bd38c24312853ed5ae9a425a1c41c4ac674a
+-                if (ELF_ST_TYPE(sym.st_info) != STT_FUNC &&
+-                        ELF_ST_TYPE(sym.st_info) != STT_NOTYPE)
+-                    || (ELF_ST_BIND(sym.st_info) != STB_GLOBAL
+-                        && ELF_ST_BIND(sym.st_info) != STB_WEAK)
+-                    || sym.st_shndx == SHN_UNDEF
+-                    || sym.st_shndx == SHN_ABS
+-                    || ELF_ST_VISIBILITY(sym.st_other) != STV_DEFAULT
+-                    || (name != CStr::from_ptr(self.symstrings.add(sym.st_name as usize).cast()))
+-                    // Check symbol version.
+-                    || (!self.versym.is_null()
+-                        && !self.match_version(*self.versym.add(chain as usize), version, ver_hash))
+-                {
+-                    chain = *self.chain.add(chain as usize);
+-                    continue;
+-                }
+-
+-                let sum = self.addr_from_elf(sym.st_value).unwrap();
+-                assert!(
+-                    sum as usize >= self.load_addr as usize
+-                        && sum as usize <= self.load_end as usize
+-                );
+-                return sum as *mut c::c_void;
++            if !self.gnu_hash.is_null() {
++                let mut h1: u32 = gnu_hash(name);
++
++                // Changes to fix the pointer arithmetic on s390x: cast
++                // `self.bucket` to `*const u32` here, because even though
++                // s390x's `ElfHashEntry` is 64-bit for `DT_HASH` tables,
++                // it uses 32-bit entries for `DT_GNU_HASH` tables.
++                let mut i = *self
++                    .bucket
++                    .cast::<u32>()
++                    .add((ElfHashEntry::from(h1) % self.nbucket) as usize);
++                if i == 0 {
++                    return null_mut();
++                }
++                h1 |= 1;
++                // Changes to fix the pointer arithmetic on s390x: As above,
++                // cast `self.bucket` to `*const u32`.
++                let mut hashval = self
++                    .bucket
++                    .cast::<u32>()
++                    .add(self.nbucket as usize)
++                    .add((i - *self.gnu_hash.add(1)) as usize);
++                loop {
++                    let sym: &Elf_Sym = &*self.symtab.add(i as usize);
++                    let h2 = *hashval;
++                    hashval = hashval.add(1);
++                    if h1 == (h2 | 1)
++                        && self.check_sym(sym, ElfHashEntry::from(i), name, version, ver_hash)
++                    {
++                        let sum = self.addr_from_elf(sym.st_value).unwrap();
++                        assert!(
++                            sum as usize >= self.load_addr as usize
++                                && sum as usize <= self.load_end as usize
++                        );
++                        return sum as *mut c::c_void;
++                    }
++                    if (h2 & 1) != 0 {
++                        break;
++                    }
++                    i += 1;
++                }
++            } else {
++                let mut i = *self
++                    .bucket
++                    .add((ElfHashEntry::from(elf_hash(name)) % self.nbucket) as usize);
++                while i != 0 {
++                    let sym: &Elf_Sym = &*self.symtab.add(i as usize);
++                    if sym.st_shndx != SHN_UNDEF && self.check_sym(sym, i, name, version, ver_hash)
++                    {
++                        let sum = self.addr_from_elf(sym.st_value).unwrap();
++                        assert!(
++                            sum as usize >= self.load_addr as usize
++                                && sum as usize <= self.load_end as usize
++                        );
++                        return sum as *mut c::c_void;
++                    }
++                    i = *self.chain.add(i as usize);
++                }
+             }
+         }
+ 
+@@ -324,32 +421,103 @@
+     }
+ }
+ 
++// Disable on MIPS since QEMU on MIPS doesn't provide a vDSO.
+ #[cfg(linux_raw)]
+ #[test]
+-#[ignore] // Until rustix is updated to the new vDSO format.
++#[cfg_attr(any(target_arch = "mips", target_arch = "mips64"), ignore)]
+ fn test_vdso() {
+     let vdso = Vdso::new().unwrap();
+     assert!(!vdso.symtab.is_null());
+     assert!(!vdso.symstrings.is_null());
+ 
+-    #[cfg(target_arch = "x86_64")]
+-    let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime"));
+-    #[cfg(target_arch = "arm")]
+-    let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime64"));
+-    #[cfg(target_arch = "aarch64")]
+-    let ptr = vdso.sym(cstr!("LINUX_2.6.39"), cstr!("__kernel_clock_gettime"));
+-    #[cfg(target_arch = "x86")]
+-    let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime64"));
+-    #[cfg(target_arch = "riscv64")]
+-    let ptr = vdso.sym(cstr!("LINUX_4.15"), cstr!("__vdso_clock_gettime"));
+-    #[cfg(target_arch = "powerpc64")]
+-    let ptr = vdso.sym(cstr!("LINUX_2.6.15"), cstr!("__kernel_clock_gettime"));
+-    #[cfg(target_arch = "s390x")]
+-    let ptr = vdso.sym(cstr!("LINUX_2.6.29"), cstr!("__kernel_clock_gettime"));
+-    #[cfg(any(target_arch = "mips", target_arch = "mips32r6"))]
+-    let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime64"));
+-    #[cfg(any(target_arch = "mips64", target_arch = "mips64r6"))]
+-    let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime"));
++    {
++        #[cfg(target_arch = "x86_64")]
++        let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime"));
++        #[cfg(target_arch = "arm")]
++        let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime64"));
++        #[cfg(target_arch = "aarch64")]
++        let ptr = vdso.sym(cstr!("LINUX_2.6.39"), cstr!("__kernel_clock_gettime"));
++        #[cfg(target_arch = "x86")]
++        let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime64"));
++        #[cfg(target_arch = "riscv64")]
++        let ptr = vdso.sym(cstr!("LINUX_4.15"), cstr!("__vdso_clock_gettime"));
++        #[cfg(target_arch = "powerpc64")]
++        let ptr = vdso.sym(cstr!("LINUX_2.6.15"), cstr!("__kernel_clock_gettime"));
++        #[cfg(target_arch = "s390x")]
++        let ptr = vdso.sym(cstr!("LINUX_2.6.29"), cstr!("__kernel_clock_gettime"));
++        #[cfg(any(target_arch = "mips", target_arch = "mips32r6"))]
++        let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime64"));
++        #[cfg(any(target_arch = "mips64", target_arch = "mips64r6"))]
++        let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime"));
+ 
+-    assert!(!ptr.is_null());
++        assert!(!ptr.is_null());
++    }
++
++    {
++        #[cfg(target_arch = "x86_64")]
++        let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_getres"));
++        #[cfg(target_arch = "arm")]
++        let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_getres"));
++        #[cfg(target_arch = "aarch64")]
++        let ptr = vdso.sym(cstr!("LINUX_2.6.39"), cstr!("__kernel_clock_getres"));
++        #[cfg(target_arch = "x86")]
++        let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_getres"));
++        #[cfg(target_arch = "riscv64")]
++        let ptr = vdso.sym(cstr!("LINUX_4.15"), cstr!("__vdso_clock_getres"));
++        #[cfg(target_arch = "powerpc64")]
++        let ptr = vdso.sym(cstr!("LINUX_2.6.15"), cstr!("__kernel_clock_getres"));
++        #[cfg(target_arch = "s390x")]
++        let ptr = vdso.sym(cstr!("LINUX_2.6.29"), cstr!("__kernel_clock_getres"));
++        #[cfg(any(target_arch = "mips", target_arch = "mips32r6"))]
++        let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_getres"));
++        #[cfg(any(target_arch = "mips64", target_arch = "mips64r6"))]
++        let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_getres"));
++
++        assert!(!ptr.is_null());
++    }
++
++    {
++        #[cfg(target_arch = "x86_64")]
++        let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_gettimeofday"));
++        #[cfg(target_arch = "arm")]
++        let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_gettimeofday"));
++        #[cfg(target_arch = "aarch64")]
++        let ptr = vdso.sym(cstr!("LINUX_2.6.39"), cstr!("__kernel_gettimeofday"));
++        #[cfg(target_arch = "x86")]
++        let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_gettimeofday"));
++        #[cfg(target_arch = "riscv64")]
++        let ptr = vdso.sym(cstr!("LINUX_4.15"), cstr!("__vdso_gettimeofday"));
++        #[cfg(target_arch = "powerpc64")]
++        let ptr = vdso.sym(cstr!("LINUX_2.6.15"), cstr!("__kernel_gettimeofday"));
++        #[cfg(target_arch = "s390x")]
++        let ptr = vdso.sym(cstr!("LINUX_2.6.29"), cstr!("__kernel_gettimeofday"));
++        #[cfg(any(target_arch = "mips", target_arch = "mips32r6"))]
++        let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_gettimeofday"));
++        #[cfg(any(target_arch = "mips64", target_arch = "mips64r6"))]
++        let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_gettimeofday"));
++
++        assert!(!ptr.is_null());
++    }
++
++    #[cfg(any(
++        target_arch = "x86_64",
++        target_arch = "x86",
++        target_arch = "riscv64",
++        target_arch = "powerpc64",
++        target_arch = "s390x",
++    ))]
++    {
++        #[cfg(target_arch = "x86_64")]
++        let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_getcpu"));
++        #[cfg(target_arch = "x86")]
++        let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_getcpu"));
++        #[cfg(target_arch = "riscv64")]
++        let ptr = vdso.sym(cstr!("LINUX_4.15"), cstr!("__vdso_getcpu"));
++        #[cfg(target_arch = "powerpc64")]
++        let ptr = vdso.sym(cstr!("LINUX_2.6.15"), cstr!("__kernel_getcpu"));
++        #[cfg(target_arch = "s390x")]
++        let ptr = vdso.sym(cstr!("LINUX_2.6.29"), cstr!("__kernel_getcpu"));
++
++        assert!(!ptr.is_null());
++    }
+ }
+--- a/src/backend/linux_raw/vdso_wrappers.rs
++++ b/src/backend/linux_raw/vdso_wrappers.rs
+@@ -20,7 +20,8 @@
+     target_arch = "x86_64",
+     target_arch = "x86",
+     target_arch = "riscv64",
+-    target_arch = "powerpc64"
++    target_arch = "powerpc64",
++    target_arch = "s390x",
+ ))]
+ use core::ffi::c_void;
+ use core::mem::transmute;
+@@ -37,7 +38,8 @@
+             target_arch = "x86_64",
+             target_arch = "x86",
+             target_arch = "riscv64",
+-            target_arch = "powerpc64"
++            target_arch = "powerpc64",
++            target_arch = "s390x"
+         )
+     ),
+     feature = "time"
+@@ -117,7 +119,8 @@
+     target_arch = "x86_64",
+     target_arch = "x86",
+     target_arch = "riscv64",
+-    target_arch = "powerpc64"
++    target_arch = "powerpc64",
++    target_arch = "s390x",
+ ))]
+ #[inline]
+ pub(crate) fn sched_getcpu() -> usize {
+@@ -268,7 +271,8 @@
+     target_arch = "x86_64",
+     target_arch = "x86",
+     target_arch = "riscv64",
+-    target_arch = "powerpc64"
++    target_arch = "powerpc64",
++    target_arch = "s390x",
+ ))]
+ type GetcpuType = unsafe extern "C" fn(*mut u32, *mut u32, *mut c_void) -> c::c_int;
+ 
+@@ -294,7 +298,8 @@
+     target_arch = "x86_64",
+     target_arch = "x86",
+     target_arch = "riscv64",
+-    target_arch = "powerpc64"
++    target_arch = "powerpc64",
++    target_arch = "s390x",
+ ))]
+ #[cold]
+ fn init_getcpu() -> GetcpuType {
+@@ -324,7 +329,8 @@
+     target_arch = "x86_64",
+     target_arch = "x86",
+     target_arch = "riscv64",
+-    target_arch = "powerpc64"
++    target_arch = "powerpc64",
++    target_arch = "s390x",
+ ))]
+ static mut GETCPU: AtomicPtr<Function> = AtomicPtr::new(null_mut());
+ #[cfg(target_arch = "x86")]
+@@ -393,7 +399,8 @@
+     target_arch = "x86_64",
+     target_arch = "x86",
+     target_arch = "riscv64",
+-    target_arch = "powerpc64"
++    target_arch = "powerpc64",
++    target_arch = "s390x",
+ ))]
+ unsafe extern "C" fn rustix_getcpu_via_syscall(
+     cpu: *mut u32,
+@@ -457,7 +464,8 @@
+             target_arch = "x86_64",
+             target_arch = "x86",
+             target_arch = "riscv64",
+-            target_arch = "powerpc64"
++            target_arch = "powerpc64",
++            target_arch = "s390x",
+         ))]
+         {
+             GETCPU
+@@ -544,7 +552,8 @@
+             target_arch = "x86_64",
+             target_arch = "x86",
+             target_arch = "riscv64",
+-            target_arch = "powerpc64"
++            target_arch = "powerpc64",
++            target_arch = "s390x",
+         ))]
+         {
+             // Look up the platform-specific `getcpu` symbol as documented
+@@ -559,11 +568,14 @@
+             let ptr = vdso.sym(cstr!("LINUX_4.15"), cstr!("__vdso_getcpu"));
+             #[cfg(target_arch = "powerpc64")]
+             let ptr = vdso.sym(cstr!("LINUX_2.6.15"), cstr!("__kernel_getcpu"));
++            #[cfg(target_arch = "s390x")]
++            let ptr = vdso.sym(cstr!("LINUX_2.6.29"), cstr!("__kernel_getcpu"));
+ 
+             #[cfg(any(
+                 target_arch = "x86_64",
+                 target_arch = "riscv64",
+-                target_arch = "powerpc64"
++                target_arch = "powerpc64",
++                target_arch = "s390x"
+             ))]
+             let ok = true;
+ 
diff -Nru rust-rustix-0.38.37/debian/patches/fix-vdso-test-i386.patch rust-rustix-0.38.37/debian/patches/fix-vdso-test-i386.patch
--- rust-rustix-0.38.37/debian/patches/fix-vdso-test-i386.patch	1970-01-01 01:00:00.000000000 +0100
+++ rust-rustix-0.38.37/debian/patches/fix-vdso-test-i386.patch	2025-05-14 16:37:22.000000000 +0200
@@ -0,0 +1,94 @@
+From a92c89fe36379bd4ad14dd5d5905ca64dc6d9d85 Mon Sep 17 00:00:00 2001
+From: Dan Gohman <dev at sunfishcode.online>
+Date: Tue, 4 Mar 2025 08:01:12 -0800
+Subject: [PATCH] Fix compatibility with older 32-bit kernels (#1374)
+
+FG: only pick hunk for:
+
+* Fix `test_vdso` to handle older kernel versions on x86 and powerpc.
+
+Signed-off-by: Fabian Gr?nbichler <debian at fabian.gruenbichler.email>
+
+---
+ CHANGES.md                                |  16 ++
+ Cargo.toml                                |   5 +-
+ src/backend/libc/event/syscalls.rs        |   4 +-
+ src/backend/libc/thread/syscalls.rs       |  25 ++-
+ src/backend/libc/winsock_c.rs             |   2 +-
+ src/backend/linux_raw/event/syscalls.rs   | 231 ++++++++++++++++------
+ src/backend/linux_raw/fs/syscalls.rs      |  63 +++++-
+ src/backend/linux_raw/runtime/syscalls.rs | 113 ++++++-----
+ src/backend/linux_raw/thread/syscalls.rs  | 139 +++++++------
+ src/backend/linux_raw/vdso.rs             |  29 ++-
+ src/runtime.rs                            |   2 +-
+ src/thread/futex.rs                       |  48 +----
+ src/timespec.rs                           |  21 +-
+ tests/event/epoll_timeout.rs              |  23 ++-
+ tests/thread/futex.rs                     |   6 +-
+ 15 files changed, 486 insertions(+), 241 deletions(-)
+
+--- a/src/backend/linux_raw/vdso.rs
++++ b/src/backend/linux_raw/vdso.rs
+@@ -425,6 +425,7 @@
+ #[cfg(linux_raw)]
+ #[test]
+ #[cfg_attr(any(target_arch = "mips", target_arch = "mips64"), ignore)]
++#[allow(unused_variables)]
+ fn test_vdso() {
+     let vdso = Vdso::new().unwrap();
+     assert!(!vdso.symtab.is_null());
+@@ -450,6 +451,11 @@
+         #[cfg(any(target_arch = "mips64", target_arch = "mips64r6"))]
+         let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime"));
+ 
++        // On PowerPC, "__kernel_clock_gettime64" isn't available in
++        // Linux < 5.11.
++        // On x86, "__vdso_clock_gettime64" isn't available in
++        // Linux < 5.3.
++        #[cfg(not(any(target_arch = "powerpc", target_arch = "x86")))]
+         assert!(!ptr.is_null());
+     }
+ 
+@@ -473,6 +479,8 @@
+         #[cfg(any(target_arch = "mips64", target_arch = "mips64r6"))]
+         let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_getres"));
+ 
++        // Some versions of Linux appear to lack "__vdso_clock_getres" on x86.
++        #[cfg(not(target_arch = "x86"))]
+         assert!(!ptr.is_null());
+     }
+ 
+@@ -496,6 +504,8 @@
+         #[cfg(any(target_arch = "mips64", target_arch = "mips64r6"))]
+         let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_gettimeofday"));
+ 
++        // Some versions of Linux appear to lack "__vdso_gettimeofday" on x86.
++        #[cfg(not(target_arch = "x86"))]
+         assert!(!ptr.is_null());
+     }
+ 
+@@ -503,6 +513,7 @@
+         target_arch = "x86_64",
+         target_arch = "x86",
+         target_arch = "riscv64",
++        target_arch = "powerpc",
+         target_arch = "powerpc64",
+         target_arch = "s390x",
+     ))]
+@@ -513,11 +524,16 @@
+         let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_getcpu"));
+         #[cfg(target_arch = "riscv64")]
+         let ptr = vdso.sym(cstr!("LINUX_4.15"), cstr!("__vdso_getcpu"));
++        #[cfg(target_arch = "powerpc")]
++        let ptr = vdso.sym(cstr!("LINUX_2.6.15"), cstr!("__kernel_getcpu"));
+         #[cfg(target_arch = "powerpc64")]
+         let ptr = vdso.sym(cstr!("LINUX_2.6.15"), cstr!("__kernel_getcpu"));
+         #[cfg(target_arch = "s390x")]
+         let ptr = vdso.sym(cstr!("LINUX_2.6.29"), cstr!("__kernel_getcpu"));
+ 
++        // On PowerPC, "__kernel_getcpu" isn't available in 32-bit kernels.
++        // Some versions of Linux appear to lack "__vdso_getcpu" on x86.
++        #[cfg(not(any(target_arch = "powerpc", target_arch = "x86")))]
+         assert!(!ptr.is_null());
+     }
+ }
diff -Nru rust-rustix-0.38.37/debian/patches/series rust-rustix-0.38.37/debian/patches/series
--- rust-rustix-0.38.37/debian/patches/series	2024-10-11 12:08:01.000000000 +0200
+++ rust-rustix-0.38.37/debian/patches/series	2025-05-14 16:37:22.000000000 +0200
@@ -2,3 +2,6 @@
 drop-alloc.diff
 disable-benches.diff
 relax-dep.diff
+vdso-check-for-missing-dt-hash.patch
+fix-arm64-vdso.patch
+fix-vdso-test-i386.patch
diff -Nru rust-rustix-0.38.37/debian/patches/vdso-check-for-missing-dt-hash.patch rust-rustix-0.38.37/debian/patches/vdso-check-for-missing-dt-hash.patch
--- rust-rustix-0.38.37/debian/patches/vdso-check-for-missing-dt-hash.patch	1970-01-01 01:00:00.000000000 +0100
+++ rust-rustix-0.38.37/debian/patches/vdso-check-for-missing-dt-hash.patch	2025-05-14 16:37:22.000000000 +0200
@@ -0,0 +1,199 @@
+From 83e769b98e8e820cd1f58385a7f975b39d2087d6 Mon Sep 17 00:00:00 2001
+From: Dan Gohman <dev at sunfishcode.online>
+Date: Tue, 7 Jan 2025 12:02:11 -0800
+Subject: [PATCH] Check for a missing `DT_HASH` section in the VDSO parser
+ (#1254)
+
+* Check for a missing `DT_HASH` section in the VDSO parser
+
+Fix a missing check for a null hash table pointer, which can happen
+if the vDSO lacks a `DT_HASH` entry.
+
+Also, incorporate the changes in the latest upstream version of thee
+reference parse_vdso.c code.
+
+* Fix type differences on s390x.
+
+* Add more tests.
+
+* Remove an over-aggressive check.
+
+* Fix the name of getcpu on riscv64.
+
+FG: replace DT_GNU_HASH constant with value, can be removed once linux-raw-sys
+>= 0.6.6 is available in Debian
+Signed-off-by: Fabian Gr?nbichler <debian at fabian.gruenbichler.email>
+
+---
+ src/backend/linux_raw/vdso.rs          | 84 +++++++++++++++++++-------
+ src/backend/linux_raw/vdso_wrappers.rs |  2 +-
+ 2 files changed, 64 insertions(+), 22 deletions(-)
+
+--- a/src/backend/linux_raw/vdso.rs
++++ b/src/backend/linux_raw/vdso.rs
+@@ -1,7 +1,7 @@
+ //! Parse the Linux vDSO.
+ //!
+ //! The following code is transliterated from
+-//! tools/testing/selftests/vDSO/parse_vdso.c in Linux 5.11, which is licensed
++//! tools/testing/selftests/vDSO/parse_vdso.c in Linux 6.12, which is licensed
+ //! with Creative Commons Zero License, version 1.0,
+ //! available at <https://creativecommons.org/publicdomain/zero/1.0/legalcode>
+ //!
+@@ -20,6 +20,11 @@
+ use core::ptr::{null, null_mut};
+ use linux_raw_sys::elf::*;
+ 
++#[cfg(target_arch = "s390x")]
++type ElfHashEntry = u64;
++#[cfg(not(target_arch = "s390x"))]
++type ElfHashEntry = u32;
++
+ pub(super) struct Vdso {
+     // Load information
+     load_addr: *const Elf_Ehdr,
+@@ -29,17 +34,19 @@
+     // Symbol table
+     symtab: *const Elf_Sym,
+     symstrings: *const u8,
+-    bucket: *const u32,
+-    chain: *const u32,
+-    nbucket: u32,
+-    //nchain: u32,
++    bucket: *const ElfHashEntry,
++    chain: *const ElfHashEntry,
++    nbucket: ElfHashEntry,
++    //nchain: ElfHashEntry,
+ 
+     // Version table
+     versym: *const u16,
+     verdef: *const Elf_Verdef,
+ }
+ 
+-// Straight from the ELF specification.
++/// Straight from the ELF specification...and then tweaked slightly, in order to
++/// avoid a few clang warnings.
++/// (And then translated to Rust).
+ fn elf_hash(name: &CStr) -> u32 {
+     let mut h: u32 = 0;
+     for b in name.to_bytes() {
+@@ -91,11 +98,6 @@
+         let mut found_vaddr = false;
+         for i in 0..hdr.e_phnum {
+             let phdr = &*pt.add(i as usize);
+-            if phdr.p_flags & PF_W != 0 {
+-                // Don't trust any vDSO that claims to be loading writable
+-                // segments into memory.
+-                return None;
+-            }
+             if phdr.p_type == PT_LOAD && !found_vaddr {
+                 // The segment should be readable and executable, because it
+                 // contains the symbol table and the function bodies.
+@@ -129,7 +131,7 @@
+         }
+ 
+         // Fish out the useful bits of the dynamic table.
+-        let mut hash: *const u32 = null();
++        let mut hash: *const ElfHashEntry = null();
+         vdso.symstrings = null();
+         vdso.symtab = null();
+         vdso.versym = null();
+@@ -152,8 +154,10 @@
+                             .as_ptr();
+                 }
+                 DT_HASH => {
+-                    hash = check_raw_pointer::<u32>(vdso.addr_from_elf(d.d_un.d_ptr)? as *mut _)?
+-                        .as_ptr();
++                    hash = check_raw_pointer::<ElfHashEntry>(
++                        vdso.addr_from_elf(d.d_un.d_ptr)? as *mut _
++                    )?
++                    .as_ptr();
+                 }
+                 DT_VERSYM => {
+                     vdso.versym =
+@@ -176,8 +180,12 @@
+             }
+             i = i.checked_add(1)?;
+         }
+-        // The upstream code checks `symstrings`, `symtab`, and `hash` for
+-        // null; here, `check_raw_pointer` has already done that.
++        // `check_raw_pointer` will have checked these pointers for null,
++        // however they could still be null if the expected dynamic table
++        // entries are absent.
++        if vdso.symstrings.is_null() || vdso.symtab.is_null() || hash.is_null() {
++            return None; // Failed
++        }
+ 
+         if vdso.verdef.is_null() {
+             vdso.versym = null();
+@@ -260,16 +268,20 @@
+ 
+         // SAFETY: The pointers in `self` must be valid.
+         unsafe {
+-            let mut chain = *self.bucket.add((name_hash % self.nbucket) as usize);
++            let mut chain = *self
++                .bucket
++                .add((ElfHashEntry::from(name_hash) % self.nbucket) as usize);
+ 
+-            while chain != STN_UNDEF {
++            while chain != ElfHashEntry::from(STN_UNDEF) {
+                 let sym = &*self.symtab.add(chain as usize);
+ 
+                 // Check for a defined global or weak function w/ right name.
+                 //
+-                // The reference parser in Linux's parse_vdso.c requires
+-                // symbols to have type `STT_FUNC`, but on powerpc64, the vDSO
+-                // uses `STT_NOTYPE`, so allow that too.
++                // Accept `STT_NOTYPE` in addition to `STT_FUNC` for the symbol
++                // type, for compatibility with some versions of Linux on
++                // PowerPC64. See [this commit] in Linux for more background.
++                //
++                // [this commit]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/tools/testing/selftests/vDSO/parse_vdso.c?id=0161bd38c24312853ed5ae9a425a1c41c4ac674a
+                 if (ELF_ST_TYPE(sym.st_info) != STT_FUNC &&
+                         ELF_ST_TYPE(sym.st_info) != STT_NOTYPE)
+                     || (ELF_ST_BIND(sym.st_info) != STB_GLOBAL
+@@ -311,3 +323,33 @@
+         self.base_plus(elf_addr.wrapping_add(self.pv_offset))
+     }
+ }
++
++#[cfg(linux_raw)]
++#[test]
++#[ignore] // Until rustix is updated to the new vDSO format.
++fn test_vdso() {
++    let vdso = Vdso::new().unwrap();
++    assert!(!vdso.symtab.is_null());
++    assert!(!vdso.symstrings.is_null());
++
++    #[cfg(target_arch = "x86_64")]
++    let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime"));
++    #[cfg(target_arch = "arm")]
++    let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime64"));
++    #[cfg(target_arch = "aarch64")]
++    let ptr = vdso.sym(cstr!("LINUX_2.6.39"), cstr!("__kernel_clock_gettime"));
++    #[cfg(target_arch = "x86")]
++    let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime64"));
++    #[cfg(target_arch = "riscv64")]
++    let ptr = vdso.sym(cstr!("LINUX_4.15"), cstr!("__vdso_clock_gettime"));
++    #[cfg(target_arch = "powerpc64")]
++    let ptr = vdso.sym(cstr!("LINUX_2.6.15"), cstr!("__kernel_clock_gettime"));
++    #[cfg(target_arch = "s390x")]
++    let ptr = vdso.sym(cstr!("LINUX_2.6.29"), cstr!("__kernel_clock_gettime"));
++    #[cfg(any(target_arch = "mips", target_arch = "mips32r6"))]
++    let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime64"));
++    #[cfg(any(target_arch = "mips64", target_arch = "mips64r6"))]
++    let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime"));
++
++    assert!(!ptr.is_null());
++}
+--- a/src/backend/linux_raw/vdso_wrappers.rs
++++ b/src/backend/linux_raw/vdso_wrappers.rs
+@@ -556,7 +556,7 @@
+             #[cfg(target_arch = "x86")]
+             let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_getcpu"));
+             #[cfg(target_arch = "riscv64")]
+-            let ptr = vdso.sym(cstr!("LINUX_4.15"), cstr!("__kernel_getcpu"));
++            let ptr = vdso.sym(cstr!("LINUX_4.15"), cstr!("__vdso_getcpu"));
+             #[cfg(target_arch = "powerpc64")]
+             let ptr = vdso.sym(cstr!("LINUX_2.6.15"), cstr!("__kernel_getcpu"));
+ 
diff -Nru rust-rustix-0.38.37/debian/tests/control rust-rustix-0.38.37/debian/tests/control
--- rust-rustix-0.38.37/debian/tests/control	2024-10-11 12:08:01.000000000 +0200
+++ rust-rustix-0.38.37/debian/tests/control	2025-05-14 16:37:22.000000000 +0200
@@ -1,199 +1,199 @@
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --all-features
 Features: test-name=rust-rustix:@
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features all-apis
 Features: test-name=librust-rustix-dev:all-apis
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features alloc
 Features: test-name=librust-rustix-dev:alloc
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features cc
 Features: test-name=librust-rustix-dev:cc
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features compiler_builtins
 Features: test-name=librust-rustix-dev:compiler_builtins
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features core
 Features: test-name=librust-rustix-dev:core
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets
 Features: test-name=librust-rustix-dev:default
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features event
 Features: test-name=librust-rustix-dev:event
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features fs
 Features: test-name=librust-rustix-dev:fs
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features io_uring
 Features: test-name=librust-rustix-dev:io_uring
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features itoa
 Features: test-name=librust-rustix-dev:itoa
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features libc
 Features: test-name=librust-rustix-dev:libc
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features libc-extra-traits
 Features: test-name=librust-rustix-dev:libc-extra-traits
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features libc_errno
 Features: test-name=librust-rustix-dev:libc_errno
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features linux_4_11
 Features: test-name=librust-rustix-dev:linux_4_11
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features linux_latest
 Features: test-name=librust-rustix-dev:linux_latest
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features mm
 Features: test-name=librust-rustix-dev:mm
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features mount
 Features: test-name=librust-rustix-dev:mount
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features net
 Features: test-name=librust-rustix-dev:net
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features once_cell
 Features: test-name=librust-rustix-dev:once_cell
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features param
 Features: test-name=librust-rustix-dev:param
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features pipe
 Features: test-name=librust-rustix-dev:pipe
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features process
 Features: test-name=librust-rustix-dev:process
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features procfs
 Features: test-name=librust-rustix-dev:procfs
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features pty
 Features: test-name=librust-rustix-dev:pty
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features rand
 Features: test-name=librust-rustix-dev:rand
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features runtime
 Features: test-name=librust-rustix-dev:runtime
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features rustc-dep-of-std
 Features: test-name=librust-rustix-dev:rustc-dep-of-std
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features shm
 Features: test-name=librust-rustix-dev:shm
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features std
 Features: test-name=librust-rustix-dev:std
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features stdio
 Features: test-name=librust-rustix-dev:stdio
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features system
 Features: test-name=librust-rustix-dev:system
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features termios
 Features: test-name=librust-rustix-dev:termios
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features thread
 Features: test-name=librust-rustix-dev:thread
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features time
 Features: test-name=librust-rustix-dev:time
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features try_close
 Features: test-name=librust-rustix-dev:try_close
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features use-explicitly-provided-auxv
 Features: test-name=librust-rustix-dev:use-explicitly-provided-auxv
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features use-libc
 Features: test-name=librust-rustix-dev:use-libc
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features --features use-libc-auxv
 Features: test-name=librust-rustix-dev:use-libc-auxv
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
 
 Test-Command: /usr/share/cargo/bin/cargo-auto-test rustix 0.38.37 --all-targets --no-default-features
 Features: test-name=librust-rustix-dev:
-Depends: dh-cargo (>= 31), rustc:native (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
+Depends: dh-cargo (>= 31), rustc (>= 1.63), librust-errno-0.3-dev (>= 0.3.8-~~), librust-flate2-1+default-dev, librust-libc-0.2+default-dev (>= 0.2.156-~~), librust-memoffset-0.8+default-dev, librust-serial-test-2+default-dev, librust-static-assertions-1+default-dev (>= 1.1.0-~~), librust-tempfile-3+default-dev (>= 3.5.0-~~), @
 Restrictions: allow-stderr, skip-not-installable, flaky
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://alioth-lists.debian.net/pipermail/pkg-rust-maintainers/attachments/20250520/01c17425/attachment-0001.sig>


More information about the Pkg-rust-maintainers mailing list