From e94bba1e72e6016162a34f6c566cee9ed86d33d9 Mon Sep 17 00:00:00 2001 From: Clayton Fernalo Date: Sat, 22 Mar 2025 16:15:32 +0800 Subject: [PATCH 1/3] Deprecate `__uint128_t`, `__uint128`, `__int128_t`, and `__int128` in version 0.2.172 --- src/primitives.rs | 6 ++++++ src/unix/bsd/apple/b64/aarch64/mod.rs | 2 +- src/unix/linux_like/android/b64/aarch64/mod.rs | 2 +- src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs | 2 +- src/unix/linux_like/linux/musl/b64/aarch64/mod.rs | 2 +- 5 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/primitives.rs b/src/primitives.rs index 78b14b52ef1f2..825511903f33f 100644 --- a/src/primitives.rs +++ b/src/primitives.rs @@ -129,12 +129,16 @@ cfg_if! { // [0]: https://github.com/rust-lang/rust/issues/54341 /// C `__int128` (a GCC extension that's part of many ABIs) + #[deprecated(since = "0.2.172", note = "Use i128 instead.")] pub type __int128 = i128; /// C `unsigned __int128` (a GCC extension that's part of many ABIs) + #[deprecated(since = "0.2.172", note = "Use u128 instead.")] pub type __uint128 = u128; /// C __int128_t (alternate name for [__int128][]) + #[deprecated(since = "0.2.172", note = "Use i128 instead.")] pub type __int128_t = i128; /// C __uint128_t (alternate name for [__uint128][]) + #[deprecated(since = "0.2.172", note = "Use u128 instead.")] pub type __uint128_t = u128; // NOTE: if you add more platforms to here, you may need to cfg @@ -181,8 +185,10 @@ cfg_if! { ) ))] { /// C `__int128_t` + #[deprecated(since = "1.0", note = "Use i128 instead.")] pub type __int128_t = i128; /// C `__uint128_t` + #[deprecated(since = "1.0", note = "Use ux128 instead.")] pub type __uint128_t = u128; } } diff --git a/src/unix/bsd/apple/b64/aarch64/mod.rs b/src/unix/bsd/apple/b64/aarch64/mod.rs index e300b76ae8228..45bab300eb917 100644 --- a/src/unix/bsd/apple/b64/aarch64/mod.rs +++ b/src/unix/bsd/apple/b64/aarch64/mod.rs @@ -40,7 +40,7 @@ s! { } pub struct __darwin_arm_neon_state64 { - pub __v: [crate::__uint128_t; 32], + pub __v: [u128; 32], pub __fpsr: u32, pub __fpcr: u32, } diff --git a/src/unix/linux_like/android/b64/aarch64/mod.rs b/src/unix/linux_like/android/b64/aarch64/mod.rs index b678eb8da6aa4..47d7208b0b9ae 100644 --- a/src/unix/linux_like/android/b64/aarch64/mod.rs +++ b/src/unix/linux_like/android/b64/aarch64/mod.rs @@ -78,7 +78,7 @@ s! { } pub struct user_fpsimd_struct { - pub vregs: [crate::__uint128_t; 32], + pub vregs: [u128; 32], pub fpsr: u32, pub fpcr: u32, } 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 0e990f6006378..f0e64cabfa284 100644 --- a/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs +++ b/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs @@ -218,7 +218,7 @@ s! { } pub struct user_fpsimd_struct { - pub vregs: [crate::__uint128_t; 32], + pub vregs: [u128; 32], pub fpsr: c_uint, pub fpcr: c_uint, } diff --git a/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs b/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs index 243247edafc46..1addefbb6af24 100644 --- a/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs +++ b/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs @@ -122,7 +122,7 @@ s! { } pub struct user_fpsimd_struct { - pub vregs: [crate::__uint128_t; 32], + pub vregs: [u128; 32], pub fpsr: u32, pub fpcr: u32, } From 6b23c641ef1e50da646a55d79fe44b15cb656fa6 Mon Sep 17 00:00:00 2001 From: Clayton Fernalo Date: Sat, 17 May 2025 05:12:35 +0800 Subject: [PATCH 2/3] fix: change deprecation version to 0.2.172 --- src/primitives.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/primitives.rs b/src/primitives.rs index 825511903f33f..a9821f42c748c 100644 --- a/src/primitives.rs +++ b/src/primitives.rs @@ -138,7 +138,7 @@ cfg_if! { #[deprecated(since = "0.2.172", note = "Use i128 instead.")] pub type __int128_t = i128; /// C __uint128_t (alternate name for [__uint128][]) - #[deprecated(since = "0.2.172", note = "Use u128 instead.")] + #[deprecated(since = "0.2.172", note = "Use u128 instead.")] pub type __uint128_t = u128; // NOTE: if you add more platforms to here, you may need to cfg @@ -185,10 +185,10 @@ cfg_if! { ) ))] { /// C `__int128_t` - #[deprecated(since = "1.0", note = "Use i128 instead.")] + #[deprecated(since = "0.2.172", note = "Use i128 instead.")] pub type __int128_t = i128; /// C `__uint128_t` - #[deprecated(since = "1.0", note = "Use ux128 instead.")] + #[deprecated(since = "0.2.172", note = "Use ux128 instead.")] pub type __uint128_t = u128; } } From b4f925c122536ca5ad5f8c3dd2d53af53a08d3ff Mon Sep 17 00:00:00 2001 From: Clayton Fernalo Date: Mon, 26 May 2025 02:37:55 +0800 Subject: [PATCH 3/3] test: Override android libctest for uint128 and int128 --- libc-test/build.rs | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/libc-test/build.rs b/libc-test/build.rs index a31d6ba4878ba..bfc257f15e5ea 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -1986,6 +1986,10 @@ fn test_android(target: &str) { // Just pass all these through, no need for a "struct" prefix "FILE" | "fd_set" | "Dl_info" | "Elf32_Phdr" | "Elf64_Phdr" => ty.to_string(), + "__uint128" | "__uint128_t" => "uint128".to_string(), + + "__int128" | "__int128_t" => "int128".to_string(), + t if is_union => format!("union {t}"), t if t.ends_with("_t") => t.to_string(), @@ -5525,9 +5529,9 @@ fn test_aix(target: &str) { }); cfg.type_name(move |ty, is_struct, is_union| match ty { - "DIR" => ty.to_string(), - "FILE" => ty.to_string(), - "ACTION" => ty.to_string(), + "DIR" => ty.to_string(), + "FILE" => ty.to_string(), + "ACTION" => ty.to_string(), // 'sigval' is a struct in Rust, but a union in C. "sigval" => format!("union sigval"), @@ -5614,9 +5618,9 @@ fn test_aix(target: &str) { // POSIX-compliant versions in the system libc. As a result, // function pointer comparisons between the C and Rust sides // would fail. - "getpwuid_r" | "getpwnam_r" | "getgrgid_r" | "getgrnam_r" - | "aio_cancel" | "aio_error" | "aio_fsync" | "aio_read" - | "aio_return" | "aio_suspend" | "aio_write" | "select" => true, + "getpwuid_r" | "getpwnam_r" | "getgrgid_r" | "getgrnam_r" | "aio_cancel" + | "aio_error" | "aio_fsync" | "aio_read" | "aio_return" | "aio_suspend" + | "aio_write" | "select" => true, // 'getdtablesize' is a constant in the AIX header but it is // a real function in libc which the Rust side is resolved to. @@ -5633,7 +5637,6 @@ fn test_aix(target: &str) { } }); - cfg.volatile_item(|i| { use ctest::VolatileItemKind::*; match i {