Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
19d25e3
build(deps): bump vmactions/solaris-vm from 1.2.3 to 1.2.6
dependabot[bot] Jan 12, 2026
19f9b52
Add MADV_ZERO for macOS
Thomasdezeeuw Jan 12, 2026
63e61f9
redox: add makedev, major, minor, and fix dev_t
jackpot51 Jan 16, 2026
4b2c13d
cleanup: Also mark reserved fields as private Padding
3v1n0 Dec 2, 2025
0b474fb
cleanup: Also padding is padding!
3v1n0 Dec 2, 2025
a29b577
cleanup: Set unused fields as private Padding
3v1n0 Dec 2, 2025
38bdf64
cleanup: Mark the alignment fields to private
3v1n0 Dec 2, 2025
297f1cf
Make 'tv_nsec' of 'struct timespec' as type 'c_long' and use 'struct …
xingxue-ibm Jan 20, 2026
be1fe2d
Update SO_* constants for Fuchsia
SergeyUlanov Jan 22, 2026
b901b67
qurt: Fix type visibility and defs
androm3da Jan 19, 2026
8457db5
Add PTRACE_SET_SYSCALL_INFO constant
Marcondiro Jan 21, 2026
6fb8a8a
types: Fix wording of Padding::uninit() comment
3v1n0 Jan 26, 2026
4f3c447
fix(redox): incorrect values for `PTHREAD_MUTEX_{NORMAL, RECURSIVE}`
Andy-Python-Programmer Jan 27, 2026
23842d7
linux: add CAN error types
hashemmm96 Jan 27, 2026
6a749ca
Add more kqueue related constants for OpenBSD
Thomasdezeeuw Jan 27, 2026
836c606
fix(ci): update aports Git repo URL
JohnTitor Jan 28, 2026
3d202aa
Add siginfo_t::si_status
Thomasdezeeuw Jan 27, 2026
f96d01b
Fix fields
Thomasdezeeuw Jan 27, 2026
b7b5e17
Add a definition of max_align_t to nto
darkwisebear Jan 14, 2026
22d61d9
fix struct ptrace_thread_state on OpenBSD
semarie Jan 27, 2026
61874d8
OpenBSD: const correct tm_zone in struct tm
semarie Jan 27, 2026
ce0bd36
triagebot: Switch to `check-commits = "uncanonicalized"`
tgross35 Jan 29, 2026
ffeb6b9
triagebot: Simplify mention and autolabel config
tgross35 Jan 29, 2026
b7382a4
aix: Temporarily skip checking powerpc64-ibm-aix builds
tgross35 Jan 29, 2026
ebea0e7
triagebot: Add an autolabel for FreeBSD
tgross35 Jan 29, 2026
0e3653c
build(deps): bump vmactions/solaris-vm from 1.2.6 to 1.2.8
dependabot[bot] Feb 2, 2026
206e254
illumos: Add _CS_PATH constant
LiamSnow Feb 3, 2026
df80fe0
OpenBSD: add `ppoll`
kotauskas Feb 4, 2026
80743a1
links old version of tc{g,s}etattr for glibc on mips(64) and sparc(64)
usamoi Jan 24, 2026
2d400c8
links old version for glibc on mips{32,64}r6
usamoi Jan 24, 2026
4b6e0ad
fix libc-test ctest on mips64 and sparc64
usamoi Jan 28, 2026
aa6a84e
checks termios size in the baud test
usamoi Jan 28, 2026
1f7ace0
Remove `__item!`.
nnethercote Feb 4, 2026
f08368c
Macro cleanups.
nnethercote Feb 4, 2026
29ec6dd
CI linux: Move to Ubuntu25.04 for i686
Marcondiro Feb 5, 2026
5aced37
tests linux: do not skip tests requiring kernel <= 6.8
Marcondiro Feb 5, 2026
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
2 changes: 1 addition & 1 deletion .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,7 @@ jobs:
steps:
- uses: actions/checkout@v6
- name: test on Solaris
uses: vmactions/solaris-vm@v1.2.3
uses: vmactions/solaris-vm@v1.2.8
if: contains(matrix.target, 'solaris')
with:
release: "11.4-gcc"
Expand Down
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 && \
apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
curl \
Expand Down
2 changes: 1 addition & 1 deletion ci/install-musl.sh
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ rm -rf "$musl"

# Alpine follows stable kernel releases, 3.20 uses Linux 6.6 headers.
alpine_version=3.20
alpine_git=https://gitlab.alpinelinux.org/alpine/aports
alpine_git=https://git.alpinelinux.org/aports

# This routine piggybacks on: https://git.alpinelinux.org/aports/tree/main/linux-headers?h=3.20-stable
git clone -n --depth=1 --filter=tree:0 -b "${alpine_version}-stable" "$alpine_git"
Expand Down
3 changes: 2 additions & 1 deletion ci/verify-build.py
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,8 @@ class TargetResult:
Target("powerpc-unknown-netbsd", dist=False),
Target("powerpc-wrs-vxworks", dist=False),
Target("powerpc-wrs-vxworks-spe", dist=False),
Target("powerpc64-ibm-aix", dist=False),
# FIXME(rust#151818) doesn't build with the 2026-01-28 nightly
# Target("powerpc64-ibm-aix", dist=False),
Target("powerpc64-unknown-freebsd", dist=False),
Target("powerpc64-wrs-vxworks", dist=False),
Target("riscv32-wrs-vxworks", dist=False),
Expand Down
117 changes: 55 additions & 62 deletions libc-test/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2161,9 +2161,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 @@ -2172,28 +2169,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 @@ -3810,6 +3789,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 @@ -3837,6 +3823,7 @@ fn test_linux(target: &str) {
let ppc64 = target.contains("powerpc64");
let ppc32 = ppc && !ppc64;
let s390x = target.contains("s390x");
let sparc = target.contains("sparc");
let sparc64 = target.contains("sparc64");
let x32 = target.contains("x32");
let x86_32 = target.contains("i686");
Expand Down Expand Up @@ -4005,6 +3992,7 @@ fn test_linux(target: &str) {
(gnu, "linux/aio_abi.h"),
"linux/can.h",
"linux/can/bcm.h",
"linux/can/error.h",
"linux/can/raw.h",
"linux/can/j1939.h",
"linux/cn_proc.h",
Expand Down Expand Up @@ -4184,7 +4172,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 @@ -4254,14 +4242,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 @@ -4573,17 +4564,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 @@ -4599,9 +4595,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 Expand Up @@ -4647,6 +4640,9 @@ fn test_linux(target: &str) {
// Linux 6.14
"AT_EXECVE_CHECK" => true,

// FIXME(linux): Requires >= 6.16 kernel headers.
"PTRACE_SET_SYSCALL_INFO" => true,

_ => false,
}
});
Expand Down Expand Up @@ -4956,25 +4952,38 @@ fn test_linux(target: &str) {
if gnu {
// old constants, so tests fail if glibc is too new
cfg.skip_const(|s| {
// grep -E -h '^B([0-9])*$' libc-test/semver/*
[
"B50", "B75", "B110", "B134", "B150", "B200", "B300", "B600", "B1200", "B1800",
"B2400", "B4800", "B9600", "B19200", "B38400", "EXTA", "EXTB", "B57600", "B115200",
"B230400", "B460800", "B500000", "B576000", "B921600", "B1000000", "B1152000",
"B1500000", "B2000000", "B2500000", "B3000000", "B3500000", "B4000000",
"EXTA", "EXTB", "B0", "B1000000", "B110", "B115200", "B1152000", "B1200", "B134",
"B14400", "B150", "B1500000", "B153600", "B1800", "B19200", "B200", "B2000000",
"B230400", "B2400", "B2500000", "B28800", "B300", "B3000000", "B307200",
"B3500000", "B38400", "B4000000", "B460800", "B4800", "B50", "B500000", "B57600",
"B576000", "B600", "B614400", "B7200", "B75", "B76800", "B921600", "B9600",
]
.contains(&s.ident())
});
if mips || sparc {
cfg.skip_const(|s| s.ident() == "NCCS");
}
// old symbols, so tests fail if glibc is too new
cfg.skip_fn_ptrcheck(|s| {
[
"cfgetispeed",
"cfgetospeed",
"cfsetispeed",
"cfsetospeed",
"cfsetspeed",
]
.contains(&s)
// note: `skip_fn_ptrcheck` overrides the previous function
cfg.skip_fn_ptrcheck(move |s| {
let mut result = false;
result = result || s == "cfgetispeed";
result = result || s == "cfgetospeed";
result = result || s == "cfsetispeed";
result = result || s == "cfsetospeed";
result = result || s == "cfsetspeed";
if mips || sparc {
result = result || s == "tcgetattr";
result = result || s == "tcsetattr";
}
result
});
// old structs, so tests fail if glibc is too new
if mips || sparc {
cfg.skip_struct(|s| s.ident() == "termios");
}
}

ctest::generate_test(&mut cfg, "../src/lib.rs", "ctest_output.rs").unwrap();
Expand Down Expand Up @@ -5667,16 +5676,6 @@ fn test_aix(target: &str) {
// header does not define a separate standalone union type for it.
("ld_info", "_file") => true,

// On AIX, when _ALL_SOURCE is defined, the types of the following fields
// differ from those used when _XOPEN_SOURCE is defined. The former uses
// 'struct st_timespec', while the latter uses 'struct timespec'.
("stat", "st_atim") => true,
("stat", "st_mtim") => true,
("stat", "st_ctim") => true,
("stat64", "st_atim") => true,
("stat64", "st_mtim") => true,
("stat64", "st_ctim") => true,

_ => false,
}
});
Expand All @@ -5689,12 +5688,6 @@ fn test_aix(target: &str) {
// The field 'data' is actually a unnamed union in the AIX header.
"pollfd_ext" if field.ident() == "data" => true,

// On AIX, <stat.h> declares 'tv_nsec' as 'long', but the
// underlying system calls return a 32-bit value in both 32-bit
// and 64-bit modes. In the 'libc' crate it is declared as 'i32'
// to match the system call. Skip this field.
"timespec" if field.ident() == "tv_nsec" => true,

_ => false,
}
});
Expand Down
1 change: 1 addition & 0 deletions libc-test/semver/apple.txt
Original file line number Diff line number Diff line change
Expand Up @@ -872,6 +872,7 @@ MADV_NORMAL
MADV_RANDOM
MADV_SEQUENTIAL
MADV_WILLNEED
MADV_ZERO
MADV_ZERO_WIRED_PAGES
MAP_COPY
MAP_FILE
Expand Down
3 changes: 3 additions & 0 deletions libc-test/semver/fuchsia.txt
Original file line number Diff line number Diff line change
Expand Up @@ -956,7 +956,9 @@ SO_BINDTODEVICE
SO_BINDTOIFINDEX
SO_BSDCOMPAT
SO_BUSY_POLL
SO_COOKIE
SO_DOMAIN
SO_FUCHSIA_MARK
SO_MARK
SO_NO_CHECK
SO_ORIGINAL_DST
Expand All @@ -969,6 +971,7 @@ SO_RCVBUFFORCE
SO_RXQ_OVFL
SO_SNDBUFFORCE
SO_TIMESTAMP
SO_TIMESTAMPNS
SPLICE_F_GIFT
SPLICE_F_MORE
SPLICE_F_MOVE
Expand Down
1 change: 1 addition & 0 deletions libc-test/semver/illumos.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ TFD_CLOEXEC
TFD_NONBLOCK
TFD_TIMER_ABSTIME
TFD_TIMER_CANCEL_ON_SET
_CS_PATH
posix_fadvise
posix_fallocate
posix_spawn_file_actions_addfchdir_np
Expand Down
1 change: 1 addition & 0 deletions libc-test/semver/linux-gnu.txt
Original file line number Diff line number Diff line change
Expand Up @@ -348,6 +348,7 @@ PR_SET_VMA_ANON_NAME
PTHREAD_MUTEX_ADAPTIVE_NP
PTRACE_GET_SYSCALL_INFO
PTRACE_GET_SYSCALL_USER_DISPATCH_CONFIG
PTRACE_SET_SYSCALL_INFO
PTRACE_SET_SYSCALL_USER_DISPATCH_CONFIG
PTRACE_SYSCALL_INFO_ENTRY
PTRACE_SYSCALL_INFO_EXIT
Expand Down
62 changes: 62 additions & 0 deletions libc-test/semver/linux.txt
Original file line number Diff line number Diff line change
Expand Up @@ -230,11 +230,73 @@ CANXL_PRIO_MASK
CANXL_SEC
CANXL_XLF
CAN_BCM
CAN_BUS_OFF_THRESHOLD
CAN_EFF_FLAG
CAN_EFF_ID_BITS
CAN_EFF_MASK
CAN_ERROR_PASSIVE_THRESHOLD
CAN_ERROR_WARNING_THRESHOLD
CAN_ERR_ACK
CAN_ERR_BUSERROR
CAN_ERR_BUSOFF
CAN_ERR_CNT
CAN_ERR_CRTL
CAN_ERR_CRTL_ACTIVE
CAN_ERR_CRTL_RX_OVERFLOW
CAN_ERR_CRTL_RX_PASSIVE
CAN_ERR_CRTL_RX_WARNING
CAN_ERR_CRTL_TX_OVERFLOW
CAN_ERR_CRTL_TX_PASSIVE
CAN_ERR_CRTL_TX_WARNING
CAN_ERR_CRTL_UNSPEC
CAN_ERR_DLC
CAN_ERR_FLAG
CAN_ERR_LOSTARB
CAN_ERR_LOSTARB_UNSPEC
CAN_ERR_MASK
CAN_ERR_PROT
CAN_ERR_PROT_ACTIVE
CAN_ERR_PROT_BIT
CAN_ERR_PROT_BIT0
CAN_ERR_PROT_BIT1
CAN_ERR_PROT_FORM
CAN_ERR_PROT_LOC_ACK
CAN_ERR_PROT_LOC_ACK_DEL
CAN_ERR_PROT_LOC_CRC_DEL
CAN_ERR_PROT_LOC_CRC_SEQ
CAN_ERR_PROT_LOC_DATA
CAN_ERR_PROT_LOC_DLC
CAN_ERR_PROT_LOC_EOF
CAN_ERR_PROT_LOC_ID04_00
CAN_ERR_PROT_LOC_ID12_05
CAN_ERR_PROT_LOC_ID17_13
CAN_ERR_PROT_LOC_ID20_18
CAN_ERR_PROT_LOC_ID28_21
CAN_ERR_PROT_LOC_IDE
CAN_ERR_PROT_LOC_INTERM
CAN_ERR_PROT_LOC_RES0
CAN_ERR_PROT_LOC_RES1
CAN_ERR_PROT_LOC_RTR
CAN_ERR_PROT_LOC_SOF
CAN_ERR_PROT_LOC_SRTR
CAN_ERR_PROT_LOC_UNSPEC
CAN_ERR_PROT_OVERLOAD
CAN_ERR_PROT_STUFF
CAN_ERR_PROT_TX
CAN_ERR_PROT_UNSPEC
CAN_ERR_RESTARTED
CAN_ERR_TRX
CAN_ERR_TRX_CANH_NO_WIRE
CAN_ERR_TRX_CANH_SHORT_TO_BAT
CAN_ERR_TRX_CANH_SHORT_TO_GND
CAN_ERR_TRX_CANH_SHORT_TO_VCC
CAN_ERR_TRX_CANL_NO_WIRE
CAN_ERR_TRX_CANL_SHORT_TO_BAT
CAN_ERR_TRX_CANL_SHORT_TO_CANH
CAN_ERR_TRX_CANL_SHORT_TO_GND
CAN_ERR_TRX_CANL_SHORT_TO_VCC
CAN_ERR_TRX_UNSPEC
CAN_ERR_TX_TIMEOUT
CAN_FD_FRAME
CAN_INV_FILTER
CAN_ISOTP
Expand Down
Loading