Skip to content

Commit c309140

Browse files
author
Jonah Petri
committed
address review feedback
1 parent d234f7d commit c309140

3 files changed

Lines changed: 174 additions & 165 deletions

File tree

ci/run-docker.sh

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,9 @@ run() {
4444
fi
4545
fi
4646

47-
if [[ "$run_target" = *"uclibc"* ]]; then
48-
if [ -n "${TEST_UCLIBC_TIIME64:-}" ]; then
49-
build_args+=("--build-arg=TEST_UCLIBC_TIIME64=1")
50-
export RUSTFLAGS="$RUSTFLAGS --cfg=libc_unstable_uclibc_time64"
51-
fi
47+
if [ -n "${TEST_UCLIBC_TIIME64:-}" ]; then
48+
build_args+=("--build-arg=TEST_UCLIBC_TIIME64=1")
49+
export RUSTFLAGS="$RUSTFLAGS --cfg=libc_unstable_uclibc_time64"
5250
fi
5351

5452
# use -f so we can use ci/ as build context

libc-test/build.rs

Lines changed: 170 additions & 160 deletions
Original file line numberDiff line numberDiff line change
@@ -3942,6 +3942,12 @@ fn test_linux(target: &str) {
39423942
"sys/fanotify.h",
39433943
"sys/auxv.h",
39443944
(gnu || musl, "linux/close_range.h"),
3945+
(uclibc, "linux/fanotify.h"),
3946+
(uclibc, "linux/auxvec.h"),
3947+
(uclibc, "linux/close_range.h"),
3948+
(uclibc, "linux/if_packet.h"),
3949+
(uclibc, "linux/elf-em.h"),
3950+
(uclibc, "sys/resource.h"),
39453951
);
39463952
}
39473953

@@ -4313,6 +4319,170 @@ fn test_linux(target: &str) {
43134319
}
43144320
}
43154321

4322+
if uclibc {
4323+
match name {
4324+
// The canonical uClibc toolchain, bootlin bleeding-edge-2024.02-1,
4325+
// uses linux 5.15, so several constants are not available.
4326+
4327+
// requires linux 5.16
4328+
"PR_SCHED_CORE_SCOPE_PROCESS_GROUP"
4329+
| "PR_SCHED_CORE_SCOPE_THREAD_GROUP"
4330+
| "PR_SCHED_CORE_SCOPE_THREAD"
4331+
| "NF_NETDEV_EGRESS"
4332+
| "SO_RESERVE_MEM" => return true,
4333+
4334+
// TLS_CIPHER_SM4_[GC]CM requires linux 5.16
4335+
"TLS_CIPHER_SM4_CCM_IV_SIZE"
4336+
| "TLS_CIPHER_SM4_CCM_KEY_SIZE"
4337+
| "TLS_CIPHER_SM4_CCM_REC_SEQ_SIZE"
4338+
| "TLS_CIPHER_SM4_CCM_SALT_SIZE"
4339+
| "TLS_CIPHER_SM4_CCM_TAG_SIZE"
4340+
| "TLS_CIPHER_SM4_CCM"
4341+
| "TLS_CIPHER_SM4_GCM_IV_SIZE"
4342+
| "TLS_CIPHER_SM4_GCM_KEY_SIZE"
4343+
| "TLS_CIPHER_SM4_GCM_REC_SEQ_SIZE"
4344+
| "TLS_CIPHER_SM4_GCM_SALT_SIZE"
4345+
| "TLS_CIPHER_SM4_GCM_TAG_SIZE"
4346+
| "TLS_CIPHER_SM4_GCM" => return true,
4347+
4348+
// requires linux 5.17
4349+
"PR_SET_VMA_ANON_NAME"
4350+
| "PR_SET_VMA"
4351+
| "RTNLGRP_MCTP_IFADDR" => return true,
4352+
4353+
// requires linux 5.18
4354+
"RTNLGRP_STATS"
4355+
| "RTNLGRP_TUNNEL"
4356+
| "TLS_TX_ZEROCOPY_RO"
4357+
| "MADV_DONTNEED_LOCKED"
4358+
| "NFQA_PRIORITY"
4359+
| "SO_TXREHASH" => return true,
4360+
4361+
// requires linux 5.19
4362+
"SECCOMP_FILTER_FLAG_WAIT_KILLABLE_RECV"
4363+
| "NLM_F_BULK"
4364+
| "SO_RCVMARK"
4365+
| "TLS_INFO_ZC_RO_TX" => return true,
4366+
4367+
// CAN_* consts requiring linux 6.0
4368+
"CAN_BUS_OFF_THRESHOLD"
4369+
| "CAN_CTRLMODE_TDC_AUTO"
4370+
| "CAN_CTRLMODE_TDC_MANUAL"
4371+
| "CAN_ERR_CNT"
4372+
| "CAN_ERROR_PASSIVE_THRESHOLD"
4373+
| "CAN_ERROR_WARNING_THRESHOLD" => return true,
4374+
4375+
// requires linux 6.0
4376+
"IFF_NO_CARRIER"
4377+
| "TLS_INFO_RX_NO_PAD"
4378+
| "TLS_RX_EXPECT_NO_PAD" => return true,
4379+
4380+
// CAN_* consts requiring linux 6.1
4381+
"CAN_RAW_XL_FRAMES"
4382+
| "CANXL_HDR_SIZE"
4383+
| "CANXL_MAX_DLC_MASK"
4384+
| "CANXL_MAX_DLC"
4385+
| "CANXL_MAX_DLEN"
4386+
| "CANXL_MAX_MTU"
4387+
| "CANXL_MIN_DLC"
4388+
| "CANXL_MIN_DLEN"
4389+
| "CANXL_MIN_MTU"
4390+
| "CANXL_MTU"
4391+
| "CANXL_PRIO_BITS"
4392+
| "CANXL_PRIO_MASK"
4393+
| "CANXL_SEC"
4394+
| "CANXL_XLF" => return true,
4395+
4396+
// TLS_CIPHER_ARIA_GCM_* requires linux 6.1
4397+
"TLS_CIPHER_ARIA_GCM_128_IV_SIZE"
4398+
| "TLS_CIPHER_ARIA_GCM_128_KEY_SIZE"
4399+
| "TLS_CIPHER_ARIA_GCM_128_REC_SEQ_SIZE"
4400+
| "TLS_CIPHER_ARIA_GCM_128_SALT_SIZE"
4401+
| "TLS_CIPHER_ARIA_GCM_128_TAG_SIZE"
4402+
| "TLS_CIPHER_ARIA_GCM_128"
4403+
| "TLS_CIPHER_ARIA_GCM_256_IV_SIZE"
4404+
| "TLS_CIPHER_ARIA_GCM_256_KEY_SIZE"
4405+
| "TLS_CIPHER_ARIA_GCM_256_REC_SEQ_SIZE"
4406+
| "TLS_CIPHER_ARIA_GCM_256_SALT_SIZE"
4407+
| "TLS_CIPHER_ARIA_GCM_256_TAG_SIZE"
4408+
| "TLS_CIPHER_ARIA_GCM_256" => return true,
4409+
4410+
// requires linux 6.2
4411+
"ALG_SET_KEY_BY_KEY_SERIAL"
4412+
| "PACKET_FANOUT_FLAG_IGNORE_OUTGOING"
4413+
| "SOF_TIMESTAMPING_OPT_ID_TCP"
4414+
| "TUN_F_USO4"
4415+
| "TUN_F_USO6" => return true,
4416+
4417+
// FAN_* consts require kernel 6.3
4418+
"FAN_INFO"
4419+
| "FAN_RESPONSE_INFO_AUDIT_RULE"
4420+
| "FAN_RESPONSE_INFO_NONE" => return true,
4421+
4422+
// requires linux 6.3
4423+
"MFD_EXEC"
4424+
| "MFD_NOEXEC_SEAL"
4425+
| "PR_GET_MDWE"
4426+
| "PR_SET_MDWE" => return true,
4427+
4428+
// requires linux 6.4
4429+
"PACKET_VNET_HDR_SZ" => return true,
4430+
4431+
// requires linux 6.5
4432+
"SO_PASSPIDFD"
4433+
| "SO_PEERPIDFD" => return true,
4434+
4435+
// requires linux 6.6
4436+
"PR_MDWE_NO_INHERIT"
4437+
| "PR_MDWE_REFUSE_EXEC_GAIN" => return true,
4438+
4439+
// defined as a synonym for EM_ARC_COMPACT in gnu but not uclibc
4440+
"EM_ARC_A5" => return true,
4441+
4442+
/*
4443+
Here are a list of kernel UAPI constants which appear in linux/ headers,
4444+
but cannot be imported due to conflicts with the uclibc headers.
4445+
The conflicting linux/ header is noted.
4446+
*/
4447+
// linux/signal.h
4448+
"BUS_MCEERR_AO"
4449+
| "BUS_MCEERR_AR"
4450+
// linux/termios.h
4451+
| "EXTPROC"
4452+
// linux/inotify.h
4453+
| "IN_MASK_CREATE"
4454+
// linux/in.h
4455+
| "IPPROTO_BEETPH"
4456+
| "IPPROTO_ETHERNET"
4457+
| "IPPROTO_MPLS"
4458+
| "IPPROTO_MPTCP"
4459+
// linux/in6.h
4460+
| "IPV6_HDRINCL"
4461+
| "IPV6_MULTICAST_ALL"
4462+
| "IPV6_PMTUDISC_INTERFACE"
4463+
| "IPV6_PMTUDISC_OMIT"
4464+
| "IPV6_ROUTER_ALERT_ISOLATE"
4465+
// linux/elf.h
4466+
| "NT_PRFPREG"
4467+
// linux/sem.h
4468+
| "SEM_STAT_ANY"
4469+
// linux/shm.h
4470+
| "SHM_EXEC"
4471+
// linux/signal.h
4472+
| "SI_DETHREAD"
4473+
| "TRAP_BRANCH"
4474+
| "TRAP_HWBKPT"
4475+
| "TRAP_UNK"
4476+
// linux/timerfd.h
4477+
| "TFD_TIMER_CANCEL_ON_SET"
4478+
// linux/udp.h
4479+
| "UDP_GRO"
4480+
| "UDP_SEGMENT" => return true,
4481+
4482+
_ => (),
4483+
}
4484+
}
4485+
43164486
match name {
43174487
// These constants are not available if gnu headers have been included
43184488
// and can therefore not be tested here
@@ -4376,166 +4546,6 @@ fn test_linux(target: &str) {
43764546
// Skip as this signal codes and trap reasons need newer headers
43774547
"TRAP_PERF" => true,
43784548

4379-
// constants not available in uclibc 1.0.45
4380-
// but defined outside the uclibc library,
4381-
// e.g. file format constants or kernel-defined
4382-
// constants.
4383-
"ALG_SET_KEY_BY_KEY_SERIAL"
4384-
| "AT_MINSIGSTKSZ"
4385-
| "BUS_MCEERR_AO"
4386-
| "BUS_MCEERR_AR"
4387-
| "CAN_BUS_OFF_THRESHOLD"
4388-
| "CAN_CTRLMODE_TDC_AUTO"
4389-
| "CAN_CTRLMODE_TDC_MANUAL"
4390-
| "CAN_ERR_CNT"
4391-
| "CAN_ERROR_PASSIVE_THRESHOLD"
4392-
| "CAN_ERROR_WARNING_THRESHOLD"
4393-
| "CAN_RAW_XL_FRAMES"
4394-
| "CANXL_HDR_SIZE"
4395-
| "CANXL_MAX_DLC_MASK"
4396-
| "CANXL_MAX_DLC"
4397-
| "CANXL_MAX_DLEN"
4398-
| "CANXL_MAX_MTU"
4399-
| "CANXL_MIN_DLC"
4400-
| "CANXL_MIN_DLEN"
4401-
| "CANXL_MIN_MTU"
4402-
| "CANXL_MTU"
4403-
| "CANXL_PRIO_BITS"
4404-
| "CANXL_PRIO_MASK"
4405-
| "CANXL_SEC"
4406-
| "CANXL_XLF"
4407-
| "CLOSE_RANGE_CLOEXEC"
4408-
| "CLOSE_RANGE_UNSHARE"
4409-
| "EM_ARC_A5"
4410-
| "EM_OPENRISC"
4411-
| "EM_TILEGX"
4412-
| "EM_TILEPRO"
4413-
| "EXTPROC"
4414-
| "FAN_ATTRIB"
4415-
| "FAN_AUDIT"
4416-
| "FAN_CREATE"
4417-
| "FAN_DELETE_SELF"
4418-
| "FAN_DELETE"
4419-
| "FAN_ENABLE_AUDIT"
4420-
| "FAN_EPIDFD"
4421-
| "FAN_EVENT_INFO_TYPE_DFID_NAME"
4422-
| "FAN_EVENT_INFO_TYPE_DFID"
4423-
| "FAN_EVENT_INFO_TYPE_ERROR"
4424-
| "FAN_EVENT_INFO_TYPE_FID"
4425-
| "FAN_EVENT_INFO_TYPE_NEW_DFID_NAME"
4426-
| "FAN_EVENT_INFO_TYPE_OLD_DFID_NAME"
4427-
| "FAN_EVENT_INFO_TYPE_PIDFD"
4428-
| "FAN_FS_ERROR"
4429-
| "FAN_INFO"
4430-
| "FAN_MARK_EVICTABLE"
4431-
| "FAN_MARK_FILESYSTEM"
4432-
| "FAN_MARK_IGNORE_SURV"
4433-
| "FAN_MARK_IGNORE"
4434-
| "FAN_MARK_INODE"
4435-
| "FAN_MOVE_SELF"
4436-
| "FAN_MOVE"
4437-
| "FAN_MOVED_FROM"
4438-
| "FAN_MOVED_TO"
4439-
| "FAN_NOPIDFD"
4440-
| "FAN_OPEN_EXEC_PERM"
4441-
| "FAN_OPEN_EXEC"
4442-
| "FAN_RENAME"
4443-
| "FAN_REPORT_DFID_NAME_TARGET"
4444-
| "FAN_REPORT_DFID_NAME"
4445-
| "FAN_REPORT_DIR_FID"
4446-
| "FAN_REPORT_FID"
4447-
| "FAN_REPORT_NAME"
4448-
| "FAN_REPORT_PIDFD"
4449-
| "FAN_REPORT_TARGET_FID"
4450-
| "FAN_REPORT_TID"
4451-
| "FAN_RESPONSE_INFO_AUDIT_RULE"
4452-
| "FAN_RESPONSE_INFO_NONE"
4453-
| "IFF_NO_CARRIER"
4454-
| "IN_MASK_CREATE"
4455-
| "IPPROTO_BEETPH"
4456-
| "IPPROTO_ETHERNET"
4457-
| "IPPROTO_MPLS"
4458-
| "IPPROTO_MPTCP"
4459-
| "IPV6_HDRINCL"
4460-
| "IPV6_MULTICAST_ALL"
4461-
| "IPV6_PMTUDISC_INTERFACE"
4462-
| "IPV6_PMTUDISC_OMIT"
4463-
| "IPV6_ROUTER_ALERT_ISOLATE"
4464-
| "MADV_DONTNEED_LOCKED"
4465-
| "MFD_EXEC"
4466-
| "MFD_NOEXEC_SEAL"
4467-
| "NF_NETDEV_EGRESS"
4468-
| "NFQA_PRIORITY"
4469-
| "NLM_F_BULK"
4470-
| "NT_PRFPREG"
4471-
| "PACKET_FANOUT_FLAG_IGNORE_OUTGOING"
4472-
| "PACKET_MR_UNICAST"
4473-
| "PACKET_VNET_HDR_SZ"
4474-
| "POSIX_SPAWN_SETSID"
4475-
| "PR_GET_MDWE"
4476-
| "PR_MDWE_NO_INHERIT"
4477-
| "PR_MDWE_REFUSE_EXEC_GAIN"
4478-
| "PR_SCHED_CORE_SCOPE_PROCESS_GROUP"
4479-
| "PR_SCHED_CORE_SCOPE_THREAD_GROUP"
4480-
| "PR_SCHED_CORE_SCOPE_THREAD"
4481-
| "PR_SET_MDWE"
4482-
| "PR_SET_VMA_ANON_NAME"
4483-
| "PR_SET_VMA"
4484-
| "RTNLGRP_MCTP_IFADDR"
4485-
| "RTNLGRP_STATS"
4486-
| "RTNLGRP_TUNNEL"
4487-
| "RUSAGE_THREAD"
4488-
| "SECCOMP_FILTER_FLAG_WAIT_KILLABLE_RECV"
4489-
| "SEM_STAT_ANY"
4490-
| "SHM_EXEC"
4491-
| "SI_DETHREAD"
4492-
| "SO_PASSPIDFD"
4493-
| "SO_PEERPIDFD"
4494-
| "SO_RCVMARK"
4495-
| "SO_RESERVE_MEM"
4496-
| "SO_TXREHASH"
4497-
| "SOF_TIMESTAMPING_OPT_ID_TCP"
4498-
| "TFD_TIMER_CANCEL_ON_SET"
4499-
| "TLS_CIPHER_ARIA_GCM_128_IV_SIZE"
4500-
| "TLS_CIPHER_ARIA_GCM_128_KEY_SIZE"
4501-
| "TLS_CIPHER_ARIA_GCM_128_REC_SEQ_SIZE"
4502-
| "TLS_CIPHER_ARIA_GCM_128_SALT_SIZE"
4503-
| "TLS_CIPHER_ARIA_GCM_128_TAG_SIZE"
4504-
| "TLS_CIPHER_ARIA_GCM_128"
4505-
| "TLS_CIPHER_ARIA_GCM_256_IV_SIZE"
4506-
| "TLS_CIPHER_ARIA_GCM_256_KEY_SIZE"
4507-
| "TLS_CIPHER_ARIA_GCM_256_REC_SEQ_SIZE"
4508-
| "TLS_CIPHER_ARIA_GCM_256_SALT_SIZE"
4509-
| "TLS_CIPHER_ARIA_GCM_256_TAG_SIZE"
4510-
| "TLS_CIPHER_ARIA_GCM_256"
4511-
| "TLS_CIPHER_SM4_CCM_IV_SIZE"
4512-
| "TLS_CIPHER_SM4_CCM_KEY_SIZE"
4513-
| "TLS_CIPHER_SM4_CCM_REC_SEQ_SIZE"
4514-
| "TLS_CIPHER_SM4_CCM_SALT_SIZE"
4515-
| "TLS_CIPHER_SM4_CCM_TAG_SIZE"
4516-
| "TLS_CIPHER_SM4_CCM"
4517-
| "TLS_CIPHER_SM4_GCM_IV_SIZE"
4518-
| "TLS_CIPHER_SM4_GCM_KEY_SIZE"
4519-
| "TLS_CIPHER_SM4_GCM_REC_SEQ_SIZE"
4520-
| "TLS_CIPHER_SM4_GCM_SALT_SIZE"
4521-
| "TLS_CIPHER_SM4_GCM_TAG_SIZE"
4522-
| "TLS_CIPHER_SM4_GCM"
4523-
| "TLS_INFO_RX_NO_PAD"
4524-
| "TLS_INFO_ZC_RO_TX"
4525-
| "TLS_RX_EXPECT_NO_PAD"
4526-
| "TLS_TX_ZEROCOPY_RO"
4527-
| "TRAP_BRANCH"
4528-
| "TRAP_HWBKPT"
4529-
| "TRAP_UNK"
4530-
| "TUN_F_USO4"
4531-
| "TUN_F_USO6"
4532-
| "UDP_GRO"
4533-
| "UDP_SEGMENT"
4534-
if uclibc =>
4535-
{
4536-
true
4537-
}
4538-
45394549
// headers conflicts with linux/pidfd.h
45404550
"PIDFD_NONBLOCK" => true,
45414551
// Linux >= 6.9

src/unix/linux_like/linux/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1386,6 +1386,7 @@ s_no_extra_traits! {
13861386
}
13871387

13881388
pub const POSIX_SPAWN_USEVFORK: c_short = 64;
1389+
#[cfg(not(target_env = "uclibc"))]
13891390
pub const POSIX_SPAWN_SETSID: c_short = 128;
13901391

13911392
pub const F_SEAL_FUTURE_WRITE: c_int = 0x0010;

0 commit comments

Comments
 (0)