summaryrefslogtreecommitdiffstats
path: root/debian/patches/u-hurd-libc.4.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/u-hurd-libc.4.patch')
-rw-r--r--debian/patches/u-hurd-libc.4.patch347
1 files changed, 347 insertions, 0 deletions
diff --git a/debian/patches/u-hurd-libc.4.patch b/debian/patches/u-hurd-libc.4.patch
new file mode 100644
index 000000000..9868f2c68
--- /dev/null
+++ b/debian/patches/u-hurd-libc.4.patch
@@ -0,0 +1,347 @@
+https://github.com/rust-lang/libc/pull/3430
+
+commit 07e57b2b2a383d942ee546dc4d69bf28280a1549
+Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
+Date: Fri Nov 10 20:14:11 2023 +0100
+
+ hurd: Fix C API interface completion
+
+ c72c68c5d12e ("hurd: Complete C API interface") was actually missing a few
+ fixes.
+
+diff --git a/vendor/libc/src/unix/hurd/mod.rs b/vendor/libc/src/unix/hurd/mod.rs
+index 75a272e4d..2e9f69e66 100644
+--- a/vendor/libc/src/unix/hurd/mod.rs
++++ b/vendor/libc/src/unix/hurd/mod.rs
+@@ -164,6 +164,7 @@ pub type pthread_key_t = __pthread_key;
+ pub type pthread_once_t = __pthread_once;
+
+ pub type __rlimit_resource = ::c_uint;
++pub type __rlimit_resource_t = __rlimit_resource;
+ pub type rlim_t = __rlim_t;
+ pub type rlim64_t = __rlim64_t;
+
+@@ -215,10 +216,34 @@ pub type tcp_ca_state = ::c_uint;
+
+ pub type idtype_t = ::c_uint;
+
++pub type mqd_t = ::c_int;
++
++pub type Lmid_t = ::c_long;
++
+ pub type regoff_t = ::c_int;
+
++pub type nl_item = ::c_int;
++
+ pub type iconv_t = *mut ::c_void;
+
++#[cfg_attr(feature = "extra_traits", derive(Debug))]
++pub enum fpos64_t {} // FIXME: fill this out with a struct
++impl ::Copy for fpos64_t {}
++impl ::Clone for fpos64_t {
++ fn clone(&self) -> fpos64_t {
++ *self
++ }
++}
++
++#[cfg_attr(feature = "extra_traits", derive(Debug))]
++pub enum timezone {}
++impl ::Copy for timezone {}
++impl ::Clone for timezone {
++ fn clone(&self) -> timezone {
++ *self
++ }
++}
++
+ // structs
+ s! {
+ pub struct ip_mreq {
+@@ -431,7 +456,7 @@ s! {
+
+ pub struct stat {
+ pub st_fstype: ::c_int,
+- pub st_fsid: __fsid_t,
++ pub st_dev: __fsid_t, /* Actually st_fsid */
+ pub st_ino: __ino_t,
+ pub st_gen: ::c_uint,
+ pub st_rdev: __dev_t,
+@@ -583,6 +608,18 @@ s! {
+ __glibc_reserved: [::c_char; 32]
+ }
+
++ pub struct mq_attr {
++ pub mq_flags: ::c_long,
++ pub mq_maxmsg: ::c_long,
++ pub mq_msgsize: ::c_long,
++ pub mq_curmsgs: ::c_long,
++ }
++
++ pub struct __exit_status {
++ pub e_termination: ::c_short,
++ pub e_exit: ::c_short,
++ }
++
+ #[cfg_attr(target_pointer_width = "32",
+ repr(align(4)))]
+ #[cfg_attr(target_pointer_width = "64",
+@@ -998,6 +1035,96 @@ s! {
+
+ }
+
++s_no_extra_traits! {
++ pub struct utmpx {
++ pub ut_type: ::c_short,
++ pub ut_pid: ::pid_t,
++ pub ut_line: [::c_char; __UT_LINESIZE],
++ pub ut_id: [::c_char; 4],
++
++ pub ut_user: [::c_char; __UT_NAMESIZE],
++ pub ut_host: [::c_char; __UT_HOSTSIZE],
++ pub ut_exit: __exit_status,
++
++ #[cfg(any( all(target_pointer_width = "32",
++ not(target_arch = "x86_64"))))]
++ pub ut_session: ::c_long,
++ #[cfg(any(all(target_pointer_width = "32",
++ not(target_arch = "x86_64"))))]
++ pub ut_tv: ::timeval,
++
++ #[cfg(not(any(all(target_pointer_width = "32",
++ not(target_arch = "x86_64")))))]
++ pub ut_session: i32,
++ #[cfg(not(any(all(target_pointer_width = "32",
++ not(target_arch = "x86_64")))))]
++ pub ut_tv: __timeval,
++
++ pub ut_addr_v6: [i32; 4],
++ __glibc_reserved: [::c_char; 20],
++ }
++}
++
++cfg_if! {
++ if #[cfg(feature = "extra_traits")] {
++ impl PartialEq for utmpx {
++ fn eq(&self, other: &utmpx) -> bool {
++ self.ut_type == other.ut_type
++ && self.ut_pid == other.ut_pid
++ && self.ut_line == other.ut_line
++ && self.ut_id == other.ut_id
++ && self.ut_user == other.ut_user
++ && self
++ .ut_host
++ .iter()
++ .zip(other.ut_host.iter())
++ .all(|(a,b)| a == b)
++ && self.ut_exit == other.ut_exit
++ && self.ut_session == other.ut_session
++ && self.ut_tv == other.ut_tv
++ && self.ut_addr_v6 == other.ut_addr_v6
++ && self.__glibc_reserved == other.__glibc_reserved
++ }
++ }
++
++ impl Eq for utmpx {}
++
++ impl ::fmt::Debug for utmpx {
++ fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
++ f.debug_struct("utmpx")
++ .field("ut_type", &self.ut_type)
++ .field("ut_pid", &self.ut_pid)
++ .field("ut_line", &self.ut_line)
++ .field("ut_id", &self.ut_id)
++ .field("ut_user", &self.ut_user)
++ // FIXME: .field("ut_host", &self.ut_host)
++ .field("ut_exit", &self.ut_exit)
++ .field("ut_session", &self.ut_session)
++ .field("ut_tv", &self.ut_tv)
++ .field("ut_addr_v6", &self.ut_addr_v6)
++ .field("__glibc_reserved", &self.__glibc_reserved)
++ .finish()
++ }
++ }
++
++ impl ::hash::Hash for utmpx {
++ fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
++ self.ut_type.hash(state);
++ self.ut_pid.hash(state);
++ self.ut_line.hash(state);
++ self.ut_id.hash(state);
++ self.ut_user.hash(state);
++ self.ut_host.hash(state);
++ self.ut_exit.hash(state);
++ self.ut_session.hash(state);
++ self.ut_tv.hash(state);
++ self.ut_addr_v6.hash(state);
++ self.__glibc_reserved.hash(state);
++ }
++ }
++ }
++}
++
+ impl siginfo_t {
+ pub unsafe fn si_addr(&self) -> *mut ::c_void {
+ self.si_addr
+@@ -1310,7 +1437,10 @@ pub const INET_ADDRSTRLEN: usize = 16;
+ pub const INET6_ADDRSTRLEN: usize = 46;
+
+ // netinet/ip.h
+-pub const IPTOS_ECN_MASK: u8 = 0x03;
++pub const IPTOS_TOS_MASK: u8 = 0x1E;
++pub const IPTOS_PREC_MASK: u8 = 0xE0;
++
++pub const IPTOS_ECN_NOT_ECT: u8 = 0x00;
+
+ pub const IPTOS_LOWDELAY: u8 = 0x10;
+ pub const IPTOS_THROUGHPUT: u8 = 0x08;
+@@ -1372,6 +1502,12 @@ pub const ARPOP_InREQUEST: u16 = 8;
+ pub const ARPOP_InREPLY: u16 = 9;
+ pub const ARPOP_NAK: u16 = 10;
+
++pub const MAX_ADDR_LEN: usize = 7;
++pub const ARPD_UPDATE: ::c_ushort = 0x01;
++pub const ARPD_LOOKUP: ::c_ushort = 0x02;
++pub const ARPD_FLUSH: ::c_ushort = 0x03;
++pub const ATF_MAGIC: ::c_int = 0x80;
++
+ pub const ATF_NETMASK: ::c_int = 0x20;
+ pub const ATF_DONTPUB: ::c_int = 0x40;
+
+@@ -1598,6 +1734,71 @@ pub const LC_MEASUREMENT_MASK: ::c_int = 2048;
+ pub const LC_IDENTIFICATION_MASK: ::c_int = 4096;
+ pub const LC_ALL_MASK: ::c_int = 8127;
+
++pub const ABDAY_1: ::nl_item = 0x20000;
++pub const ABDAY_2: ::nl_item = 0x20001;
++pub const ABDAY_3: ::nl_item = 0x20002;
++pub const ABDAY_4: ::nl_item = 0x20003;
++pub const ABDAY_5: ::nl_item = 0x20004;
++pub const ABDAY_6: ::nl_item = 0x20005;
++pub const ABDAY_7: ::nl_item = 0x20006;
++
++pub const DAY_1: ::nl_item = 0x20007;
++pub const DAY_2: ::nl_item = 0x20008;
++pub const DAY_3: ::nl_item = 0x20009;
++pub const DAY_4: ::nl_item = 0x2000A;
++pub const DAY_5: ::nl_item = 0x2000B;
++pub const DAY_6: ::nl_item = 0x2000C;
++pub const DAY_7: ::nl_item = 0x2000D;
++
++pub const ABMON_1: ::nl_item = 0x2000E;
++pub const ABMON_2: ::nl_item = 0x2000F;
++pub const ABMON_3: ::nl_item = 0x20010;
++pub const ABMON_4: ::nl_item = 0x20011;
++pub const ABMON_5: ::nl_item = 0x20012;
++pub const ABMON_6: ::nl_item = 0x20013;
++pub const ABMON_7: ::nl_item = 0x20014;
++pub const ABMON_8: ::nl_item = 0x20015;
++pub const ABMON_9: ::nl_item = 0x20016;
++pub const ABMON_10: ::nl_item = 0x20017;
++pub const ABMON_11: ::nl_item = 0x20018;
++pub const ABMON_12: ::nl_item = 0x20019;
++
++pub const MON_1: ::nl_item = 0x2001A;
++pub const MON_2: ::nl_item = 0x2001B;
++pub const MON_3: ::nl_item = 0x2001C;
++pub const MON_4: ::nl_item = 0x2001D;
++pub const MON_5: ::nl_item = 0x2001E;
++pub const MON_6: ::nl_item = 0x2001F;
++pub const MON_7: ::nl_item = 0x20020;
++pub const MON_8: ::nl_item = 0x20021;
++pub const MON_9: ::nl_item = 0x20022;
++pub const MON_10: ::nl_item = 0x20023;
++pub const MON_11: ::nl_item = 0x20024;
++pub const MON_12: ::nl_item = 0x20025;
++
++pub const AM_STR: ::nl_item = 0x20026;
++pub const PM_STR: ::nl_item = 0x20027;
++
++pub const D_T_FMT: ::nl_item = 0x20028;
++pub const D_FMT: ::nl_item = 0x20029;
++pub const T_FMT: ::nl_item = 0x2002A;
++pub const T_FMT_AMPM: ::nl_item = 0x2002B;
++
++pub const ERA: ::nl_item = 0x2002C;
++pub const ERA_D_FMT: ::nl_item = 0x2002E;
++pub const ALT_DIGITS: ::nl_item = 0x2002F;
++pub const ERA_D_T_FMT: ::nl_item = 0x20030;
++pub const ERA_T_FMT: ::nl_item = 0x20031;
++
++pub const CODESET: ::nl_item = 14;
++pub const CRNCYSTR: ::nl_item = 0x4000F;
++pub const RADIXCHAR: ::nl_item = 0x10000;
++pub const THOUSEP: ::nl_item = 0x10001;
++pub const YESEXPR: ::nl_item = 0x50000;
++pub const NOEXPR: ::nl_item = 0x50001;
++pub const YESSTR: ::nl_item = 0x50002;
++pub const NOSTR: ::nl_item = 0x50003;
++
+ // reboot.h
+ pub const RB_AUTOBOOT: ::c_int = 0x0;
+ pub const RB_ASKNAME: ::c_int = 0x1;
+@@ -1785,6 +1986,7 @@ pub const CBRK: u8 = 0u8;
+
+ // dlfcn.h
+ pub const RTLD_DEFAULT: *mut ::c_void = 0i64 as *mut ::c_void;
++pub const RTLD_NEXT: *mut ::c_void = -1i64 as *mut ::c_void;
+ pub const RTLD_LAZY: ::c_int = 1;
+ pub const RTLD_NOW: ::c_int = 2;
+ pub const RTLD_BINDING_MASK: ::c_int = 3;
+@@ -2942,6 +3144,10 @@ pub const PRIO_PROCESS: __priority_which = 0;
+ pub const PRIO_PGRP: __priority_which = 1;
+ pub const PRIO_USER: __priority_which = 2;
+
++pub const __UT_LINESIZE: usize = 32;
++pub const __UT_NAMESIZE: usize = 32;
++pub const __UT_HOSTSIZE: usize = 256;
++
+ pub const SOCK_STREAM: ::c_int = 1;
+ pub const SOCK_DGRAM: ::c_int = 2;
+ pub const SOCK_RAW: ::c_int = 3;
+@@ -3079,11 +3285,6 @@ pub const RTLD_DI_TLS_DATA: ::c_int = 10;
+ pub const RTLD_DI_PHDR: ::c_int = 11;
+ pub const RTLD_DI_MAX: ::c_int = 11;
+
+-pub const RTLD_NEXT: *mut ::c_void = -1i64 as *mut ::c_void;
+-pub const RTLD_DEFAULT: *mut ::c_void = 0i64 as *mut ::c_void;
+-pub const RTLD_NODELETE: ::c_int = 0x1000;
+-pub const RTLD_NOW: ::c_int = 0x2;
+-
+ pub const SI_ASYNCIO: ::c_int = -4;
+ pub const SI_MESGQ: ::c_int = -3;
+ pub const SI_TIMER: ::c_int = -2;
+@@ -3262,12 +3463,12 @@ f! {
+ return 0 as *mut cmsghdr;
+ };
+ let next = (cmsg as usize +
+- super::CMSG_ALIGN((*cmsg).cmsg_len as usize))
++ CMSG_ALIGN((*cmsg).cmsg_len as usize))
+ as *mut cmsghdr;
+ let max = (*mhdr).msg_control as usize
+ + (*mhdr).msg_controllen as usize;
+ if (next.offset(1)) as usize > max ||
+- next as usize + super::CMSG_ALIGN((*next).cmsg_len as usize) > max
++ next as usize + CMSG_ALIGN((*next).cmsg_len as usize) > max
+ {
+ 0 as *mut cmsghdr
+ } else {
+@@ -3756,6 +3957,7 @@ extern "C" {
+ __attr: *const pthread_attr_t,
+ __guardsize: *mut ::size_t,
+ ) -> ::c_int;
++ pub fn pthread_attr_setguardsize(attr: *mut ::pthread_attr_t, guardsize: ::size_t) -> ::c_int;
+
+ pub fn pthread_attr_getstack(
+ __attr: *const pthread_attr_t,
+@@ -3763,12 +3965,6 @@ extern "C" {
+ __stacksize: *mut ::size_t,
+ ) -> ::c_int;
+
+- pub fn pthread_attr_getguardsize(
+- attr: *const ::pthread_attr_t,
+- guardsize: *mut ::size_t,
+- ) -> ::c_int;
+- pub fn pthread_attr_setguardsize(attr: *mut ::pthread_attr_t, guardsize: ::size_t) -> ::c_int;
+-
+ pub fn pthread_mutexattr_getpshared(
+ attr: *const pthread_mutexattr_t,
+ pshared: *mut ::c_int,