@@ -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
0 commit comments