Skip to content

Commit 8f8451e

Browse files
author
Jonah Petri
committed
address review feedback
1 parent b55a0ee commit 8f8451e

File tree

4 files changed

+174
-168
lines changed

4 files changed

+174
-168
lines changed

.github/workflows/ci.yaml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -227,9 +227,6 @@ jobs:
227227
- target: x86_64-unknown-linux-musl
228228
env: { RUST_LIBC_UNSTABLE_MUSL_V1_2_3: 1 }
229229
artifact-tag: new-musl
230-
- target: armv7-unknown-linux-uclibceabihf
231-
- target: armv7-unknown-linux-uclibceabihf
232-
env: { TEST_UCLIBC_TIIME64: 1 }
233230
# FIXME: It seems some items in `src/unix/mod.rs` aren't defined on redox actually.
234231
# - target: x86_64-unknown-redox
235232

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
@@ -3947,6 +3947,12 @@ fn test_linux(target: &str) {
39473947
"sys/fanotify.h",
39483948
"sys/auxv.h",
39493949
(gnu || musl, "linux/close_range.h"),
3950+
(uclibc, "linux/fanotify.h"),
3951+
(uclibc, "linux/auxvec.h"),
3952+
(uclibc, "linux/close_range.h"),
3953+
(uclibc, "linux/if_packet.h"),
3954+
(uclibc, "linux/elf-em.h"),
3955+
(uclibc, "sys/resource.h"),
39503956
);
39513957
}
39523958

@@ -4319,6 +4325,170 @@ fn test_linux(target: &str) {
43194325
}
43204326
}
43214327

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

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