Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 2 additions & 5 deletions ci/docker/i686-unknown-linux-gnu/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
FROM ubuntu:23.10
FROM ubuntu:25.04

# FIXME(time): we are using an EOL release because 24.04 changes to 64-bit time
RUN sed -i -E 's/(archive|security)\.ubuntu\.com/old-releases.ubuntu.com/g' \
/etc/apt/sources.list && \
apt-get update && apt-get install -y --no-install-recommends \
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
gcc-multilib \
libc6-dev
Expand Down
7 changes: 2 additions & 5 deletions ci/docker/i686-unknown-linux-musl/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
FROM ubuntu:23.10
FROM ubuntu:25.04

# FIXME(time): we are using an EOL release because 24.04 changes to 64-bit time
RUN sed -i -E 's/(archive|security)\.ubuntu\.com/old-releases.ubuntu.com/g' \
/etc/apt/sources.list && \
dpkg --add-architecture i386 && \
RUN dpkg --add-architecture i386 && \
Comment on lines -1 to +3
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd love to do this for all the 32-bit linux targets, any reason why it's only i686 here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried to do the same for armhf but it was failing due tothe transition to 64 bit time.
Looking around I found a Debian page about the transition towards 64 bit time where they say that x86 ABI wont change while arm got the ABI update. So, the # FIXME here is indeed correct for 32 bit architectures excluding x86.

Copy link
Contributor

@tgross35 tgross35 Jan 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, so x86-32 didn't actually do the 64-bit time_t update yet? If so then this makes sense.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep, correct. As far as I understood, Debian x86 32 will never get the 64 bit time_t.
Since they no longer provide x86 ISOs, the x86 32 stuff is there mainly for retrocompatibility so they preferred to keep it as is.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh that's right, I did hear about that for Debian. In that case I think this is probably close to ready if you want to mark it ready for review.

apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
curl \
Expand Down
57 changes: 24 additions & 33 deletions libc-test/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2056,9 +2056,6 @@ fn test_android(target: &str) {
// Needs a newer Android SDK for the definition
"P_PIDFD" => true,

// Requires Linux kernel 5.6
"VMADDR_CID_LOCAL" => true,

// FIXME(android): conflicts with standard C headers and is tested in
// `linux_termios.rs` below:
"BOTHER" => true,
Expand All @@ -2067,28 +2064,10 @@ fn test_android(target: &str) {

// is a private value for kernel usage normally
"FUSE_SUPER_MAGIC" => true,
// linux 5.12 min
"MPOL_F_NUMA_BALANCING" => true,

// GRND_INSECURE was added in platform-tools-30.0.0
"GRND_INSECURE" => true,

// kernel 5.10 minimum required
"MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ" | "MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ" => true,

// kernel 5.18 minimum
| "MADV_COLD"
| "MADV_DONTNEED_LOCKED"
| "MADV_PAGEOUT"
| "MADV_POPULATE_READ"
| "MADV_POPULATE_WRITE" => true,

// kernel 5.6 minimum required
"IPPROTO_MPTCP" | "IPPROTO_ETHERNET" => true,

// kernel 6.2 minimum
"TUN_F_USO4" | "TUN_F_USO6" | "IFF_NO_CARRIER" => true,

// FIXME(android): NDK r22 minimum required
| "FDB_NOTIFY_BIT"
| "FDB_NOTIFY_INACTIVE_BIT"
Expand Down Expand Up @@ -3664,6 +3643,13 @@ fn config_gnu_bits(target: &str, cfg: &mut ctest::TestGenerator) {
fn test_linux(target: &str) {
assert!(target.contains("linux") || target.contains("l4re"));

// FIXME(linux32): Some 32 bit targets use old kernel headers because newer distros enforce 64
// bit time. Use this to avoid skipping tests also on 64 bit targets.
let pointer_width = env::var("CARGO_CFG_TARGET_POINTER_WIDTH")
.unwrap_or_default()
.parse::<usize>()
.unwrap_or_default();

// target_os
let linux = target.contains("linux");
let l4re = target.contains("l4re");
Expand Down Expand Up @@ -4039,7 +4025,7 @@ fn test_linux(target: &str) {
cfg.skip_struct(move |struct_| {
let ty = struct_.ident();

// FIXME(linux): CI has old headers
// FIXME(linux): Requires >= 6.12 kernel headers. CI has old headers
if ty == "ptp_sys_offset_extended" {
return true;
}
Expand Down Expand Up @@ -4106,14 +4092,17 @@ fn test_linux(target: &str) {
"sctp_initmsg" | "sctp_sndrcvinfo" | "sctp_sndinfo" | "sctp_rcvinfo"
| "sctp_nxtinfo" | "sctp_prinfo" | "sctp_authinfo" => true,

// FIXME(linux): Requires >= 6.8 kernel headers.
// A field was added in 6.8.
// FIXME(musl): A field was added in linux 6.8, not yet in musl
// FIXME(linux32): A field was added in linux 6.8
// https://github.com/torvalds/linux/commit/341ac980eab90ac1f6c22ee9f9da83ed9604d899
// The previous version of the struct was removed in 6.11 due to a bug.
// https://github.com/torvalds/linux/commit/32654bbd6313b4cfc82297e6634fa9725c3c900f
"xdp_umem_reg" => true,
"xdp_umem_reg" if musl || pointer_width == 32 => true,

// FIXME(linux): Requires >= 6.8 kernel headers.
// FIXME(1.0,linux): A new field was added to `xsk_tx_metadata_request` in linux 6.15.
// https://github.com/torvalds/linux/commit/ca4419f15abd19ba8be1e109661b60f9f5b6c9f0
// When updating, consider giving the `__c_anonymous_` prefix to the enum variants
// `xsk_tx_metadata_request` and `xsk_tx_metadata_completion`.
"xsk_tx_metadata" | "xsk_tx_metadata_request" | "xsk_tx_metadata_completion" => true,

// A new field was added in kernel 5.4, this is the old version for backwards compatibility.
Expand Down Expand Up @@ -4422,17 +4411,22 @@ fn test_linux(target: &str) {
true
}

// FIXME(linux): Requires >= 6.6 kernel headers.
"XDP_USE_SG" | "XDP_PKT_CONTD" => true,
// FIXME(linux32): Requires >= 6.6 kernel headers.
"XDP_USE_SG" | "XDP_PKT_CONTD" if pointer_width == 32 => true,

// FIXME(linux): Missing only on this platform for some reason
"PR_MDWE_NO_INHERIT" if gnueabihf => true,

// FIXME(linux): Requires >= 6.8 kernel headers.
// FIXME(musl): Not yet in musl
// FIXME(linux32): Requires >= 6.8 kernel headers.
"XDP_UMEM_TX_SW_CSUM"
| "XDP_TXMD_FLAGS_TIMESTAMP"
| "XDP_TXMD_FLAGS_CHECKSUM"
| "XDP_TX_METADATA" => true,
| "XDP_TX_METADATA"
if musl || pointer_width == 32 =>
{
true
}

// FIXME(linux): Requires >= 6.11 kernel headers.
"XDP_UMEM_TX_METADATA_LEN" => true,
Expand All @@ -4448,9 +4442,6 @@ fn test_linux(target: &str) {
true
}

// FIXME(linux): Requires >= 6.6 kernel headers.
"SYS_fchmodat2" => true,

// FIXME(linux): Requires >= 6.10 kernel headers.
"SYS_mseal" => true,

Expand Down
Loading