From 983bdcaab3408752a9d6a1189d18ded70fd8a6cd Mon Sep 17 00:00:00 2001 From: Dragan Cecavac Date: Wed, 7 Jun 2023 17:01:08 +0200 Subject: [PATCH 01/32] android: Add android/platform/bionic/libc/kernel/uapi/linux/neighbour.h constants --- libc-test/semver/android.txt | 72 ++++++++++++++++++++++++++ src/unix/linux_like/android/mod.rs | 82 ++++++++++++++++++++++++++++++ 2 files changed, 154 insertions(+) diff --git a/libc-test/semver/android.txt b/libc-test/semver/android.txt index 7659995d50721..986001aec49bd 100644 --- a/libc-test/semver/android.txt +++ b/libc-test/semver/android.txt @@ -597,6 +597,8 @@ FD_ISSET FD_SET FD_SETSIZE FD_ZERO +FDB_NOTIFY_BIT +FDB_NOTIFY_INACTIVE_BIT FF0 FF1 FFDLY @@ -1257,6 +1259,54 @@ MS_SYNCHRONOUS MS_UNBINDABLE NCCS NCP_SUPER_MAGIC +NDA_CACHEINFO +NDA_DST +NDA_FDB_EXT_ATTRS +NDA_FLAGS_EXT +NDA_IFINDEX +NDA_LINK_NETNSID +NDA_LLADDR +NDA_MASTER +NDA_NDM_FLAGS_MASK +NDA_NDM_STATE_MASK +NDA_NH_ID +NDA_PORT +NDA_PROBES +NDA_PROTOCOL +NDA_SRC_VNI +NDA_UNSPEC +NDA_VLAN +NDA_VNI +NDTA_CONFIG +NDTA_GC_INTERVAL +NDTA_NAME +NDTA_PAD +NDTA_PARMS +NDTA_STATS +NDTA_THRESH1 +NDTA_THRESH2 +NDTA_THRESH3 +NDTA_UNSPEC +NDTPA_ANYCAST_DELAY +NDTPA_APP_PROBES +NDTPA_BASE_REACHABLE_TIME +NDTPA_DELAY_PROBE_TIME +NDTPA_GC_STALETIME +NDTPA_IFINDEX +NDTPA_INTERVAL_PROBE_TIME_MS +NDTPA_LOCKTIME +NDTPA_MCAST_PROBES +NDTPA_MCAST_REPROBES +NDTPA_PAD +NDTPA_PROXY_DELAY +NDTPA_PROXY_QLEN +NDTPA_QUEUE_LEN +NDTPA_QUEUE_LENBYTES +NDTPA_REACHABLE_TIME +NDTPA_REFCNT +NDTPA_RETRANS_TIME +NDTPA_UCAST_PROBES +NDTPA_UNSPEC NETLINK_ADD_MEMBERSHIP NETLINK_AUDIT NETLINK_BROADCAST_ERROR @@ -1622,6 +1672,9 @@ NF_VERDICT_FLAG_QUEUE_BYPASS NF_VERDICT_MASK NF_VERDICT_QBITS NF_VERDICT_QMASK +NFEA_ACTIVITY_NOTIFY +NFEA_DONT_REFRESH +NFEA_UNSPEC NI_DGRAM NI_MAXHOST NI_MAXSERV @@ -1656,6 +1709,25 @@ NLM_F_REPLACE NLM_F_REQUEST NLM_F_ROOT NOFLSH +NTF_EXT_LEARNED +NTF_EXT_LOCKED +NTF_EXT_MANAGED +NTF_MASTER +NTF_OFFLOADED +NTF_PROXY +NTF_ROUTER +NTF_SELF +NTF_STICKY +NTF_USE +NUD_DELAY +NUD_FAILED +NUD_INCOMPLETE +NUD_NOARP +NUD_NONE +NUD_PERMANENT +NUD_PROBE +NUD_REACHABLE +NUD_STALE OCRNL OFDEL OFILL diff --git a/src/unix/linux_like/android/mod.rs b/src/unix/linux_like/android/mod.rs index 91b19e6c08bd3..5d9a1d2db1bcc 100644 --- a/src/unix/linux_like/android/mod.rs +++ b/src/unix/linux_like/android/mod.rs @@ -2580,6 +2580,88 @@ pub const ETH_P_XDSA: ::c_int = 0x00F8; /* see rust-lang/libc#924 pub const ETH_P_MAP: ::c_int = 0x00F9;*/ // end android/platform/bionic/libc/kernel/uapi/linux/if_ether.h +// start android/platform/bionic/libc/kernel/uapi/linux/neighbour.h +pub const NDA_UNSPEC: ::c_ushort = 0; +pub const NDA_DST: ::c_ushort = 1; +pub const NDA_LLADDR: ::c_ushort = 2; +pub const NDA_CACHEINFO: ::c_ushort = 3; +pub const NDA_PROBES: ::c_ushort = 4; +pub const NDA_VLAN: ::c_ushort = 5; +pub const NDA_PORT: ::c_ushort = 6; +pub const NDA_VNI: ::c_ushort = 7; +pub const NDA_IFINDEX: ::c_ushort = 8; +pub const NDA_MASTER: ::c_ushort = 9; +pub const NDA_LINK_NETNSID: ::c_ushort = 10; +pub const NDA_SRC_VNI: ::c_ushort = 11; +pub const NDA_PROTOCOL: ::c_ushort = 12; +pub const NDA_NH_ID: ::c_ushort = 13; +pub const NDA_FDB_EXT_ATTRS: ::c_ushort = 14; +pub const NDA_FLAGS_EXT: ::c_ushort = 15; +pub const NDA_NDM_STATE_MASK: ::c_ushort = 16; +pub const NDA_NDM_FLAGS_MASK: ::c_ushort = 17; + +pub const NTF_USE: u8 = 0x01; +pub const NTF_SELF: u8 = 0x02; +pub const NTF_MASTER: u8 = 0x04; +pub const NTF_PROXY: u8 = 0x08; +pub const NTF_EXT_LEARNED: u8 = 0x10; +pub const NTF_OFFLOADED: u8 = 0x20; +pub const NTF_STICKY: u8 = 0x40; +pub const NTF_ROUTER: u8 = 0x80; + +pub const NTF_EXT_MANAGED: u8 = 0x01; +pub const NTF_EXT_LOCKED: u8 = 0x02; + +pub const NUD_NONE: u16 = 0x00; +pub const NUD_INCOMPLETE: u16 = 0x01; +pub const NUD_REACHABLE: u16 = 0x02; +pub const NUD_STALE: u16 = 0x04; +pub const NUD_DELAY: u16 = 0x08; +pub const NUD_PROBE: u16 = 0x10; +pub const NUD_FAILED: u16 = 0x20; +pub const NUD_NOARP: u16 = 0x40; +pub const NUD_PERMANENT: u16 = 0x80; + +pub const NDTPA_UNSPEC: ::c_ushort = 0; +pub const NDTPA_IFINDEX: ::c_ushort = 1; +pub const NDTPA_REFCNT: ::c_ushort = 2; +pub const NDTPA_REACHABLE_TIME: ::c_ushort = 3; +pub const NDTPA_BASE_REACHABLE_TIME: ::c_ushort = 4; +pub const NDTPA_RETRANS_TIME: ::c_ushort = 5; +pub const NDTPA_GC_STALETIME: ::c_ushort = 6; +pub const NDTPA_DELAY_PROBE_TIME: ::c_ushort = 7; +pub const NDTPA_QUEUE_LEN: ::c_ushort = 8; +pub const NDTPA_APP_PROBES: ::c_ushort = 9; +pub const NDTPA_UCAST_PROBES: ::c_ushort = 10; +pub const NDTPA_MCAST_PROBES: ::c_ushort = 11; +pub const NDTPA_ANYCAST_DELAY: ::c_ushort = 12; +pub const NDTPA_PROXY_DELAY: ::c_ushort = 13; +pub const NDTPA_PROXY_QLEN: ::c_ushort = 14; +pub const NDTPA_LOCKTIME: ::c_ushort = 15; +pub const NDTPA_QUEUE_LENBYTES: ::c_ushort = 16; +pub const NDTPA_MCAST_REPROBES: ::c_ushort = 17; +pub const NDTPA_PAD: ::c_ushort = 18; +pub const NDTPA_INTERVAL_PROBE_TIME_MS: ::c_ushort = 19; + +pub const NDTA_UNSPEC: ::c_ushort = 0; +pub const NDTA_NAME: ::c_ushort = 1; +pub const NDTA_THRESH1: ::c_ushort = 2; +pub const NDTA_THRESH2: ::c_ushort = 3; +pub const NDTA_THRESH3: ::c_ushort = 4; +pub const NDTA_CONFIG: ::c_ushort = 5; +pub const NDTA_PARMS: ::c_ushort = 6; +pub const NDTA_STATS: ::c_ushort = 7; +pub const NDTA_GC_INTERVAL: ::c_ushort = 8; +pub const NDTA_PAD: ::c_ushort = 9; + +pub const FDB_NOTIFY_BIT: u16 = 0x01; +pub const FDB_NOTIFY_INACTIVE_BIT: u16 = 0x02; + +pub const NFEA_UNSPEC: ::c_ushort = 0; +pub const NFEA_ACTIVITY_NOTIFY: ::c_ushort = 1; +pub const NFEA_DONT_REFRESH: ::c_ushort = 2; +// end android/platform/bionic/libc/kernel/uapi/linux/neighbour.h + pub const SIOCADDRT: ::c_ulong = 0x0000890B; pub const SIOCDELRT: ::c_ulong = 0x0000890C; pub const SIOCGIFNAME: ::c_ulong = 0x00008910; From 63b0d673eaf2a177ff208c5c50999738bdd1bf0d Mon Sep 17 00:00:00 2001 From: Kleis Auke Wolthuizen Date: Sun, 25 Jun 2023 10:24:57 +0200 Subject: [PATCH 02/32] Fix ABI compatibility with Emscripten >= 3.1.42 See: https://github.com/emscripten-core/emscripten/pull/19569#issuecomment-1605440414 --- build.rs | 40 +++++++++++++++++++++++++++ src/unix/linux_like/emscripten/mod.rs | 6 ++++ 2 files changed, 46 insertions(+) diff --git a/build.rs b/build.rs index 79bec0ea4c30b..9b64f7b0d20f6 100644 --- a/build.rs +++ b/build.rs @@ -7,6 +7,7 @@ use std::string::String; // need to know all the possible cfgs that this script will set. If you need to set another cfg // make sure to add it to this list as well. const ALLOWED_CFGS: &'static [&'static str] = &[ + "emscripten_new_stat_abi", "freebsd10", "freebsd11", "freebsd12", @@ -69,6 +70,18 @@ fn main() { Some(_) | None => set_cfg("freebsd11"), } + match emcc_version() { + Some((major, minor, patch)) + if (major > 3) + || (major == 3 && minor > 1) + || (major == 3 && minor == 1 && patch >= 42) => + { + set_cfg("emscripten_new_stat_abi") + } + // Non-Emscripten or version < 3.1.42. + Some(_) | None => (), + } + // On CI: deny all warnings if libc_ci { set_cfg("libc_deny_warnings"); @@ -238,6 +251,33 @@ fn which_freebsd() -> Option { } } +fn emcc_version() -> Option<(u32, u32, u32)> { + let output = std::process::Command::new("emcc") + .arg("-dumpversion") + .output() + .ok(); + if output.is_none() { + return None; + } + let output = output.unwrap(); + if !output.status.success() { + return None; + } + + let stdout = String::from_utf8(output.stdout).ok(); + if stdout.is_none() { + return None; + } + let version = stdout.unwrap(); + let mut pieces = version.trim().split('.'); + + let major = pieces.next()?.parse().unwrap(); + let minor = pieces.next()?.parse().unwrap(); + let patch = pieces.next()?.parse().unwrap(); + + Some((major, minor, patch)) +} + fn set_cfg(cfg: &str) { if !ALLOWED_CFGS.contains(&cfg) { panic!("trying to set cfg {}, but it is not in ALLOWED_CFGS", cfg); diff --git a/src/unix/linux_like/emscripten/mod.rs b/src/unix/linux_like/emscripten/mod.rs index 5b947b634c12a..c0d7071840847 100644 --- a/src/unix/linux_like/emscripten/mod.rs +++ b/src/unix/linux_like/emscripten/mod.rs @@ -260,13 +260,16 @@ s! { } pub struct stat { pub st_dev: ::dev_t, + #[cfg(not(emscripten_new_stat_abi))] __st_dev_padding: ::c_int, + #[cfg(not(emscripten_new_stat_abi))] __st_ino_truncated: ::c_long, pub st_mode: ::mode_t, pub st_nlink: ::nlink_t, pub st_uid: ::uid_t, pub st_gid: ::gid_t, pub st_rdev: ::dev_t, + #[cfg(not(emscripten_new_stat_abi))] __st_rdev_padding: ::c_int, pub st_size: ::off_t, pub st_blksize: ::blksize_t, @@ -282,13 +285,16 @@ s! { pub struct stat64 { pub st_dev: ::dev_t, + #[cfg(not(emscripten_new_stat_abi))] __st_dev_padding: ::c_int, + #[cfg(not(emscripten_new_stat_abi))] __st_ino_truncated: ::c_long, pub st_mode: ::mode_t, pub st_nlink: ::nlink_t, pub st_uid: ::uid_t, pub st_gid: ::gid_t, pub st_rdev: ::dev_t, + #[cfg(not(emscripten_new_stat_abi))] __st_rdev_padding: ::c_int, pub st_size: ::off_t, pub st_blksize: ::blksize_t, From 92db93cf9e756d9ac51115acaa369ebc0cbff83f Mon Sep 17 00:00:00 2001 From: Kleis Auke Wolthuizen Date: Sun, 25 Jun 2023 19:19:50 +0200 Subject: [PATCH 03/32] Simplify --- build.rs | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/build.rs b/build.rs index 9b64f7b0d20f6..680813880b87d 100644 --- a/build.rs +++ b/build.rs @@ -70,14 +70,8 @@ fn main() { Some(_) | None => set_cfg("freebsd11"), } - match emcc_version() { - Some((major, minor, patch)) - if (major > 3) - || (major == 3 && minor > 1) - || (major == 3 && minor == 1 && patch >= 42) => - { - set_cfg("emscripten_new_stat_abi") - } + match emcc_version_code() { + Some(v) if (v >= 30142) => set_cfg("emscripten_new_stat_abi"), // Non-Emscripten or version < 3.1.42. Some(_) | None => (), } @@ -251,7 +245,7 @@ fn which_freebsd() -> Option { } } -fn emcc_version() -> Option<(u32, u32, u32)> { +fn emcc_version_code() -> Option { let output = std::process::Command::new("emcc") .arg("-dumpversion") .output() @@ -271,11 +265,11 @@ fn emcc_version() -> Option<(u32, u32, u32)> { let version = stdout.unwrap(); let mut pieces = version.trim().split('.'); - let major = pieces.next()?.parse().unwrap(); - let minor = pieces.next()?.parse().unwrap(); - let patch = pieces.next()?.parse().unwrap(); + let major = pieces.next().and_then(|x| x.parse().ok()).unwrap_or(0); + let minor = pieces.next().and_then(|x| x.parse().ok()).unwrap_or(0); + let patch = pieces.next().and_then(|x| x.parse().ok()).unwrap_or(0); - Some((major, minor, patch)) + Some(major * 10000 + minor * 100 + patch) } fn set_cfg(cfg: &str) { From ebcb51663ef3eaeabae4a9e15a9db3e5fd22b9c5 Mon Sep 17 00:00:00 2001 From: Dragan Cecavac Date: Tue, 27 Jun 2023 18:52:13 +0200 Subject: [PATCH 04/32] android: Skip currently unsupported linux/neighbour.h tests --- libc-test/build.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/libc-test/build.rs b/libc-test/build.rs index 27a7509f5db1e..8031493ec6bb9 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -1802,6 +1802,26 @@ fn test_android(target: &str) { // kernel 5.6 minimum required "IPPROTO_MPTCP" => true, + // FIXME: NDK r22 minimum required + | "FDB_NOTIFY_BIT" + | "FDB_NOTIFY_INACTIVE_BIT" + | "NDA_FDB_EXT_ATTRS" + | "NDA_NH_ID" + | "NFEA_ACTIVITY_NOTIFY" + | "NFEA_DONT_REFRESH" + | "NFEA_UNSPEC" => true, + + // FIXME: NDK r25 minimum required + | "NDA_FLAGS_EXT" + | "NTF_EXT_MANAGED" => true, + + // FIXME: NDK above r25 required + | "NDA_NDM_STATE_MASK" + | "NDA_NDM_FLAGS_MASK" + | "NDTPA_INTERVAL_PROBE_TIME_MS" + | "NFQA_UNSPEC" + | "NTF_EXT_LOCKED" => true, + _ => false, } }); From 07298c856dbc40d2af61bc3a962532723c317521 Mon Sep 17 00:00:00 2001 From: Dragan Cecavac Date: Wed, 7 Jun 2023 21:30:54 +0200 Subject: [PATCH 05/32] android: Update linux/if_link.h constants --- libc-test/semver/android.txt | 13 +++++++++++++ src/unix/linux_like/android/mod.rs | 13 +++++++++++++ 2 files changed, 26 insertions(+) diff --git a/libc-test/semver/android.txt b/libc-test/semver/android.txt index 2bbdbf621a72c..fc24ffee7fad2 100644 --- a/libc-test/semver/android.txt +++ b/libc-test/semver/android.txt @@ -779,6 +779,19 @@ IFLA_CARRIER_DOWN_COUNT IFLA_NEW_IFINDEX IFLA_MIN_MTU IFLA_MAX_MTU +IFLA_PROP_LIST +IFLA_ALT_IFNAME +IFLA_PERM_ADDRESS +IFLA_PROTO_DOWN_REASON +IFLA_PARENT_DEV_NAME +IFLA_PARENT_DEV_BUS_NAME +IFLA_GRO_MAX_SIZE +IFLA_TSO_MAX_SIZE +IFLA_TSO_MAX_SEGS +IFLA_ALLMULTI +IFLA_DEVLINK_PORT +IFLA_GSO_IPV4_MAX_SIZE +IFLA_GRO_IPV4_MAX_SIZE IFLA_INFO_UNSPEC IFLA_INFO_KIND IFLA_INFO_DATA diff --git a/src/unix/linux_like/android/mod.rs b/src/unix/linux_like/android/mod.rs index c6a686082541c..28d42535f0c09 100644 --- a/src/unix/linux_like/android/mod.rs +++ b/src/unix/linux_like/android/mod.rs @@ -3000,6 +3000,19 @@ pub const IFLA_CARRIER_DOWN_COUNT: ::c_ushort = 48; pub const IFLA_NEW_IFINDEX: ::c_ushort = 49; pub const IFLA_MIN_MTU: ::c_ushort = 50; pub const IFLA_MAX_MTU: ::c_ushort = 51; +pub const IFLA_PROP_LIST: ::c_ushort = 52; +pub const IFLA_ALT_IFNAME: ::c_ushort = 53; +pub const IFLA_PERM_ADDRESS: ::c_ushort = 54; +pub const IFLA_PROTO_DOWN_REASON: ::c_ushort = 55; +pub const IFLA_PARENT_DEV_NAME: ::c_ushort = 56; +pub const IFLA_PARENT_DEV_BUS_NAME: ::c_ushort = 57; +pub const IFLA_GRO_MAX_SIZE: ::c_ushort = 58; +pub const IFLA_TSO_MAX_SIZE: ::c_ushort = 59; +pub const IFLA_TSO_MAX_SEGS: ::c_ushort = 60; +pub const IFLA_ALLMULTI: ::c_ushort = 61; +pub const IFLA_DEVLINK_PORT: ::c_ushort = 62; +pub const IFLA_GSO_IPV4_MAX_SIZE: ::c_ushort = 63; +pub const IFLA_GRO_IPV4_MAX_SIZE: ::c_ushort = 64; pub const IFLA_INFO_UNSPEC: ::c_ushort = 0; pub const IFLA_INFO_KIND: ::c_ushort = 1; From b0cc9cfdaaa13a9087dfccef93b2003ed7d84aa9 Mon Sep 17 00:00:00 2001 From: Dragan Cecavac Date: Tue, 27 Jun 2023 17:37:00 +0200 Subject: [PATCH 06/32] android: Skip currently unsupported linux/if_link.h tests --- libc-test/build.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/libc-test/build.rs b/libc-test/build.rs index 36aea9ef14000..b084be7716e89 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -1805,17 +1805,32 @@ fn test_android(target: &str) { // FIXME: NDK r22 minimum required | "FDB_NOTIFY_BIT" | "FDB_NOTIFY_INACTIVE_BIT" + | "IFLA_ALT_IFNAME" + | "IFLA_PERM_ADDRESS" + | "IFLA_PROP_LIST" + | "IFLA_PROTO_DOWN_REASON" | "NDA_FDB_EXT_ATTRS" | "NDA_NH_ID" | "NFEA_ACTIVITY_NOTIFY" | "NFEA_DONT_REFRESH" | "NFEA_UNSPEC" => true, + // FIXME: NDK r23 minimum required + | "IFLA_PARENT_DEV_BUS_NAME" + | "IFLA_PARENT_DEV_NAME" => true, + // FIXME: NDK r25 minimum required + | "IFLA_GRO_MAX_SIZE" | "NDA_FLAGS_EXT" | "NTF_EXT_MANAGED" => true, // FIXME: NDK above r25 required + | "IFLA_ALLMULTI" + | "IFLA_DEVLINK_PORT" + | "IFLA_GRO_IPV4_MAX_SIZE" + | "IFLA_GSO_IPV4_MAX_SIZE" + | "IFLA_TSO_MAX_SEGS" + | "IFLA_TSO_MAX_SIZE" | "NDA_NDM_STATE_MASK" | "NDA_NDM_FLAGS_MASK" | "NDTPA_INTERVAL_PROBE_TIME_MS" From bcecfe543df6d22f6b4a67c3d55587afc82ac5da Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Wed, 5 Jul 2023 20:44:50 +0200 Subject: [PATCH 07/32] Use `build-std=core` instead of `build-std` alone --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index bc3d06f5ead65..ab81d39c436f1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -124,7 +124,7 @@ targets = [ "x86_64-unknown-redox", "x86_64-wrs-vxworks" ] -cargo-args = ["-Zbuild-std"] +cargo-args = ["-Zbuild-std=core"] [dependencies] rustc-std-workspace-core = { version = "1.0.0", optional = true } From 658425610d462a9e797bd67550a662317e3f53eb Mon Sep 17 00:00:00 2001 From: Henry Chen Date: Tue, 9 May 2023 15:55:36 +0800 Subject: [PATCH 08/32] add mips64r6 target_arch detection for linux gnu targets --- build.rs | 2 +- src/unix/linux_like/linux/align.rs | 2 ++ src/unix/linux_like/linux/arch/mips/mod.rs | 2 +- src/unix/linux_like/linux/arch/mod.rs | 2 +- src/unix/linux_like/linux/gnu/b64/mod.rs | 4 +++- src/unix/linux_like/linux/gnu/mod.rs | 9 ++++++--- src/unix/linux_like/linux/no_align.rs | 2 ++ 7 files changed, 16 insertions(+), 7 deletions(-) diff --git a/build.rs b/build.rs index 680813880b87d..97aa33918c198 100644 --- a/build.rs +++ b/build.rs @@ -35,7 +35,7 @@ const ALLOWED_CFGS: &'static [&'static str] = &[ const CHECK_CFG_EXTRA: &'static [(&'static str, &'static [&'static str])] = &[ ("target_os", &["switch", "aix", "ohos"]), ("target_env", &["illumos", "wasi", "aix", "ohos"]), - ("target_arch", &["loongarch64"]), + ("target_arch", &["loongarch64", "mips64r6"]), ]; fn main() { diff --git a/src/unix/linux_like/linux/align.rs b/src/unix/linux_like/linux/align.rs index 97f811dac18ee..fc772ccbe270d 100644 --- a/src/unix/linux_like/linux/align.rs +++ b/src/unix/linux_like/linux/align.rs @@ -5,6 +5,7 @@ macro_rules! expand_align { target_arch = "x86_64", target_arch = "powerpc64", target_arch = "mips64", + target_arch = "mips64r6", target_arch = "s390x", target_arch = "sparc64", target_arch = "aarch64", @@ -16,6 +17,7 @@ macro_rules! expand_align { target_arch = "x86_64", target_arch = "powerpc64", target_arch = "mips64", + target_arch = "mips64r6", target_arch = "s390x", target_arch = "sparc64", target_arch = "aarch64", diff --git a/src/unix/linux_like/linux/arch/mips/mod.rs b/src/unix/linux_like/linux/arch/mips/mod.rs index 34c00a293696a..51635bcaf6439 100644 --- a/src/unix/linux_like/linux/arch/mips/mod.rs +++ b/src/unix/linux_like/linux/arch/mips/mod.rs @@ -272,7 +272,7 @@ cfg_if! { } cfg_if! { - if #[cfg(target_arch = "mips64", + if #[cfg(any(target_arch = "mips64", target_arch = "mips64r6"), any(target_env = "gnu", target_env = "uclibc"))] { pub const RLIM_INFINITY: ::rlim_t = !0; diff --git a/src/unix/linux_like/linux/arch/mod.rs b/src/unix/linux_like/linux/arch/mod.rs index c1528f593f63e..017bede95131b 100644 --- a/src/unix/linux_like/linux/arch/mod.rs +++ b/src/unix/linux_like/linux/arch/mod.rs @@ -1,5 +1,5 @@ cfg_if! { - if #[cfg(any(target_arch = "mips", target_arch = "mips64"))] { + if #[cfg(any(target_arch = "mips", target_arch = "mips64", target_arch = "mips64r6"))] { mod mips; pub use self::mips::*; } else if #[cfg(any(target_arch = "powerpc", target_arch = "powerpc64"))] { diff --git a/src/unix/linux_like/linux/gnu/b64/mod.rs b/src/unix/linux_like/linux/gnu/b64/mod.rs index 443958cff7372..ff394e33a2136 100644 --- a/src/unix/linux_like/linux/gnu/b64/mod.rs +++ b/src/unix/linux_like/linux/gnu/b64/mod.rs @@ -72,6 +72,7 @@ s! { target_arch = "aarch64", target_arch = "loongarch64", target_arch = "mips64", + target_arch = "mips64r6", target_arch = "powerpc64", target_arch = "riscv64", target_arch = "sparc64")))] @@ -81,6 +82,7 @@ s! { target_arch = "aarch64", target_arch = "loongarch64", target_arch = "mips64", + target_arch = "mips64r6", target_arch = "powerpc64", target_arch = "riscv64", target_arch = "sparc64")))] @@ -105,7 +107,7 @@ cfg_if! { } else if #[cfg(any(target_arch = "sparc64"))] { mod sparc64; pub use self::sparc64::*; - } else if #[cfg(any(target_arch = "mips64"))] { + } else if #[cfg(any(target_arch = "mips64", target_arch = "mips64r6"))] { mod mips64; pub use self::mips64::*; } else if #[cfg(any(target_arch = "s390x"))] { diff --git a/src/unix/linux_like/linux/gnu/mod.rs b/src/unix/linux_like/linux/gnu/mod.rs index ba4664bf50e50..3a33df52b1b40 100644 --- a/src/unix/linux_like/linux/gnu/mod.rs +++ b/src/unix/linux_like/linux/gnu/mod.rs @@ -116,13 +116,15 @@ s! { target_arch = "sparc", target_arch = "sparc64", target_arch = "mips", - target_arch = "mips64")))] + target_arch = "mips64", + target_arch = "mips64r6")))] pub c_ispeed: ::speed_t, #[cfg(not(any( target_arch = "sparc", target_arch = "sparc64", target_arch = "mips", - target_arch = "mips64")))] + target_arch = "mips64", + target_arch = "mips64r6")))] pub c_ospeed: ::speed_t, } @@ -954,7 +956,7 @@ pub const KEYCTL_SUPPORTS_DECRYPT: u32 = 0x02; pub const KEYCTL_SUPPORTS_SIGN: u32 = 0x04; pub const KEYCTL_SUPPORTS_VERIFY: u32 = 0x08; cfg_if! { - if #[cfg(not(any(target_arch="mips", target_arch="mips64")))] { + if #[cfg(not(any(target_arch="mips", target_arch="mips64", target_arch = "mips64r6")))] { pub const KEYCTL_MOVE: u32 = 30; pub const KEYCTL_CAPABILITIES: u32 = 31; @@ -1388,6 +1390,7 @@ cfg_if! { target_arch = "aarch64", target_arch = "powerpc64", target_arch = "mips64", + target_arch = "mips64r6", target_arch = "s390x", target_arch = "sparc64", target_arch = "riscv64", diff --git a/src/unix/linux_like/linux/no_align.rs b/src/unix/linux_like/linux/no_align.rs index 6f5f2f7c015cd..3a7a8ace6b9be 100644 --- a/src/unix/linux_like/linux/no_align.rs +++ b/src/unix/linux_like/linux/no_align.rs @@ -5,6 +5,7 @@ macro_rules! expand_align { #[cfg(any(target_arch = "x86_64", target_arch = "powerpc64", target_arch = "mips64", + target_arch = "mips64r6", target_arch = "s390x", target_arch = "sparc64", target_arch = "riscv64", @@ -16,6 +17,7 @@ macro_rules! expand_align { #[cfg(not(any(target_arch = "x86_64", target_arch = "powerpc64", target_arch = "mips64", + target_arch = "mips64r6", target_arch = "s390x", target_arch = "sparc64", target_arch = "riscv64", From 7d8048876c55cdfdfef329771c4ba726dff8b231 Mon Sep 17 00:00:00 2001 From: Henry Chen Date: Sun, 25 Jun 2023 17:03:35 +0800 Subject: [PATCH 09/32] add mips32r6 target_arch detection for linux gnu targets --- build.rs | 2 +- src/unix/linux_like/linux/align.rs | 6 ++++ src/unix/linux_like/linux/arch/mips/mod.rs | 2 +- src/unix/linux_like/linux/arch/mod.rs | 5 ++- src/unix/linux_like/linux/gnu/b32/mod.rs | 38 +++++++++++----------- src/unix/linux_like/linux/gnu/mod.rs | 8 ++++- src/unix/linux_like/linux/no_align.rs | 6 ++++ 7 files changed, 44 insertions(+), 23 deletions(-) diff --git a/build.rs b/build.rs index 97aa33918c198..4d67888be835a 100644 --- a/build.rs +++ b/build.rs @@ -35,7 +35,7 @@ const ALLOWED_CFGS: &'static [&'static str] = &[ const CHECK_CFG_EXTRA: &'static [(&'static str, &'static [&'static str])] = &[ ("target_os", &["switch", "aix", "ohos"]), ("target_env", &["illumos", "wasi", "aix", "ohos"]), - ("target_arch", &["loongarch64", "mips64r6"]), + ("target_arch", &["loongarch64", "mips32r6", "mips64r6"]), ]; fn main() { diff --git a/src/unix/linux_like/linux/align.rs b/src/unix/linux_like/linux/align.rs index fc772ccbe270d..fc12a0b73a652 100644 --- a/src/unix/linux_like/linux/align.rs +++ b/src/unix/linux_like/linux/align.rs @@ -85,6 +85,7 @@ macro_rules! expand_align { #[cfg_attr(all(target_pointer_width = "32", any(target_arch = "mips", + target_arch = "mips32r6", target_arch = "arm", target_arch = "hexagon", target_arch = "m68k", @@ -95,6 +96,7 @@ macro_rules! expand_align { repr(align(4)))] #[cfg_attr(any(target_pointer_width = "64", not(any(target_arch = "mips", + target_arch = "mips32r6", target_arch = "arm", target_arch = "hexagon", target_arch = "m68k", @@ -110,6 +112,7 @@ macro_rules! expand_align { #[cfg_attr(all(target_pointer_width = "32", any(target_arch = "mips", + target_arch = "mips32r6", target_arch = "arm", target_arch = "hexagon", target_arch = "m68k", @@ -120,6 +123,7 @@ macro_rules! expand_align { repr(align(4)))] #[cfg_attr(any(target_pointer_width = "64", not(any(target_arch = "mips", + target_arch = "mips32r6", target_arch = "arm", target_arch = "hexagon", target_arch = "m68k", @@ -134,6 +138,7 @@ macro_rules! expand_align { #[cfg_attr(all(target_pointer_width = "32", any(target_arch = "mips", + target_arch = "mips32r6", target_arch = "arm", target_arch = "hexagon", target_arch = "m68k", @@ -144,6 +149,7 @@ macro_rules! expand_align { repr(align(4)))] #[cfg_attr(any(target_pointer_width = "64", not(any(target_arch = "mips", + target_arch = "mips32r6", target_arch = "arm", target_arch = "hexagon", target_arch = "m68k", diff --git a/src/unix/linux_like/linux/arch/mips/mod.rs b/src/unix/linux_like/linux/arch/mips/mod.rs index 51635bcaf6439..975e334de5ffb 100644 --- a/src/unix/linux_like/linux/arch/mips/mod.rs +++ b/src/unix/linux_like/linux/arch/mips/mod.rs @@ -280,7 +280,7 @@ cfg_if! { } cfg_if! { - if #[cfg(target_arch = "mips", + if #[cfg(any(target_arch = "mips", target_arch = "mips32r6"), any(target_env = "gnu", target_env = "uclibc"))] { pub const RLIM_INFINITY: ::rlim_t = 0x7fffffff; diff --git a/src/unix/linux_like/linux/arch/mod.rs b/src/unix/linux_like/linux/arch/mod.rs index 017bede95131b..7f6ddc5a764ff 100644 --- a/src/unix/linux_like/linux/arch/mod.rs +++ b/src/unix/linux_like/linux/arch/mod.rs @@ -1,5 +1,8 @@ cfg_if! { - if #[cfg(any(target_arch = "mips", target_arch = "mips64", target_arch = "mips64r6"))] { + if #[cfg(any(target_arch = "mips", + target_arch = "mips32r6", + target_arch = "mips64", + target_arch = "mips64r6"))] { mod mips; pub use self::mips::*; } else if #[cfg(any(target_arch = "powerpc", target_arch = "powerpc64"))] { diff --git a/src/unix/linux_like/linux/gnu/b32/mod.rs b/src/unix/linux_like/linux/gnu/b32/mod.rs index 66d1d016f7154..2df7a47b9d10a 100644 --- a/src/unix/linux_like/linux/gnu/b32/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/mod.rs @@ -43,34 +43,34 @@ cfg_if! { s! { pub struct stat { - #[cfg(not(target_arch = "mips"))] + #[cfg(not(any(target_arch = "mips", target_arch = "mips32r6")))] pub st_dev: ::dev_t, - #[cfg(target_arch = "mips")] + #[cfg(any(target_arch = "mips", target_arch = "mips32r6"))] pub st_dev: ::c_ulong, - #[cfg(not(target_arch = "mips"))] + #[cfg(not(any(target_arch = "mips", target_arch = "mips32r6")))] __pad1: ::c_short, - #[cfg(target_arch = "mips")] + #[cfg(any(target_arch = "mips", target_arch = "mips32r6"))] st_pad1: [::c_long; 3], pub st_ino: ::ino_t, pub st_mode: ::mode_t, pub st_nlink: ::nlink_t, pub st_uid: ::uid_t, pub st_gid: ::gid_t, - #[cfg(not(target_arch = "mips"))] + #[cfg(not(any(target_arch = "mips", target_arch = "mips32r6")))] pub st_rdev: ::dev_t, - #[cfg(target_arch = "mips")] + #[cfg(any(target_arch = "mips", target_arch = "mips32r6"))] pub st_rdev: ::c_ulong, - #[cfg(not(target_arch = "mips"))] + #[cfg(not(any(target_arch = "mips", target_arch = "mips32r6")))] __pad2: ::c_short, - #[cfg(target_arch = "mips")] + #[cfg(any(target_arch = "mips", target_arch = "mips32r6"))] st_pad2: [::c_long; 2], pub st_size: ::off_t, - #[cfg(target_arch = "mips")] + #[cfg(any(target_arch = "mips", target_arch = "mips32r6"))] st_pad3: ::c_long, - #[cfg(not(target_arch = "mips"))] + #[cfg(not(any(target_arch = "mips", target_arch = "mips32r6")))] pub st_blksize: ::blksize_t, - #[cfg(not(target_arch = "mips"))] + #[cfg(not(any(target_arch = "mips", target_arch = "mips32r6")))] pub st_blocks: ::blkcnt_t, pub st_atime: ::time_t, pub st_atime_nsec: ::c_long, @@ -78,15 +78,15 @@ s! { pub st_mtime_nsec: ::c_long, pub st_ctime: ::time_t, pub st_ctime_nsec: ::c_long, - #[cfg(not(target_arch = "mips"))] + #[cfg(not(any(target_arch = "mips", target_arch = "mips32r6")))] __unused4: ::c_long, - #[cfg(not(target_arch = "mips"))] + #[cfg(not(any(target_arch = "mips", target_arch = "mips32r6")))] __unused5: ::c_long, - #[cfg(target_arch = "mips")] + #[cfg(any(target_arch = "mips", target_arch = "mips32r6"))] pub st_blksize: ::blksize_t, - #[cfg(target_arch = "mips")] + #[cfg(any(target_arch = "mips", target_arch = "mips32r6"))] pub st_blocks: ::blkcnt_t, - #[cfg(target_arch = "mips")] + #[cfg(any(target_arch = "mips", target_arch = "mips32r6"))] st_pad5: [::c_long; 14], } @@ -140,12 +140,12 @@ s! { #[cfg(target_arch = "powerpc")] __reserved: ::__syscall_ulong_t, pub sem_otime: ::time_t, - #[cfg(not(any(target_arch = "mips", target_arch = "powerpc")))] + #[cfg(not(any(target_arch = "mips", target_arch = "mips32r6", target_arch = "powerpc")))] __reserved: ::__syscall_ulong_t, #[cfg(target_arch = "powerpc")] __reserved2: ::__syscall_ulong_t, pub sem_ctime: ::time_t, - #[cfg(not(any(target_arch = "mips", target_arch = "powerpc")))] + #[cfg(not(any(target_arch = "mips", target_arch = "mips32r6", target_arch = "powerpc")))] __reserved2: ::__syscall_ulong_t, pub sem_nsems: ::__syscall_ulong_t, __glibc_reserved3: ::__syscall_ulong_t, @@ -337,7 +337,7 @@ cfg_if! { } else if #[cfg(target_arch = "arm")] { mod arm; pub use self::arm::*; - } else if #[cfg(target_arch = "mips")] { + } else if #[cfg(any(target_arch = "mips", target_arch = "mips32r6"))] { mod mips; pub use self::mips::*; } else if #[cfg(target_arch = "m68k")] { diff --git a/src/unix/linux_like/linux/gnu/mod.rs b/src/unix/linux_like/linux/gnu/mod.rs index 3a33df52b1b40..494bad1941dab 100644 --- a/src/unix/linux_like/linux/gnu/mod.rs +++ b/src/unix/linux_like/linux/gnu/mod.rs @@ -116,6 +116,7 @@ s! { target_arch = "sparc", target_arch = "sparc64", target_arch = "mips", + target_arch = "mips32r6", target_arch = "mips64", target_arch = "mips64r6")))] pub c_ispeed: ::speed_t, @@ -123,6 +124,7 @@ s! { target_arch = "sparc", target_arch = "sparc64", target_arch = "mips", + target_arch = "mips32r6", target_arch = "mips64", target_arch = "mips64r6")))] pub c_ospeed: ::speed_t, @@ -956,7 +958,10 @@ pub const KEYCTL_SUPPORTS_DECRYPT: u32 = 0x02; pub const KEYCTL_SUPPORTS_SIGN: u32 = 0x04; pub const KEYCTL_SUPPORTS_VERIFY: u32 = 0x08; cfg_if! { - if #[cfg(not(any(target_arch="mips", target_arch="mips64", target_arch = "mips64r6")))] { + if #[cfg(not(any(target_arch="mips", + target_arch="mips32r6", + target_arch="mips64", + target_arch = "mips64r6")))] { pub const KEYCTL_MOVE: u32 = 30; pub const KEYCTL_CAPABILITIES: u32 = 31; @@ -1381,6 +1386,7 @@ cfg_if! { target_arch = "arm", target_arch = "m68k", target_arch = "mips", + target_arch = "mips32r6", target_arch = "powerpc", target_arch = "sparc", target_arch = "riscv32"))] { diff --git a/src/unix/linux_like/linux/no_align.rs b/src/unix/linux_like/linux/no_align.rs index 3a7a8ace6b9be..3f5d7d6cdef08 100644 --- a/src/unix/linux_like/linux/no_align.rs +++ b/src/unix/linux_like/linux/no_align.rs @@ -70,6 +70,7 @@ macro_rules! expand_align { pub struct pthread_mutex_t { #[cfg(any(target_arch = "mips", + target_arch = "mips32r6", target_arch = "arm", target_arch = "m68k", target_arch = "powerpc", @@ -78,6 +79,7 @@ macro_rules! expand_align { target_pointer_width = "32")))] __align: [::c_long; 0], #[cfg(not(any(target_arch = "mips", + target_arch = "mips32r6", target_arch = "arm", target_arch = "m68k", target_arch = "powerpc", @@ -90,6 +92,7 @@ macro_rules! expand_align { pub struct pthread_rwlock_t { #[cfg(any(target_arch = "mips", + target_arch = "mips32r6", target_arch = "arm", target_arch = "m68k", target_arch = "powerpc", @@ -98,6 +101,7 @@ macro_rules! expand_align { target_pointer_width = "32")))] __align: [::c_long; 0], #[cfg(not(any(target_arch = "mips", + target_arch = "mips32r6", target_arch = "arm", target_arch = "m68k", target_arch = "powerpc", @@ -110,6 +114,7 @@ macro_rules! expand_align { pub struct pthread_barrier_t { #[cfg(any(target_arch = "mips", + target_arch = "mips32r6", target_arch = "arm", target_arch = "m68k", target_arch = "powerpc", @@ -118,6 +123,7 @@ macro_rules! expand_align { target_pointer_width = "32")))] __align: [::c_long; 0], #[cfg(not(any(target_arch = "mips", + target_arch = "mips32r6", target_arch = "arm", target_arch = "m68k", target_arch = "powerpc", From 5f9764f08b5e04c8c322f45dfaf368c4c84432ea Mon Sep 17 00:00:00 2001 From: David Carlier Date: Fri, 7 Jul 2023 15:10:32 +0100 Subject: [PATCH 10/32] android PTRACE_SECCOMP_GET_METADATA flag addition --- libc-test/semver/android.txt | 2 ++ src/unix/linux_like/android/mod.rs | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/libc-test/semver/android.txt b/libc-test/semver/android.txt index 2bbdbf621a72c..651e0c39578e5 100644 --- a/libc-test/semver/android.txt +++ b/libc-test/semver/android.txt @@ -1890,6 +1890,7 @@ PTRACE_PEEKUSER PTRACE_POKEDATA PTRACE_POKETEXT PTRACE_POKEUSER +PTRACE_SECCOMP_GET_METADATA PTRACE_SETOPTIONS PTRACE_SETSIGINFO PTRACE_SINGLESTEP @@ -3502,6 +3503,7 @@ sched_setparam sched_setscheduler sched_yield seccomp_data +seccomp_metadata seekdir select sem_close diff --git a/src/unix/linux_like/android/mod.rs b/src/unix/linux_like/android/mod.rs index c6a686082541c..ecd7e34ada018 100644 --- a/src/unix/linux_like/android/mod.rs +++ b/src/unix/linux_like/android/mod.rs @@ -350,6 +350,11 @@ s! { pub args: [::__u64; 6], } + pub struct seccomp_metadata { + pub filter_off: ::__u64, + pub flags: ::__u64, + } + pub struct ptrace_peeksiginfo_args { pub off: ::__u64, pub flags: ::__u32, @@ -1522,6 +1527,7 @@ pub const PTRACE_GETSIGINFO: ::c_int = 0x4202; pub const PTRACE_SETSIGINFO: ::c_int = 0x4203; pub const PTRACE_GETREGSET: ::c_int = 0x4204; pub const PTRACE_SETREGSET: ::c_int = 0x4205; +pub const PTRACE_SECCOMP_GET_METADATA: ::c_int = 0x420d; pub const PTRACE_EVENT_STOP: ::c_int = 128; From c9643c8768541b18017bbff90b0d6c582e402ed9 Mon Sep 17 00:00:00 2001 From: Yuki Okushi Date: Sat, 8 Jul 2023 11:06:16 +0900 Subject: [PATCH 11/32] Disable FreeBSD 14 CI temporarily Signed-off-by: Yuki Okushi --- .cirrus.yml | 4 +++- ci/build.sh | 14 ++++++++------ ci/install-rust.sh | 3 +++ 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index 24f152846d97f..dcfff67206296 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -29,7 +29,9 @@ task: task: name: nightly x86_64-unknown-freebsd-14 freebsd_instance: - image: freebsd-14-0-current-amd64-v20230330 + # FIXME: FreeBSD 14 CI fails due to pkg installation. + # Use 14 again once a new image is available on Cirrus CI. + image_family: freebsd-13-2 setup_script: - pkg install -y libnghttp2 curl - curl https://sh.rustup.rs -sSf --output rustup.sh diff --git a/ci/build.sh b/ci/build.sh index 2588166e8495b..81d1f6cc2b725 100644 --- a/ci/build.sh +++ b/ci/build.sh @@ -102,12 +102,6 @@ i686-linux-android \ i686-unknown-freebsd \ i686-unknown-linux-gnu \ i686-unknown-linux-musl \ -mips-unknown-linux-gnu \ -mips-unknown-linux-musl \ -mips64-unknown-linux-gnuabi64 \ -mips64el-unknown-linux-gnuabi64 \ -mipsel-unknown-linux-gnu \ -mipsel-unknown-linux-musl \ powerpc-unknown-linux-gnu \ powerpc64-unknown-linux-gnu \ powerpc64le-unknown-linux-gnu \ @@ -118,6 +112,14 @@ x86_64-unknown-linux-musl \ x86_64-unknown-netbsd \ " +# FIXME: builds of MIPS targets are currently broken on nightly. +# mips-unknown-linux-gnu \ +# mips-unknown-linux-musl \ +# mips64-unknown-linux-gnuabi64 \ +# mips64el-unknown-linux-gnuabi64 \ +# mipsel-unknown-linux-gnu \ +# mipsel-unknown-linux-musl \ + RUST_GT_1_13_LINUX_TARGETS="\ arm-unknown-linux-musleabi \ arm-unknown-linux-musleabihf \ diff --git a/ci/install-rust.sh b/ci/install-rust.sh index 5b50c624cbd66..3ce81e6299932 100644 --- a/ci/install-rust.sh +++ b/ci/install-rust.sh @@ -12,6 +12,9 @@ else # https://github.com/rust-lang/rust/issues/103673 contains related information. case "$TARGET" in *android*) toolchain=nightly-2022-10-09;; + # FIXME: Unpin once mips' components are available on nightly. + # https://rust-lang.github.io/rustup-components-history/mips-unknown-linux-gnu.html + *mips*) toolchain=nightly-2023-07-04;; *) toolchain=nightly;; esac fi From cdc0fcabf1af4b79ddd2cafc2094c1ae8cd99a5e Mon Sep 17 00:00:00 2001 From: Taiki Endo Date: Sun, 9 Jul 2023 15:07:16 +0900 Subject: [PATCH 12/32] linux/musl: Fix multiple definitions of MAP_HUGETLB --- src/unix/linux_like/linux/musl/b32/powerpc.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/unix/linux_like/linux/musl/b32/powerpc.rs b/src/unix/linux_like/linux/musl/b32/powerpc.rs index b1669ade7f600..ec4f2047e46b2 100644 --- a/src/unix/linux_like/linux/musl/b32/powerpc.rs +++ b/src/unix/linux_like/linux/musl/b32/powerpc.rs @@ -380,8 +380,6 @@ pub const SIG_UNBLOCK: ::c_int = 0x01; pub const EXTPROC: ::tcflag_t = 0x10000000; -pub const MAP_HUGETLB: ::c_int = 0x040000; - pub const F_GETLK: ::c_int = 12; pub const F_GETOWN: ::c_int = 9; pub const F_SETLK: ::c_int = 13; From a3ba5b3a1aab6324b956b7a5ba0f9625832593e8 Mon Sep 17 00:00:00 2001 From: David CARLIER Date: Sun, 9 Jul 2023 13:27:18 +0100 Subject: [PATCH 13/32] darwin adding bunch of macOs Ventura new calls --- libc-test/build.rs | 3 +++ libc-test/semver/apple.txt | 3 +++ src/unix/bsd/apple/mod.rs | 9 +++++++++ 3 files changed, 15 insertions(+) diff --git a/libc-test/build.rs b/libc-test/build.rs index ac0f996fc4e92..f518f2189489e 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -349,6 +349,9 @@ fn test_apple(target: &str) { // FIXME: ABI has been changed on recent macOSes. "os_unfair_lock_assert_owner" | "os_unfair_lock_assert_not_owner" => true, + // FIXME: Once the SDK get updated to Ventura's level + "freadlink" | "mknodat" | "mkfifoat" => true, + _ => false, } }); diff --git a/libc-test/semver/apple.txt b/libc-test/semver/apple.txt index 244fe7d780c02..7c4356432f5a7 100644 --- a/libc-test/semver/apple.txt +++ b/libc-test/semver/apple.txt @@ -1871,6 +1871,7 @@ flistxattr fmemopen fmount forkpty +freadlink freeifaddrs freelocale fremovexattr @@ -1994,6 +1995,8 @@ memset_s mem_entry_name_port_t mincore mkdirat +mkfifoat +mknodat mkstemps mount msghdr diff --git a/src/unix/bsd/apple/mod.rs b/src/unix/bsd/apple/mod.rs index 3348a7a8af457..95aa96195a285 100644 --- a/src/unix/bsd/apple/mod.rs +++ b/src/unix/bsd/apple/mod.rs @@ -5905,6 +5905,15 @@ extern "C" { pub fn dirname(path: *mut ::c_char) -> *mut ::c_char; pub fn basename(path: *mut ::c_char) -> *mut ::c_char; + + pub fn mkfifoat(dirfd: ::c_int, pathname: *const ::c_char, mode: ::mode_t) -> ::c_int; + pub fn mknodat( + dirfd: ::c_int, + pathname: *const ::c_char, + mode: ::mode_t, + dev: dev_t, + ) -> ::c_int; + pub fn freadlink(fd: ::c_int, buf: *mut ::c_char, size: ::size_t) -> ::c_int; } pub unsafe fn mach_task_self() -> ::mach_port_t { From 0d3f114f7c43beba7b04b083bca4c5cc0e3dc870 Mon Sep 17 00:00:00 2001 From: Yuki Okushi Date: Tue, 11 Jul 2023 04:19:28 +0900 Subject: [PATCH 14/32] Fix Pages deployment Signed-off-by: Yuki Okushi --- .github/workflows/docs.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 29de18db19132..ff722bc96e748 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -25,11 +25,13 @@ jobs: - name: Generate documentation run: LIBC_CI=1 sh ci/dox.sh - name: Setup Pages - uses: actions/configure-pages@v2 + uses: actions/configure-pages@v3 + - name: Fix permissions + run: rm -f ./target/doc/.lock - name: Upload artifact - uses: actions/upload-pages-artifact@v1 + uses: actions/upload-pages-artifact@v2 with: path: 'target/doc' - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v1 + uses: actions/deploy-pages@v2 From ecff4167bb2364e1ee9f2dec7d1985f8ed207d60 Mon Sep 17 00:00:00 2001 From: Henry Chen Date: Tue, 11 Jul 2023 10:16:14 +0800 Subject: [PATCH 15/32] style fix for in-macro code Since rustfmt ignores it --- src/unix/linux_like/linux/gnu/mod.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/unix/linux_like/linux/gnu/mod.rs b/src/unix/linux_like/linux/gnu/mod.rs index 494bad1941dab..1783059b56901 100644 --- a/src/unix/linux_like/linux/gnu/mod.rs +++ b/src/unix/linux_like/linux/gnu/mod.rs @@ -958,9 +958,9 @@ pub const KEYCTL_SUPPORTS_DECRYPT: u32 = 0x02; pub const KEYCTL_SUPPORTS_SIGN: u32 = 0x04; pub const KEYCTL_SUPPORTS_VERIFY: u32 = 0x08; cfg_if! { - if #[cfg(not(any(target_arch="mips", - target_arch="mips32r6", - target_arch="mips64", + if #[cfg(not(any(target_arch = "mips", + target_arch = "mips32r6", + target_arch = "mips64", target_arch = "mips64r6")))] { pub const KEYCTL_MOVE: u32 = 30; pub const KEYCTL_CAPABILITIES: u32 = 31; From 94cfcd2d50b301f1549cf4d426eb0abe6d34eac2 Mon Sep 17 00:00:00 2001 From: gennyble Date: Fri, 30 Jun 2023 13:41:49 -0500 Subject: [PATCH 16/32] add sol_tls and tls_get_record_type definitions --- libc-test/build.rs | 1 + libc-test/semver/linux.txt | 2 ++ src/unix/linux_like/linux/mod.rs | 5 +++++ 3 files changed, 8 insertions(+) diff --git a/libc-test/build.rs b/libc-test/build.rs index b1d2b9bc2b2e1..276efb481486c 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -3346,6 +3346,7 @@ fn test_linux(target: &str) { "linux/seccomp.h", "linux/sock_diag.h", "linux/sockios.h", + "linux/tls.h", "linux/uinput.h", "linux/vm_sockets.h", "linux/wait.h", diff --git a/libc-test/semver/linux.txt b/libc-test/semver/linux.txt index 103b91573e286..e818d2dce675e 100644 --- a/libc-test/semver/linux.txt +++ b/libc-test/semver/linux.txt @@ -2461,6 +2461,7 @@ SOL_NETBEUI SOL_NETLINK SOL_TCP SOL_TIPC +SOL_TLS SOL_UDP SOL_X25 SOMAXCONN @@ -2853,6 +2854,7 @@ TIOCSCTTY TIOCSPGRP TIOCSSOFTCAR TIOCSTI +TLS_GET_RECORD_TYPE TUN_READQ_SIZE TUN_TAP_DEV TUN_TUN_DEV diff --git a/src/unix/linux_like/linux/mod.rs b/src/unix/linux_like/linux/mod.rs index e52b3d3a85eae..4f9ae623a843a 100644 --- a/src/unix/linux_like/linux/mod.rs +++ b/src/unix/linux_like/linux/mod.rs @@ -3182,6 +3182,11 @@ pub const HWTSTAMP_FILTER_PTP_V2_SYNC: ::c_uint = 13; pub const HWTSTAMP_FILTER_PTP_V2_DELAY_REQ: ::c_uint = 14; pub const HWTSTAMP_FILTER_NTP_ALL: ::c_uint = 15; +// linux/tls.h +pub const TLS_GET_RECORD_TYPE: ::c_int = 2; + +pub const SOL_TLS: ::c_int = 282; + // linux/if_alg.h pub const ALG_SET_KEY: ::c_int = 1; pub const ALG_SET_IV: ::c_int = 2; From 43152fbda3431764feb08d450457af975bdf6e5e Mon Sep 17 00:00:00 2001 From: Mek101 Date: Fri, 14 Jul 2023 18:39:15 +0200 Subject: [PATCH 17/32] linux/gnu: add glob extension constants --- libc-test/semver/linux-gnu.txt | 7 +++++++ src/unix/linux_like/linux/gnu/mod.rs | 10 ++++++++++ 2 files changed, 17 insertions(+) diff --git a/libc-test/semver/linux-gnu.txt b/libc-test/semver/linux-gnu.txt index 02d29313cb060..07f6365826275 100644 --- a/libc-test/semver/linux-gnu.txt +++ b/libc-test/semver/linux-gnu.txt @@ -51,6 +51,13 @@ FUTEXFS_SUPER_MAGIC GENL_ID_PMCRAID GENL_ID_VFS_DQUOT GENL_UNS_ADMIN_PERM +GLOB_ALTDIRFUNC +GLOB_BRACE +GLOB_NOMAGIC +GLOB_ONLYDIR +GLOB_PERIOD +GLOB_TILDE +GLOB_TILDE_CHECK HOSTFS_SUPER_MAGIC HPFS_SUPER_MAGIC HUGETLBFS_MAGIC diff --git a/src/unix/linux_like/linux/gnu/mod.rs b/src/unix/linux_like/linux/gnu/mod.rs index 1783059b56901..053949f6b245e 100644 --- a/src/unix/linux_like/linux/gnu/mod.rs +++ b/src/unix/linux_like/linux/gnu/mod.rs @@ -1083,6 +1083,16 @@ pub const TIME_ERROR: ::c_int = 5; pub const TIME_BAD: ::c_int = TIME_ERROR; pub const MAXTC: ::c_long = 6; +// Portable GLOB_* flags are defined at the `linux_like` level. +// The following are GNU extensions. +pub const GLOB_PERIOD: ::c_int = 1 << 7; +pub const GLOB_ALTDIRFUNC: ::c_int = 1 << 9; +pub const GLOB_BRACE: ::c_int = 1 << 10; +pub const GLOB_NOMAGIC: ::c_int = 1 << 11; +pub const GLOB_TILDE: ::c_int = 1 << 12; +pub const GLOB_ONLYDIR: ::c_int = 1 << 13; +pub const GLOB_TILDE_CHECK: ::c_int = 1 << 14; + cfg_if! { if #[cfg(any( target_arch = "arm", From a38f14006b7f2e795d4792f5966be9984338c969 Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Thu, 27 Jul 2023 18:03:12 +0200 Subject: [PATCH 18/32] Add missing targets for documentation and remove duplicates for list --- Cargo.toml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index ab81d39c436f1..3e5ca175cd078 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,6 +19,7 @@ Raw FFI bindings to platform libraries like libc. features = ["const-extern-fn", "extra_traits"] default-target = "x86_64-unknown-linux-gnu" targets = [ + "aarch64-apple-ios", "aarch64-linux-android", "aarch64-pc-windows-msvc", "aarch64-unknown-freebsd", @@ -102,12 +103,12 @@ targets = [ "wasm32-unknown-emscripten", "wasm32-unknown-unknown", "wasm32-wasi", + "x86_64-apple-darwin", + "x86_64-apple-ios", "x86_64-fortanix-unknown-sgx", "x86_64-linux-android", "x86_64-pc-solaris", "x86_64-pc-windows-gnu", - "x86_64-pc-windows-gnu", - "x86_64-pc-windows-msvc", "x86_64-pc-windows-msvc", "x86_64-unknown-dragonfly", "x86_64-unknown-freebsd", From 283ef4b2407a09bf54497d8b75cb1606ed4784ac Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Wed, 2 Aug 2023 01:07:45 -0700 Subject: [PATCH 19/32] Fix size/align of `ucontext_t` on aarch64-apple-darwin This commit effectively reverts #2817. Currently `ucontext_t` has both the wrong size and the wrong alignment for aarch64-apple-darwin which causes problems for users referencing the structure [1]. The issue linked from #2817 claimed that it fixed #2812 but that's still an issue where FFI warnings are still emitted for usage of `ucontext_t` due to its transitive usage of `u128`. I'm not sure how to fix #2812 myself, but given that #2817 doesn't appear to solve its original intent and additionally the size/align are currently wrong this commit reverts in the meantime. [1]: https://github.com/bytecodealliance/wasmtime/issues/6785#issuecomment-1661292561 --- src/unix/bsd/apple/b64/aarch64/align.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/unix/bsd/apple/b64/aarch64/align.rs b/src/unix/bsd/apple/b64/aarch64/align.rs index 29db97ec7c473..131e15b69ad94 100644 --- a/src/unix/bsd/apple/b64/aarch64/align.rs +++ b/src/unix/bsd/apple/b64/aarch64/align.rs @@ -15,7 +15,6 @@ s! { pub uc_link: *mut ::ucontext_t, pub uc_mcsize: usize, pub uc_mcontext: mcontext_t, - __mcontext_data: __darwin_mcontext64, } pub struct __darwin_mcontext64 { From 6652fe1ec8c07ee066c8eb9cd4d4ec85dce426fc Mon Sep 17 00:00:00 2001 From: Henry Chen Date: Mon, 7 Aug 2023 13:27:08 +0800 Subject: [PATCH 20/32] libc-test: remove useless clone in build.rs --- libc-test/build.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libc-test/build.rs b/libc-test/build.rs index 276efb481486c..bfe1ed16f3951 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -642,7 +642,7 @@ fn test_windows(target: &str) { // Windows uppercase structs don't have `struct` in front: t if is_struct => { - if ty.clone().chars().next().unwrap().is_uppercase() { + if ty.chars().next().unwrap().is_uppercase() { t.to_string() } else if t == "stat" { "struct __stat64".to_string() From d277a88f28b5a9ab9534155e7fb4ed0a554b9132 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Wed, 9 Aug 2023 11:09:28 -0700 Subject: [PATCH 21/32] Define `SO_PROTOCOL` and `SO_DOMAIN` on OpenBSD. This follows the definitions [here]. [here]: https://github.com/openbsd/src/blob/c5ac8393b86d7549b2b878fd46deeb0e8ee06ae0/sys/sys/socket.h#L116 --- libc-test/semver/openbsd.txt | 2 ++ src/unix/bsd/netbsdlike/openbsd/mod.rs | 2 ++ 2 files changed, 4 insertions(+) diff --git a/libc-test/semver/openbsd.txt b/libc-test/semver/openbsd.txt index afbf8eb572869..ea9cda0659ce4 100644 --- a/libc-test/semver/openbsd.txt +++ b/libc-test/semver/openbsd.txt @@ -778,8 +778,10 @@ SOCK_RAW SOCK_RDM SOMAXCONN SO_BINDANY +SO_DOMAIN SO_NETPROC SO_PEERCRED +SO_PROTOCOL SO_RTABLE SO_SPLICE SO_TIMESTAMP diff --git a/src/unix/bsd/netbsdlike/openbsd/mod.rs b/src/unix/bsd/netbsdlike/openbsd/mod.rs index 7fe81b3aa6bfb..5455bd344b657 100644 --- a/src/unix/bsd/netbsdlike/openbsd/mod.rs +++ b/src/unix/bsd/netbsdlike/openbsd/mod.rs @@ -999,6 +999,8 @@ pub const SO_NETPROC: ::c_int = 0x1020; pub const SO_RTABLE: ::c_int = 0x1021; pub const SO_PEERCRED: ::c_int = 0x1022; pub const SO_SPLICE: ::c_int = 0x1023; +pub const SO_DOMAIN: ::c_int = 0x1024; +pub const SO_PROTOCOL: ::c_int = 0x1025; // sys/netinet/in.h // Protocols (RFC 1700) From 4e664cc62c9a4ec4812c2415e4bfb70ca73098ac Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Wed, 9 Aug 2023 11:49:54 -0700 Subject: [PATCH 22/32] Define `SO_DOMAIN` and `SO_PROTOTYPE` on solarish platforms. --- src/unix/solarish/mod.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/unix/solarish/mod.rs b/src/unix/solarish/mod.rs index 400de8a26471c..a3fa56a65a67e 100644 --- a/src/unix/solarish/mod.rs +++ b/src/unix/solarish/mod.rs @@ -1825,6 +1825,8 @@ pub const SO_SNDTIMEO: ::c_int = 0x1005; pub const SO_RCVTIMEO: ::c_int = 0x1006; pub const SO_ERROR: ::c_int = 0x1007; pub const SO_TYPE: ::c_int = 0x1008; +pub const SO_PROTOTYPE: ::c_int = 0x1009; +pub const SO_DOMAIN: ::c_int = 0x100c; pub const SO_TIMESTAMP: ::c_int = 0x1013; pub const SCM_RIGHTS: ::c_int = 0x1010; From ba16d81a10a20ff52255f986916cd94319a5669b Mon Sep 17 00:00:00 2001 From: Henry Chen Date: Mon, 14 Aug 2023 16:09:44 +0800 Subject: [PATCH 23/32] aarch64-linux-gnu: avoid double exporting of user_fpsimd_struct --- src/unix/linux_like/linux/gnu/b64/aarch64/align.rs | 7 ------- src/unix/linux_like/linux/gnu/b64/aarch64/fallback.rs | 8 ++++++++ src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs | 3 +++ 3 files changed, 11 insertions(+), 7 deletions(-) create mode 100644 src/unix/linux_like/linux/gnu/b64/aarch64/fallback.rs diff --git a/src/unix/linux_like/linux/gnu/b64/aarch64/align.rs b/src/unix/linux_like/linux/gnu/b64/aarch64/align.rs index 06173be663b9b..a035773c716fe 100644 --- a/src/unix/linux_like/linux/gnu/b64/aarch64/align.rs +++ b/src/unix/linux_like/linux/gnu/b64/aarch64/align.rs @@ -27,13 +27,6 @@ s! { __reserved: [[u64; 32]; 16], } - #[repr(align(16))] - pub struct user_fpsimd_struct { - pub vregs: [[u64; 2]; 32], - pub fpsr: ::c_uint, - pub fpcr: ::c_uint, - } - #[repr(align(8))] pub struct clone_args { pub flags: ::c_ulonglong, diff --git a/src/unix/linux_like/linux/gnu/b64/aarch64/fallback.rs b/src/unix/linux_like/linux/gnu/b64/aarch64/fallback.rs new file mode 100644 index 0000000000000..398fbb53755c8 --- /dev/null +++ b/src/unix/linux_like/linux/gnu/b64/aarch64/fallback.rs @@ -0,0 +1,8 @@ +s! { + #[repr(align(16))] + pub struct user_fpsimd_struct { + pub vregs: [[u64; 2]; 32], + pub fpsr: ::c_uint, + pub fpcr: ::c_uint, + } +} diff --git a/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs b/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs index f46ea941b97a6..76906aa97dfaa 100644 --- a/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs +++ b/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs @@ -934,5 +934,8 @@ cfg_if! { if #[cfg(libc_int128)] { mod int128; pub use self::int128::*; + } else { + mod fallback; + pub use self::fallback::*; } } From 548eaf550a230c56a62c46ffaf5d0c4e1e10627e Mon Sep 17 00:00:00 2001 From: Henry Chen Date: Tue, 15 Aug 2023 18:17:13 +0800 Subject: [PATCH 24/32] aarch64-linux-gnu: fix fallback fpsimd_struct build conditions --- src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs b/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs index 76906aa97dfaa..fee3d1517f87a 100644 --- a/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs +++ b/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs @@ -928,13 +928,15 @@ cfg_if! { mod align; pub use self::align::*; } + + } cfg_if! { if #[cfg(libc_int128)] { mod int128; pub use self::int128::*; - } else { + } else if #[cfg(libc_align)] { mod fallback; pub use self::fallback::*; } From 176160659ae7c9c09c5234df3bb237ef21b25061 Mon Sep 17 00:00:00 2001 From: uniboi Date: Tue, 15 Aug 2023 17:28:28 +0200 Subject: [PATCH 25/32] add _msize for windows targets --- src/windows/mod.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/windows/mod.rs b/src/windows/mod.rs index 26bff7f7a6177..196f1f2e4b743 100644 --- a/src/windows/mod.rs +++ b/src/windows/mod.rs @@ -345,6 +345,7 @@ extern "C" { pub fn strtoull(s: *const c_char, endp: *mut *mut c_char, base: c_int) -> c_ulonglong; pub fn calloc(nobj: size_t, size: size_t) -> *mut c_void; pub fn malloc(size: size_t) -> *mut c_void; + pub fn _msize(p: *mut c_void) -> size_t; pub fn realloc(p: *mut c_void, size: size_t) -> *mut c_void; pub fn free(p: *mut c_void); pub fn abort() -> !; From c0eb83eb2c0a073954c86448e6e0e374b50c622a Mon Sep 17 00:00:00 2001 From: uniboi Date: Tue, 15 Aug 2023 17:38:01 +0200 Subject: [PATCH 26/32] include _msize in windows tests --- libc-test/semver/windows.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/libc-test/semver/windows.txt b/libc-test/semver/windows.txt index 70ff4df20ff94..fa3fb8efecd38 100644 --- a/libc-test/semver/windows.txt +++ b/libc-test/semver/windows.txt @@ -247,6 +247,7 @@ localtime_s lseek lseek64 malloc +_msize memchr memcmp memcpy From 3d77fc6881986dd698a99040d5713f8fba259dcd Mon Sep 17 00:00:00 2001 From: Dirreke Date: Wed, 16 Aug 2023 01:54:31 +0800 Subject: [PATCH 27/32] add initial support for csky-unknown-linux-gnuabiv2 --- build.rs | 5 +- src/unix/linux_like/linux/align.rs | 5 + src/unix/linux_like/linux/arch/generic/mod.rs | 2 + .../linux_like/linux/gnu/b32/csky/align.rs | 7 + src/unix/linux_like/linux/gnu/b32/csky/mod.rs | 745 ++++++++++++++++++ src/unix/linux_like/linux/gnu/b32/mod.rs | 3 + src/unix/linux_like/linux/gnu/mod.rs | 1 + src/unix/linux_like/linux/no_align.rs | 6 + 8 files changed, 773 insertions(+), 1 deletion(-) create mode 100644 src/unix/linux_like/linux/gnu/b32/csky/align.rs create mode 100644 src/unix/linux_like/linux/gnu/b32/csky/mod.rs diff --git a/build.rs b/build.rs index 4d67888be835a..787b8b86a236d 100644 --- a/build.rs +++ b/build.rs @@ -35,7 +35,10 @@ const ALLOWED_CFGS: &'static [&'static str] = &[ const CHECK_CFG_EXTRA: &'static [(&'static str, &'static [&'static str])] = &[ ("target_os", &["switch", "aix", "ohos"]), ("target_env", &["illumos", "wasi", "aix", "ohos"]), - ("target_arch", &["loongarch64", "mips32r6", "mips64r6"]), + ( + "target_arch", + &["loongarch64", "mips32r6", "mips64r6", "csky"], + ), ]; fn main() { diff --git a/src/unix/linux_like/linux/align.rs b/src/unix/linux_like/linux/align.rs index fc12a0b73a652..1036e23dc8f09 100644 --- a/src/unix/linux_like/linux/align.rs +++ b/src/unix/linux_like/linux/align.rs @@ -89,6 +89,7 @@ macro_rules! expand_align { target_arch = "arm", target_arch = "hexagon", target_arch = "m68k", + target_arch = "csky", target_arch = "powerpc", target_arch = "sparc", target_arch = "x86_64", @@ -100,6 +101,7 @@ macro_rules! expand_align { target_arch = "arm", target_arch = "hexagon", target_arch = "m68k", + target_arch = "csky", target_arch = "powerpc", target_arch = "sparc", target_arch = "x86_64", @@ -116,6 +118,7 @@ macro_rules! expand_align { target_arch = "arm", target_arch = "hexagon", target_arch = "m68k", + target_arch = "csky", target_arch = "powerpc", target_arch = "sparc", target_arch = "x86_64", @@ -142,6 +145,7 @@ macro_rules! expand_align { target_arch = "arm", target_arch = "hexagon", target_arch = "m68k", + target_arch = "csky", target_arch = "powerpc", target_arch = "sparc", target_arch = "x86_64", @@ -153,6 +157,7 @@ macro_rules! expand_align { target_arch = "arm", target_arch = "hexagon", target_arch = "m68k", + target_arch = "csky", target_arch = "powerpc", target_arch = "sparc", target_arch = "x86_64", diff --git a/src/unix/linux_like/linux/arch/generic/mod.rs b/src/unix/linux_like/linux/arch/generic/mod.rs index 7bc94c6f05bea..19d5e7b3938c1 100644 --- a/src/unix/linux_like/linux/arch/generic/mod.rs +++ b/src/unix/linux_like/linux/arch/generic/mod.rs @@ -95,6 +95,7 @@ cfg_if! { if #[cfg(all(any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64", + target_arch = "csky", target_arch = "loongarch64"), not(any(target_env = "musl", target_env = "ohos"))))] { pub const SO_TIMESTAMP_NEW: ::c_int = 63; @@ -115,6 +116,7 @@ cfg_if! { target_arch = "aarch64", target_arch = "riscv64", target_arch = "s390x", + target_arch = "csky", target_arch = "loongarch64"))] { pub const FICLONE: ::c_ulong = 0x40049409; pub const FICLONERANGE: ::c_ulong = 0x4020940D; diff --git a/src/unix/linux_like/linux/gnu/b32/csky/align.rs b/src/unix/linux_like/linux/gnu/b32/csky/align.rs new file mode 100644 index 0000000000000..825546be90a91 --- /dev/null +++ b/src/unix/linux_like/linux/gnu/b32/csky/align.rs @@ -0,0 +1,7 @@ +s_no_extra_traits! { + #[allow(missing_debug_implementations)] + #[repr(align(8))] + pub struct max_align_t { + priv_: [i64; 2] + } +} diff --git a/src/unix/linux_like/linux/gnu/b32/csky/mod.rs b/src/unix/linux_like/linux/gnu/b32/csky/mod.rs new file mode 100644 index 0000000000000..c1234845e9a1f --- /dev/null +++ b/src/unix/linux_like/linux/gnu/b32/csky/mod.rs @@ -0,0 +1,745 @@ +pub type c_char = u8; +pub type wchar_t = u32; + +s! { + pub struct sigaction { + pub sa_sigaction: ::sighandler_t, + pub sa_mask: ::sigset_t, + pub sa_flags: ::c_int, + pub sa_restorer: ::Option, + } + + pub struct statfs { + pub f_type: ::__fsword_t, + pub f_bsize: ::__fsword_t, + pub f_blocks: ::fsblkcnt_t, + pub f_bfree: ::fsblkcnt_t, + pub f_bavail: ::fsblkcnt_t, + + pub f_files: ::fsfilcnt_t, + pub f_ffree: ::fsfilcnt_t, + pub f_fsid: ::fsid_t, + + pub f_namelen: ::__fsword_t, + pub f_frsize: ::__fsword_t, + f_spare: [::__fsword_t; 5], + } + + pub struct flock { + pub l_type: ::c_short, + pub l_whence: ::c_short, + pub l_start: ::off_t, + pub l_len: ::off_t, + pub l_pid: ::pid_t, + } + + pub struct flock64 { + pub l_type: ::c_short, + pub l_whence: ::c_short, + pub l_start: ::off64_t, + pub l_len: ::off64_t, + pub l_pid: ::pid_t, + } + + pub struct ipc_perm { + pub __key: ::key_t, + pub uid: ::uid_t, + pub gid: ::gid_t, + pub cuid: ::uid_t, + pub cgid: ::gid_t, + pub mode: ::c_ushort, + __pad1: ::c_ushort, + pub __seq: ::c_ushort, + __pad2: ::c_ushort, + __unused1: ::c_ulong, + __unused2: ::c_ulong + } + + pub struct stat64 { + pub st_dev: ::dev_t, + __pad1: ::c_uint, + __st_ino: ::ino_t, + pub st_mode: ::mode_t, + pub st_nlink: ::nlink_t, + pub st_uid: ::uid_t, + pub st_gid: ::gid_t, + pub st_rdev: ::dev_t, + __pad2: ::c_uint, + pub st_size: ::off64_t, + pub st_blksize: ::blksize_t, + pub st_blocks: ::blkcnt64_t, + pub st_atime: ::time_t, + pub st_atime_nsec: ::c_long, + pub st_mtime: ::time_t, + pub st_mtime_nsec: ::c_long, + pub st_ctime: ::time_t, + pub st_ctime_nsec: ::c_long, + pub st_ino: ::ino64_t, + } + + pub struct statfs64 { + pub f_type: ::__fsword_t, + pub f_bsize: ::__fsword_t, + pub f_blocks: u64, + pub f_bfree: u64, + pub f_bavail: u64, + pub f_files: u64, + pub f_ffree: u64, + pub f_fsid: ::fsid_t, + pub f_namelen: ::__fsword_t, + pub f_frsize: ::__fsword_t, + pub f_flags: ::__fsword_t, + pub f_spare: [::__fsword_t; 4], + } + + pub struct statvfs64 { + pub f_bsize: ::c_ulong, + pub f_frsize: ::c_ulong, + pub f_blocks: u64, + pub f_bfree: u64, + pub f_bavail: u64, + pub f_files: u64, + pub f_ffree: u64, + pub f_favail: u64, + pub f_fsid: ::c_ulong, + __f_unused: ::c_int, + pub f_flag: ::c_ulong, + pub f_namemax: ::c_ulong, + __f_spare: [::c_int; 6], + } + + pub struct shmid_ds { + pub shm_perm: ::ipc_perm, + pub shm_segsz: ::size_t, + pub shm_atime: ::time_t, + __unused1: ::c_ulong, + pub shm_dtime: ::time_t, + __unused2: ::c_ulong, + pub shm_ctime: ::time_t, + __unused3: ::c_ulong, + pub shm_cpid: ::pid_t, + pub shm_lpid: ::pid_t, + pub shm_nattch: ::shmatt_t, + __unused4: ::c_ulong, + __unused5: ::c_ulong + } + + pub struct msqid_ds { + pub msg_perm: ::ipc_perm, + pub msg_stime: ::time_t, + __glibc_reserved1: ::c_ulong, + pub msg_rtime: ::time_t, + __glibc_reserved2: ::c_ulong, + pub msg_ctime: ::time_t, + __glibc_reserved3: ::c_ulong, + __msg_cbytes: ::c_ulong, + pub msg_qnum: ::msgqnum_t, + pub msg_qbytes: ::msglen_t, + pub msg_lspid: ::pid_t, + pub msg_lrpid: ::pid_t, + __glibc_reserved4: ::c_ulong, + __glibc_reserved5: ::c_ulong, + } + + pub struct siginfo_t { + pub si_signo: ::c_int, + pub si_errno: ::c_int, + pub si_code: ::c_int, + #[doc(hidden)] + #[deprecated( + since="0.2.54", + note="Please leave a comment on \ + https://github.com/rust-lang/libc/pull/1316 if you're using \ + this field" + )] + pub _pad: [::c_int; 29], + _align: [usize; 0], + } + + pub struct stack_t { + pub ss_sp: *mut ::c_void, + pub ss_flags: ::c_int, + pub ss_size: ::size_t + } +} + +pub const VEOF: usize = 4; +pub const RTLD_DEEPBIND: ::c_int = 0x8; +pub const RTLD_GLOBAL: ::c_int = 0x100; +pub const RTLD_NOLOAD: ::c_int = 0x4; +pub const O_DIRECT: ::c_int = 0x4000; +pub const O_DIRECTORY: ::c_int = 0x10000; +pub const O_NOFOLLOW: ::c_int = 0x20000; +pub const O_LARGEFILE: ::c_int = 0o100000; +pub const O_APPEND: ::c_int = 1024; +pub const O_CREAT: ::c_int = 64; +pub const O_EXCL: ::c_int = 128; +pub const O_NOCTTY: ::c_int = 256; +pub const O_NONBLOCK: ::c_int = 2048; +pub const O_SYNC: ::c_int = 1052672; +pub const O_RSYNC: ::c_int = 1052672; +pub const O_DSYNC: ::c_int = 4096; +pub const O_FSYNC: ::c_int = 0x101000; +pub const O_ASYNC: ::c_int = 0x2000; +pub const O_NDELAY: ::c_int = 0x800; + +pub const MADV_SOFT_OFFLINE: ::c_int = 101; +pub const MAP_LOCKED: ::c_int = 0x02000; +pub const MAP_NORESERVE: ::c_int = 0x04000; +pub const MAP_ANON: ::c_int = 0x0020; +pub const MAP_ANONYMOUS: ::c_int = 0x0020; +pub const MAP_DENYWRITE: ::c_int = 0x0800; +pub const MAP_EXECUTABLE: ::c_int = 0x01000; +pub const MAP_POPULATE: ::c_int = 0x08000; +pub const MAP_NONBLOCK: ::c_int = 0x010000; +pub const MAP_STACK: ::c_int = 0x020000; +pub const MAP_HUGETLB: ::c_int = 0x040000; +pub const MAP_GROWSDOWN: ::c_int = 0x0100; +pub const MAP_SYNC: ::c_int = 0x080000; + +pub const EDEADLOCK: ::c_int = 35; +pub const EUCLEAN: ::c_int = 117; +pub const ENOTNAM: ::c_int = 118; +pub const ENAVAIL: ::c_int = 119; +pub const EISNAM: ::c_int = 120; +pub const EREMOTEIO: ::c_int = 121; +pub const EDEADLK: ::c_int = 35; +pub const ENAMETOOLONG: ::c_int = 36; +pub const ENOLCK: ::c_int = 37; +pub const ENOSYS: ::c_int = 38; +pub const ENOTEMPTY: ::c_int = 39; +pub const ELOOP: ::c_int = 40; +pub const ENOMSG: ::c_int = 42; +pub const EIDRM: ::c_int = 43; +pub const ECHRNG: ::c_int = 44; +pub const EL2NSYNC: ::c_int = 45; +pub const EL3HLT: ::c_int = 46; +pub const EL3RST: ::c_int = 47; +pub const ELNRNG: ::c_int = 48; +pub const EUNATCH: ::c_int = 49; +pub const ENOCSI: ::c_int = 50; +pub const EL2HLT: ::c_int = 51; +pub const EBADE: ::c_int = 52; +pub const EBADR: ::c_int = 53; +pub const EXFULL: ::c_int = 54; +pub const ENOANO: ::c_int = 55; +pub const EBADRQC: ::c_int = 56; +pub const EBADSLT: ::c_int = 57; +pub const EMULTIHOP: ::c_int = 72; +pub const EOVERFLOW: ::c_int = 75; +pub const ENOTUNIQ: ::c_int = 76; +pub const EBADFD: ::c_int = 77; +pub const EBADMSG: ::c_int = 74; +pub const EREMCHG: ::c_int = 78; +pub const ELIBACC: ::c_int = 79; +pub const ELIBBAD: ::c_int = 80; +pub const ELIBSCN: ::c_int = 81; +pub const ELIBMAX: ::c_int = 82; +pub const ELIBEXEC: ::c_int = 83; +pub const EILSEQ: ::c_int = 84; +pub const ERESTART: ::c_int = 85; +pub const ESTRPIPE: ::c_int = 86; +pub const EUSERS: ::c_int = 87; +pub const ENOTSOCK: ::c_int = 88; +pub const EDESTADDRREQ: ::c_int = 89; +pub const EMSGSIZE: ::c_int = 90; +pub const EPROTOTYPE: ::c_int = 91; +pub const ENOPROTOOPT: ::c_int = 92; +pub const EPROTONOSUPPORT: ::c_int = 93; +pub const ESOCKTNOSUPPORT: ::c_int = 94; +pub const EOPNOTSUPP: ::c_int = 95; +pub const EPFNOSUPPORT: ::c_int = 96; +pub const EAFNOSUPPORT: ::c_int = 97; +pub const EADDRINUSE: ::c_int = 98; +pub const EADDRNOTAVAIL: ::c_int = 99; +pub const ENETDOWN: ::c_int = 100; +pub const ENETUNREACH: ::c_int = 101; +pub const ENETRESET: ::c_int = 102; +pub const ECONNABORTED: ::c_int = 103; +pub const ECONNRESET: ::c_int = 104; +pub const ENOBUFS: ::c_int = 105; +pub const EISCONN: ::c_int = 106; +pub const ENOTCONN: ::c_int = 107; +pub const ESHUTDOWN: ::c_int = 108; +pub const ETOOMANYREFS: ::c_int = 109; +pub const ETIMEDOUT: ::c_int = 110; +pub const ECONNREFUSED: ::c_int = 111; +pub const EHOSTDOWN: ::c_int = 112; +pub const EHOSTUNREACH: ::c_int = 113; +pub const EALREADY: ::c_int = 114; +pub const EINPROGRESS: ::c_int = 115; +pub const ESTALE: ::c_int = 116; +pub const EDQUOT: ::c_int = 122; +pub const ENOMEDIUM: ::c_int = 123; +pub const EMEDIUMTYPE: ::c_int = 124; +pub const ECANCELED: ::c_int = 125; +pub const ENOKEY: ::c_int = 126; +pub const EKEYEXPIRED: ::c_int = 127; +pub const EKEYREVOKED: ::c_int = 128; +pub const EKEYREJECTED: ::c_int = 129; +pub const EOWNERDEAD: ::c_int = 130; +pub const ENOTRECOVERABLE: ::c_int = 131; +pub const EHWPOISON: ::c_int = 133; +pub const ERFKILL: ::c_int = 132; + +pub const SA_SIGINFO: ::c_int = 0x00000004; +pub const SA_NOCLDWAIT: ::c_int = 0x00000002; + +pub const SOCK_STREAM: ::c_int = 1; +pub const SOCK_DGRAM: ::c_int = 2; + +pub const MCL_CURRENT: ::c_int = 0x0001; +pub const MCL_FUTURE: ::c_int = 0x0002; + +pub const POLLWRNORM: ::c_short = 0x100; +pub const POLLWRBAND: ::c_short = 0x200; + +pub const F_GETLK: ::c_int = 5; +pub const F_GETOWN: ::c_int = 9; +pub const F_SETOWN: ::c_int = 8; + +pub const EFD_NONBLOCK: ::c_int = 0x800; +pub const SFD_NONBLOCK: ::c_int = 0x0800; + +pub const SIGCHLD: ::c_int = 17; +pub const SIGBUS: ::c_int = 7; +pub const SIGUSR1: ::c_int = 10; +pub const SIGUSR2: ::c_int = 12; +pub const SIGCONT: ::c_int = 18; +pub const SIGSTOP: ::c_int = 19; +pub const SIGTSTP: ::c_int = 20; +pub const SIGURG: ::c_int = 23; +pub const SIGIO: ::c_int = 29; +pub const SIGSYS: ::c_int = 31; +pub const SIGSTKFLT: ::c_int = 16; +#[deprecated(since = "0.2.55", note = "Use SIGSYS instead")] +pub const SIGUNUSED: ::c_int = 31; +pub const SIGPOLL: ::c_int = 29; +pub const SIGPWR: ::c_int = 30; +pub const SIG_SETMASK: ::c_int = 2; +pub const SIG_BLOCK: ::c_int = 0x000000; +pub const SIG_UNBLOCK: ::c_int = 0x01; +pub const SIGTTIN: ::c_int = 21; +pub const SIGTTOU: ::c_int = 22; +pub const SIGXCPU: ::c_int = 24; +pub const SIGXFSZ: ::c_int = 25; +pub const SIGVTALRM: ::c_int = 26; +pub const SIGPROF: ::c_int = 27; +pub const SIGWINCH: ::c_int = 28; +pub const SIGSTKSZ: ::size_t = 8192; +pub const MINSIGSTKSZ: ::size_t = 2048; +pub const CBAUD: ::tcflag_t = 0o0010017; +pub const TAB1: ::tcflag_t = 0x00000800; +pub const TAB2: ::tcflag_t = 0x00001000; +pub const TAB3: ::tcflag_t = 0x00001800; +pub const CR1: ::tcflag_t = 0x00000200; +pub const CR2: ::tcflag_t = 0x00000400; +pub const CR3: ::tcflag_t = 0x00000600; +pub const FF1: ::tcflag_t = 0x00008000; +pub const BS1: ::tcflag_t = 0x00002000; +pub const VT1: ::tcflag_t = 0x00004000; +pub const VWERASE: usize = 14; +pub const VREPRINT: usize = 12; +pub const VSUSP: usize = 10; +pub const VSTART: usize = 8; +pub const VSTOP: usize = 9; +pub const VDISCARD: usize = 13; +pub const VTIME: usize = 5; +pub const IXON: ::tcflag_t = 0x00000400; +pub const IXOFF: ::tcflag_t = 0x00001000; +pub const ONLCR: ::tcflag_t = 0x4; +pub const CSIZE: ::tcflag_t = 0x00000030; +pub const CS6: ::tcflag_t = 0x00000010; +pub const CS7: ::tcflag_t = 0x00000020; +pub const CS8: ::tcflag_t = 0x00000030; +pub const CSTOPB: ::tcflag_t = 0x00000040; +pub const CREAD: ::tcflag_t = 0x00000080; +pub const PARENB: ::tcflag_t = 0x00000100; +pub const PARODD: ::tcflag_t = 0x00000200; +pub const HUPCL: ::tcflag_t = 0x00000400; +pub const CLOCAL: ::tcflag_t = 0x00000800; +pub const ECHOKE: ::tcflag_t = 0x00000800; +pub const ECHOE: ::tcflag_t = 0x00000010; +pub const ECHOK: ::tcflag_t = 0x00000020; +pub const ECHONL: ::tcflag_t = 0x00000040; +pub const ECHOPRT: ::tcflag_t = 0x00000400; +pub const ECHOCTL: ::tcflag_t = 0x00000200; +pub const ISIG: ::tcflag_t = 0x00000001; +pub const ICANON: ::tcflag_t = 0x00000002; +pub const PENDIN: ::tcflag_t = 0x00004000; +pub const NOFLSH: ::tcflag_t = 0x00000080; +pub const CIBAUD: ::tcflag_t = 0o02003600000; +pub const CBAUDEX: ::tcflag_t = 0o010000; +pub const VSWTC: usize = 7; +pub const OLCUC: ::tcflag_t = 0o000002; +pub const NLDLY: ::tcflag_t = 0o000400; +pub const CRDLY: ::tcflag_t = 0o003000; +pub const TABDLY: ::tcflag_t = 0o014000; +pub const BSDLY: ::tcflag_t = 0o020000; +pub const FFDLY: ::tcflag_t = 0o100000; +pub const VTDLY: ::tcflag_t = 0o040000; +pub const XTABS: ::tcflag_t = 0o014000; + +pub const B0: ::speed_t = 0o000000; +pub const B50: ::speed_t = 0o000001; +pub const B75: ::speed_t = 0o000002; +pub const B110: ::speed_t = 0o000003; +pub const B134: ::speed_t = 0o000004; +pub const B150: ::speed_t = 0o000005; +pub const B200: ::speed_t = 0o000006; +pub const B300: ::speed_t = 0o000007; +pub const B600: ::speed_t = 0o000010; +pub const B1200: ::speed_t = 0o000011; +pub const B1800: ::speed_t = 0o000012; +pub const B2400: ::speed_t = 0o000013; +pub const B4800: ::speed_t = 0o000014; +pub const B9600: ::speed_t = 0o000015; +pub const B19200: ::speed_t = 0o000016; +pub const B38400: ::speed_t = 0o000017; +pub const EXTA: ::speed_t = B19200; +pub const EXTB: ::speed_t = B38400; +pub const B57600: ::speed_t = 0o010001; +pub const B115200: ::speed_t = 0o010002; +pub const B230400: ::speed_t = 0o010003; +pub const B460800: ::speed_t = 0o010004; +pub const B500000: ::speed_t = 0o010005; +pub const B576000: ::speed_t = 0o010006; +pub const B921600: ::speed_t = 0o010007; +pub const B1000000: ::speed_t = 0o010010; +pub const B1152000: ::speed_t = 0o010011; +pub const B1500000: ::speed_t = 0o010012; +pub const B2000000: ::speed_t = 0o010013; +pub const B2500000: ::speed_t = 0o010014; +pub const B3000000: ::speed_t = 0o010015; +pub const B3500000: ::speed_t = 0o010016; +pub const B4000000: ::speed_t = 0o010017; + +pub const SECCOMP_SET_MODE_STRICT: ::c_uint = 0; +pub const SECCOMP_SET_MODE_FILTER: ::c_uint = 1; +pub const SECCOMP_GET_ACTION_AVAIL: ::c_uint = 2; +pub const SECCOMP_GET_NOTIF_SIZES: ::c_uint = 3; + +pub const VEOL: usize = 11; +pub const VEOL2: usize = 16; +pub const VMIN: usize = 6; +pub const IEXTEN: ::tcflag_t = 0x00008000; +pub const TOSTOP: ::tcflag_t = 0x00000100; +pub const FLUSHO: ::tcflag_t = 0x00001000; +pub const EXTPROC: ::tcflag_t = 0x00010000; + +pub const TCSANOW: ::c_int = 0; +pub const TCSADRAIN: ::c_int = 1; +pub const TCSAFLUSH: ::c_int = 2; + +// Syscall table +pub const SYS_read: ::c_long = 63; +pub const SYS_write: ::c_long = 64; +pub const SYS_close: ::c_long = 57; +pub const SYS_fstat: ::c_long = 80; +pub const SYS_lseek: ::c_long = 62; +pub const SYS_mmap: ::c_long = 222; +pub const SYS_mprotect: ::c_long = 226; +pub const SYS_munmap: ::c_long = 215; +pub const SYS_brk: ::c_long = 214; +pub const SYS_rt_sigaction: ::c_long = 134; +pub const SYS_rt_sigprocmask: ::c_long = 135; +pub const SYS_rt_sigreturn: ::c_long = 139; +pub const SYS_ioctl: ::c_long = 29; +pub const SYS_pread64: ::c_long = 67; +pub const SYS_pwrite64: ::c_long = 68; +pub const SYS_readv: ::c_long = 65; +pub const SYS_writev: ::c_long = 66; +pub const SYS_sched_yield: ::c_long = 124; +pub const SYS_mremap: ::c_long = 216; +pub const SYS_msync: ::c_long = 227; +pub const SYS_mincore: ::c_long = 232; +pub const SYS_madvise: ::c_long = 233; +pub const SYS_shmget: ::c_long = 194; +pub const SYS_shmat: ::c_long = 196; +pub const SYS_shmctl: ::c_long = 195; +pub const SYS_dup: ::c_long = 23; +pub const SYS_nanosleep: ::c_long = 101; +pub const SYS_getitimer: ::c_long = 102; +pub const SYS_setitimer: ::c_long = 103; +pub const SYS_getpid: ::c_long = 172; +pub const SYS_sendfile: ::c_long = 71; +pub const SYS_socket: ::c_long = 198; +pub const SYS_connect: ::c_long = 203; +pub const SYS_accept: ::c_long = 202; +pub const SYS_sendto: ::c_long = 206; +pub const SYS_recvfrom: ::c_long = 207; +pub const SYS_sendmsg: ::c_long = 211; +pub const SYS_recvmsg: ::c_long = 212; +pub const SYS_shutdown: ::c_long = 210; +pub const SYS_bind: ::c_long = 200; +pub const SYS_listen: ::c_long = 201; +pub const SYS_getsockname: ::c_long = 204; +pub const SYS_getpeername: ::c_long = 205; +pub const SYS_socketpair: ::c_long = 199; +pub const SYS_setsockopt: ::c_long = 208; +pub const SYS_getsockopt: ::c_long = 209; +pub const SYS_clone: ::c_long = 220; +pub const SYS_execve: ::c_long = 221; +pub const SYS_exit: ::c_long = 93; +pub const SYS_wait4: ::c_long = 260; +pub const SYS_kill: ::c_long = 129; +pub const SYS_uname: ::c_long = 160; +pub const SYS_semget: ::c_long = 190; +pub const SYS_semop: ::c_long = 193; +pub const SYS_semctl: ::c_long = 191; +pub const SYS_shmdt: ::c_long = 197; +pub const SYS_msgget: ::c_long = 186; +pub const SYS_msgsnd: ::c_long = 189; +pub const SYS_msgrcv: ::c_long = 188; +pub const SYS_msgctl: ::c_long = 187; +pub const SYS_fcntl: ::c_long = 25; +pub const SYS_flock: ::c_long = 32; +pub const SYS_fsync: ::c_long = 82; +pub const SYS_fdatasync: ::c_long = 83; +pub const SYS_truncate: ::c_long = 45; +pub const SYS_ftruncate: ::c_long = 46; +pub const SYS_getcwd: ::c_long = 17; +pub const SYS_chdir: ::c_long = 49; +pub const SYS_fchdir: ::c_long = 50; +pub const SYS_fchmod: ::c_long = 52; +pub const SYS_fchown: ::c_long = 55; +pub const SYS_umask: ::c_long = 166; +pub const SYS_gettimeofday: ::c_long = 169; +pub const SYS_getrlimit: ::c_long = 163; +pub const SYS_getrusage: ::c_long = 165; +pub const SYS_sysinfo: ::c_long = 179; +pub const SYS_times: ::c_long = 153; +pub const SYS_ptrace: ::c_long = 117; +pub const SYS_getuid: ::c_long = 174; +pub const SYS_syslog: ::c_long = 116; +pub const SYS_getgid: ::c_long = 176; +pub const SYS_setuid: ::c_long = 146; +pub const SYS_setgid: ::c_long = 144; +pub const SYS_geteuid: ::c_long = 175; +pub const SYS_getegid: ::c_long = 177; +pub const SYS_setpgid: ::c_long = 154; +pub const SYS_getppid: ::c_long = 173; +pub const SYS_setsid: ::c_long = 157; +pub const SYS_setreuid: ::c_long = 145; +pub const SYS_setregid: ::c_long = 143; +pub const SYS_getgroups: ::c_long = 158; +pub const SYS_setgroups: ::c_long = 159; +pub const SYS_setresuid: ::c_long = 147; +pub const SYS_getresuid: ::c_long = 148; +pub const SYS_setresgid: ::c_long = 149; +pub const SYS_getresgid: ::c_long = 150; +pub const SYS_getpgid: ::c_long = 155; +pub const SYS_setfsuid: ::c_long = 151; +pub const SYS_setfsgid: ::c_long = 152; +pub const SYS_getsid: ::c_long = 156; +pub const SYS_capget: ::c_long = 90; +pub const SYS_capset: ::c_long = 91; +pub const SYS_rt_sigpending: ::c_long = 136; +pub const SYS_rt_sigtimedwait: ::c_long = 137; +pub const SYS_rt_sigqueueinfo: ::c_long = 138; +pub const SYS_rt_sigsuspend: ::c_long = 133; +pub const SYS_sigaltstack: ::c_long = 132; +pub const SYS_personality: ::c_long = 92; +pub const SYS_statfs: ::c_long = 43; +pub const SYS_fstatfs: ::c_long = 44; +pub const SYS_getpriority: ::c_long = 141; +pub const SYS_setpriority: ::c_long = 140; +pub const SYS_sched_setparam: ::c_long = 118; +pub const SYS_sched_getparam: ::c_long = 121; +pub const SYS_sched_setscheduler: ::c_long = 119; +pub const SYS_sched_getscheduler: ::c_long = 120; +pub const SYS_sched_get_priority_max: ::c_long = 125; +pub const SYS_sched_get_priority_min: ::c_long = 126; +pub const SYS_sched_rr_get_interval: ::c_long = 127; +pub const SYS_mlock: ::c_long = 228; +pub const SYS_munlock: ::c_long = 229; +pub const SYS_mlockall: ::c_long = 230; +pub const SYS_munlockall: ::c_long = 231; +pub const SYS_vhangup: ::c_long = 58; +pub const SYS_pivot_root: ::c_long = 41; +pub const SYS_prctl: ::c_long = 167; +pub const SYS_adjtimex: ::c_long = 171; +pub const SYS_setrlimit: ::c_long = 164; +pub const SYS_chroot: ::c_long = 51; +pub const SYS_sync: ::c_long = 81; +pub const SYS_acct: ::c_long = 89; +pub const SYS_settimeofday: ::c_long = 170; +pub const SYS_mount: ::c_long = 40; +pub const SYS_umount2: ::c_long = 39; +pub const SYS_swapon: ::c_long = 224; +pub const SYS_swapoff: ::c_long = 225; +pub const SYS_reboot: ::c_long = 142; +pub const SYS_sethostname: ::c_long = 161; +pub const SYS_setdomainname: ::c_long = 162; +pub const SYS_init_module: ::c_long = 105; +pub const SYS_delete_module: ::c_long = 106; +pub const SYS_quotactl: ::c_long = 60; +pub const SYS_nfsservctl: ::c_long = 42; +pub const SYS_gettid: ::c_long = 178; +pub const SYS_readahead: ::c_long = 213; +pub const SYS_setxattr: ::c_long = 5; +pub const SYS_lsetxattr: ::c_long = 6; +pub const SYS_fsetxattr: ::c_long = 7; +pub const SYS_getxattr: ::c_long = 8; +pub const SYS_lgetxattr: ::c_long = 9; +pub const SYS_fgetxattr: ::c_long = 10; +pub const SYS_listxattr: ::c_long = 11; +pub const SYS_llistxattr: ::c_long = 12; +pub const SYS_flistxattr: ::c_long = 13; +pub const SYS_removexattr: ::c_long = 14; +pub const SYS_lremovexattr: ::c_long = 15; +pub const SYS_fremovexattr: ::c_long = 16; +pub const SYS_tkill: ::c_long = 130; +pub const SYS_futex: ::c_long = 98; +pub const SYS_sched_setaffinity: ::c_long = 122; +pub const SYS_sched_getaffinity: ::c_long = 123; +pub const SYS_io_setup: ::c_long = 0; +pub const SYS_io_destroy: ::c_long = 1; +pub const SYS_io_getevents: ::c_long = 4; +pub const SYS_io_submit: ::c_long = 2; +pub const SYS_io_cancel: ::c_long = 3; +pub const SYS_lookup_dcookie: ::c_long = 18; +pub const SYS_remap_file_pages: ::c_long = 234; +pub const SYS_getdents64: ::c_long = 61; +pub const SYS_set_tid_address: ::c_long = 96; +pub const SYS_restart_syscall: ::c_long = 128; +pub const SYS_semtimedop: ::c_long = 192; +pub const SYS_fadvise64: ::c_long = 223; +pub const SYS_timer_create: ::c_long = 107; +pub const SYS_timer_settime: ::c_long = 110; +pub const SYS_timer_gettime: ::c_long = 108; +pub const SYS_timer_getoverrun: ::c_long = 109; +pub const SYS_timer_delete: ::c_long = 111; +pub const SYS_clock_settime: ::c_long = 112; +pub const SYS_clock_gettime: ::c_long = 113; +pub const SYS_clock_getres: ::c_long = 114; +pub const SYS_clock_nanosleep: ::c_long = 115; +pub const SYS_exit_group: ::c_long = 94; +pub const SYS_epoll_ctl: ::c_long = 21; +pub const SYS_tgkill: ::c_long = 131; +pub const SYS_mbind: ::c_long = 235; +pub const SYS_set_mempolicy: ::c_long = 237; +pub const SYS_get_mempolicy: ::c_long = 236; +pub const SYS_mq_open: ::c_long = 180; +pub const SYS_mq_unlink: ::c_long = 181; +pub const SYS_mq_timedsend: ::c_long = 182; +pub const SYS_mq_timedreceive: ::c_long = 183; +pub const SYS_mq_notify: ::c_long = 184; +pub const SYS_mq_getsetattr: ::c_long = 185; +pub const SYS_kexec_load: ::c_long = 104; +pub const SYS_waitid: ::c_long = 95; +pub const SYS_add_key: ::c_long = 217; +pub const SYS_request_key: ::c_long = 218; +pub const SYS_keyctl: ::c_long = 219; +pub const SYS_ioprio_set: ::c_long = 30; +pub const SYS_ioprio_get: ::c_long = 31; +pub const SYS_inotify_add_watch: ::c_long = 27; +pub const SYS_inotify_rm_watch: ::c_long = 28; +pub const SYS_migrate_pages: ::c_long = 238; +pub const SYS_openat: ::c_long = 56; +pub const SYS_mkdirat: ::c_long = 34; +pub const SYS_mknodat: ::c_long = 33; +pub const SYS_fchownat: ::c_long = 54; +pub const SYS_newfstatat: ::c_long = 79; +pub const SYS_unlinkat: ::c_long = 35; +pub const SYS_linkat: ::c_long = 37; +pub const SYS_symlinkat: ::c_long = 36; +pub const SYS_readlinkat: ::c_long = 78; +pub const SYS_fchmodat: ::c_long = 53; +pub const SYS_faccessat: ::c_long = 48; +pub const SYS_pselect6: ::c_long = 72; +pub const SYS_ppoll: ::c_long = 73; +pub const SYS_unshare: ::c_long = 97; +pub const SYS_set_robust_list: ::c_long = 99; +pub const SYS_get_robust_list: ::c_long = 100; +pub const SYS_splice: ::c_long = 76; +pub const SYS_tee: ::c_long = 77; +pub const SYS_sync_file_range: ::c_long = 84; +pub const SYS_vmsplice: ::c_long = 75; +pub const SYS_move_pages: ::c_long = 239; +pub const SYS_utimensat: ::c_long = 88; +pub const SYS_epoll_pwait: ::c_long = 22; +pub const SYS_timerfd_create: ::c_long = 85; +pub const SYS_fallocate: ::c_long = 47; +pub const SYS_timerfd_settime: ::c_long = 86; +pub const SYS_timerfd_gettime: ::c_long = 87; +pub const SYS_accept4: ::c_long = 242; +pub const SYS_signalfd4: ::c_long = 74; +pub const SYS_eventfd2: ::c_long = 19; +pub const SYS_epoll_create1: ::c_long = 20; +pub const SYS_dup3: ::c_long = 24; +pub const SYS_pipe2: ::c_long = 59; +pub const SYS_inotify_init1: ::c_long = 26; +pub const SYS_preadv: ::c_long = 69; +pub const SYS_pwritev: ::c_long = 70; +pub const SYS_rt_tgsigqueueinfo: ::c_long = 240; +pub const SYS_perf_event_open: ::c_long = 241; +pub const SYS_recvmmsg: ::c_long = 243; +pub const SYS_fanotify_init: ::c_long = 262; +pub const SYS_fanotify_mark: ::c_long = 263; +pub const SYS_prlimit64: ::c_long = 261; +pub const SYS_name_to_handle_at: ::c_long = 264; +pub const SYS_open_by_handle_at: ::c_long = 265; +pub const SYS_clock_adjtime: ::c_long = 266; +pub const SYS_syncfs: ::c_long = 267; +pub const SYS_sendmmsg: ::c_long = 269; +pub const SYS_setns: ::c_long = 268; +pub const SYS_getcpu: ::c_long = 168; +pub const SYS_process_vm_readv: ::c_long = 270; +pub const SYS_process_vm_writev: ::c_long = 271; +pub const SYS_kcmp: ::c_long = 272; +pub const SYS_finit_module: ::c_long = 273; +pub const SYS_sched_setattr: ::c_long = 274; +pub const SYS_sched_getattr: ::c_long = 275; +pub const SYS_renameat2: ::c_long = 276; +pub const SYS_seccomp: ::c_long = 277; +pub const SYS_getrandom: ::c_long = 278; +pub const SYS_memfd_create: ::c_long = 279; +pub const SYS_bpf: ::c_long = 280; +pub const SYS_execveat: ::c_long = 281; +pub const SYS_userfaultfd: ::c_long = 282; +pub const SYS_membarrier: ::c_long = 283; +pub const SYS_mlock2: ::c_long = 284; +pub const SYS_copy_file_range: ::c_long = 285; +pub const SYS_preadv2: ::c_long = 286; +pub const SYS_pwritev2: ::c_long = 287; +pub const SYS_pkey_mprotect: ::c_long = 288; +pub const SYS_pkey_alloc: ::c_long = 289; +pub const SYS_pkey_free: ::c_long = 290; +pub const SYS_statx: ::c_long = 291; +pub const SYS_rseq: ::c_long = 293; +pub const SYS_syscall: ::c_long = 294; +pub const SYS_pidfd_send_signal: ::c_long = 424; +pub const SYS_io_uring_setup: ::c_long = 425; +pub const SYS_io_uring_enter: ::c_long = 426; +pub const SYS_io_uring_register: ::c_long = 427; +pub const SYS_open_tree: ::c_long = 428; +pub const SYS_move_mount: ::c_long = 429; +pub const SYS_fsopen: ::c_long = 430; +pub const SYS_fsconfig: ::c_long = 431; +pub const SYS_fsmount: ::c_long = 432; +pub const SYS_fspick: ::c_long = 433; +pub const SYS_pidfd_open: ::c_long = 434; +pub const SYS_clone3: ::c_long = 435; +pub const SYS_close_range: ::c_long = 436; +pub const SYS_openat2: ::c_long = 437; +pub const SYS_pidfd_getfd: ::c_long = 438; +pub const SYS_faccessat2: ::c_long = 439; +pub const SYS_process_madvise: ::c_long = 440; +pub const SYS_epoll_pwait2: ::c_long = 441; +pub const SYS_mount_setattr: ::c_long = 442; +pub const SYS_quotactl_fd: ::c_long = 443; +pub const SYS_landlock_create_ruleset: ::c_long = 444; +pub const SYS_landlock_add_rule: ::c_long = 445; +pub const SYS_landlock_restrict_self: ::c_long = 446; +pub const SYS_memfd_secret: ::c_long = 447; +pub const SYS_process_mrelease: ::c_long = 448; +pub const SYS_futex_waitv: ::c_long = 449; +pub const SYS_set_mempolicy_home_node: ::c_long = 450; + +cfg_if! { + if #[cfg(libc_align)] { + mod align; + pub use self::align::*; + } +} diff --git a/src/unix/linux_like/linux/gnu/b32/mod.rs b/src/unix/linux_like/linux/gnu/b32/mod.rs index 2df7a47b9d10a..d5b11347eb8b7 100644 --- a/src/unix/linux_like/linux/gnu/b32/mod.rs +++ b/src/unix/linux_like/linux/gnu/b32/mod.rs @@ -352,6 +352,9 @@ cfg_if! { } else if #[cfg(target_arch = "riscv32")] { mod riscv32; pub use self::riscv32::*; + } else if #[cfg(target_arch = "csky")] { + mod csky; + pub use self::csky::*; } else { // Unknown target_arch } diff --git a/src/unix/linux_like/linux/gnu/mod.rs b/src/unix/linux_like/linux/gnu/mod.rs index 053949f6b245e..2d74087e930f6 100644 --- a/src/unix/linux_like/linux/gnu/mod.rs +++ b/src/unix/linux_like/linux/gnu/mod.rs @@ -1395,6 +1395,7 @@ cfg_if! { if #[cfg(any(target_arch = "x86", target_arch = "arm", target_arch = "m68k", + target_arch = "csky", target_arch = "mips", target_arch = "mips32r6", target_arch = "powerpc", diff --git a/src/unix/linux_like/linux/no_align.rs b/src/unix/linux_like/linux/no_align.rs index 3f5d7d6cdef08..328a5cc484231 100644 --- a/src/unix/linux_like/linux/no_align.rs +++ b/src/unix/linux_like/linux/no_align.rs @@ -73,6 +73,7 @@ macro_rules! expand_align { target_arch = "mips32r6", target_arch = "arm", target_arch = "m68k", + target_arch = "csky", target_arch = "powerpc", target_arch = "sparc", all(target_arch = "x86_64", @@ -82,6 +83,7 @@ macro_rules! expand_align { target_arch = "mips32r6", target_arch = "arm", target_arch = "m68k", + target_arch = "csky", target_arch = "powerpc", target_arch = "sparc", all(target_arch = "x86_64", @@ -95,6 +97,7 @@ macro_rules! expand_align { target_arch = "mips32r6", target_arch = "arm", target_arch = "m68k", + target_arch = "csky", target_arch = "powerpc", target_arch = "sparc", all(target_arch = "x86_64", @@ -104,6 +107,7 @@ macro_rules! expand_align { target_arch = "mips32r6", target_arch = "arm", target_arch = "m68k", + target_arch = "csky", target_arch = "powerpc", target_arch = "sparc", all(target_arch = "x86_64", @@ -117,6 +121,7 @@ macro_rules! expand_align { target_arch = "mips32r6", target_arch = "arm", target_arch = "m68k", + target_arch = "csky", target_arch = "powerpc", target_arch = "sparc", all(target_arch = "x86_64", @@ -126,6 +131,7 @@ macro_rules! expand_align { target_arch = "mips32r6", target_arch = "arm", target_arch = "m68k", + target_arch = "csky", target_arch = "powerpc", target_arch = "sparc", all(target_arch = "x86_64", From cbeb1bde9f59cb560867f072eac3235c21b695fd Mon Sep 17 00:00:00 2001 From: David CARLIER Date: Wed, 2 Aug 2023 20:56:16 +0100 Subject: [PATCH 28/32] linux glibc/musl and android adding PROT_BTI/PROT_MTE mmap flags for arm64. --- libc-test/semver/android-aarch64.txt | 2 ++ src/unix/linux_like/android/b64/aarch64/mod.rs | 3 +++ src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs | 3 +++ 3 files changed, 8 insertions(+) diff --git a/libc-test/semver/android-aarch64.txt b/libc-test/semver/android-aarch64.txt index 7a8868aa2c5de..9b4cc355e3f9e 100644 --- a/libc-test/semver/android-aarch64.txt +++ b/libc-test/semver/android-aarch64.txt @@ -7,6 +7,8 @@ HWCAP2_SVEBITPERM HWCAP2_SVEPMULL HWCAP2_SVESHA3 HWCAP2_SVESM4 +PROT_BTI +PROT_MTE SYS_arch_specific_syscall SYS_syscalls SYS_fcntl diff --git a/src/unix/linux_like/android/b64/aarch64/mod.rs b/src/unix/linux_like/android/b64/aarch64/mod.rs index e7247fbb6f5fd..ac67fddabecd4 100644 --- a/src/unix/linux_like/android/b64/aarch64/mod.rs +++ b/src/unix/linux_like/android/b64/aarch64/mod.rs @@ -412,6 +412,9 @@ pub const SYS_fsmount: ::c_long = 432; pub const SYS_fspick: ::c_long = 433; pub const SYS_syscalls: ::c_long = 436; +pub const PROT_BTI: ::c_int = 0x10; +pub const PROT_MTE: ::c_int = 0x20; + cfg_if! { if #[cfg(libc_align)] { mod align; diff --git a/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs b/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs index fee3d1517f87a..f9aed99b2e788 100644 --- a/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs +++ b/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs @@ -902,6 +902,9 @@ pub const SYS_process_mrelease: ::c_long = 448; pub const SYS_futex_waitv: ::c_long = 449; pub const SYS_set_mempolicy_home_node: ::c_long = 450; +pub const PROT_BTI: ::c_int = 0x10; +pub const PROT_MTE: ::c_int = 0x20; + extern "C" { pub fn sysctl( name: *mut ::c_int, From 5841067de1341dd8744fdbb585c465b73ad07855 Mon Sep 17 00:00:00 2001 From: Kleis Auke Wolthuizen Date: Sun, 20 Aug 2023 10:48:50 +0200 Subject: [PATCH 29/32] CI: Update Node.js version to v16.20.0 By using the bundled Node from emsdk, which is no longer outdated. See: emscripten-core/emsdk@d7327b4 --- ci/emscripten-entry.sh | 4 ---- ci/emscripten.sh | 6 ------ 2 files changed, 10 deletions(-) diff --git a/ci/emscripten-entry.sh b/ci/emscripten-entry.sh index 80b091903b1fc..e950cbe33ab06 100755 --- a/ci/emscripten-entry.sh +++ b/ci/emscripten-entry.sh @@ -5,8 +5,4 @@ set -ex # shellcheck disable=SC1091 source /emsdk-portable/emsdk_env.sh &> /dev/null -# emsdk-portable provides a node binary, but we need version 8 to run wasm -# NOTE: Do not forget to sync Node.js version with `emscripten.sh`! -export PATH="/node-v14.17.0-linux-x64/bin:$PATH" - exec "$@" diff --git a/ci/emscripten.sh b/ci/emscripten.sh index 967b586b5f199..44da97c93ee68 100644 --- a/ci/emscripten.sh +++ b/ci/emscripten.sh @@ -20,9 +20,3 @@ rm -f a.* # Make emsdk usable by any user chmod a+rxw -R /emsdk-portable - -# node 8 is required to run wasm -# NOTE: Do not forget to sync Node.js version with `emscripten-entry.sh`! -cd / -curl --retry 5 -L https://nodejs.org/dist/v14.17.0/node-v14.17.0-linux-x64.tar.xz | \ - tar -xJ From 837159cdd1477a2e2dcd712878a435c06459cbe4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=9C=E9=83=A8=E6=98=8C=E5=B9=B3?= Date: Mon, 21 Aug 2023 11:00:40 +0900 Subject: [PATCH 30/32] add RTLD_MAIN_ONLY Apple's dynamic linker has this special handle called `RTLD_MAIN_ONLY` which you can feed to `dlsym(3)`. Their `dlfcn.h` says it has been around since Mac OS X 10.5. --- src/unix/bsd/apple/mod.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/unix/bsd/apple/mod.rs b/src/unix/bsd/apple/mod.rs index 1602357366ee1..867a2814a2425 100644 --- a/src/unix/bsd/apple/mod.rs +++ b/src/unix/bsd/apple/mod.rs @@ -4189,6 +4189,7 @@ pub const RTLD_FIRST: ::c_int = 0x100; pub const RTLD_NODELETE: ::c_int = 0x80; pub const RTLD_NOLOAD: ::c_int = 0x10; pub const RTLD_GLOBAL: ::c_int = 0x8; +pub const RTLD_MAIN_ONLY: *mut ::c_void = -5isize as *mut c_void; pub const _WSTOPPED: ::c_int = 0o177; From ff6a0c677bce23b632fe5f1c22d07b9d0028972f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=9C=E9=83=A8=E6=98=8C=E5=B9=B3?= Date: Mon, 21 Aug 2023 11:31:33 +0900 Subject: [PATCH 31/32] properly modify the type with :: --- src/unix/bsd/apple/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/unix/bsd/apple/mod.rs b/src/unix/bsd/apple/mod.rs index 867a2814a2425..a2fbf876731ba 100644 --- a/src/unix/bsd/apple/mod.rs +++ b/src/unix/bsd/apple/mod.rs @@ -4189,7 +4189,7 @@ pub const RTLD_FIRST: ::c_int = 0x100; pub const RTLD_NODELETE: ::c_int = 0x80; pub const RTLD_NOLOAD: ::c_int = 0x10; pub const RTLD_GLOBAL: ::c_int = 0x8; -pub const RTLD_MAIN_ONLY: *mut ::c_void = -5isize as *mut c_void; +pub const RTLD_MAIN_ONLY: *mut ::c_void = -5isize as *mut ::c_void; pub const _WSTOPPED: ::c_int = 0o177; From c89f7474a6a8ee613928f78d5f9c8f58737a8ce7 Mon Sep 17 00:00:00 2001 From: Josh Triplett Date: Wed, 13 Sep 2023 02:47:57 -0700 Subject: [PATCH 32/32] libc 0.2.148 --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 3e5ca175cd078..c06e0931d52f3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "libc" -version = "0.2.147" +version = "0.2.148" authors = ["The Rust Project Developers"] license = "MIT OR Apache-2.0" readme = "README.md"