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