@@ -331,9 +331,6 @@ fn test_apple(target: &str) {
331331 return true ;
332332 }
333333 match ty {
334- // FIXME(union): actually a union
335- "sigval" => true ,
336-
337334 // FIXME(macos): The size is changed in recent macOSes.
338335 "malloc_zone_t" => true ,
339336 // it is a moving target, changing through versions
@@ -429,14 +426,6 @@ fn test_apple(target: &str) {
429426 }
430427 } ) ;
431428
432- cfg. skip_field_type ( move |struct_, field| {
433- match ( struct_, field) {
434- // FIXME(union): actually a union
435- ( "sigevent" , "sigev_value" ) => true ,
436- _ => false ,
437- }
438- } ) ;
439-
440429 cfg. volatile_item ( |i| {
441430 use ctest:: VolatileItemKind :: * ;
442431 match i {
@@ -576,23 +565,8 @@ fn test_openbsd(target: &str) {
576565 "sys/param.h" ,
577566 }
578567
579- cfg. skip_struct ( move |ty| {
580- if ty. starts_with ( "__c_anonymous_" ) {
581- return true ;
582- }
583- match ty {
584- // FIXME(union): actually a union
585- "sigval" => true ,
586-
587- _ => false ,
588- }
589- } ) ;
590-
591568 cfg. skip_const ( move |name| {
592569 match name {
593- // Removed in OpenBSD 7.7
594- "ATF_COM" | "ATF_PERM" | "ATF_PUBL" | "ATF_USETRAILERS" => true ,
595-
596570 // Removed in OpenBSD 7.8
597571 "CTL_FS" | "SO_NETPROC" => true ,
598572
@@ -1174,8 +1148,6 @@ fn test_solarish(target: &str) {
11741148 return true ;
11751149 }
11761150 match ty {
1177- // union, not a struct
1178- "sigval" => true ,
11791151 // a bunch of solaris-only fields
11801152 "utmpx" if is_illumos => true ,
11811153 _ => false ,
@@ -1195,8 +1167,6 @@ fn test_solarish(target: &str) {
11951167 "sigaction" if field == "sa_sigaction" => true ,
11961168 // Missing in illumos
11971169 "sigevent" if field == "ss_sp" => true ,
1198- // Avoid sigval union issues
1199- "sigevent" if field == "sigev_value" => true ,
12001170 // const issues
12011171 "sigevent" if field == "sigev_notify_attributes" => true ,
12021172
@@ -1423,8 +1393,6 @@ fn test_netbsd(target: &str) {
14231393
14241394 cfg. skip_struct ( move |ty| {
14251395 match ty {
1426- // This is actually a union, not a struct
1427- "sigval" => true ,
14281396 // These are tested as part of the linux_fcntl tests since there are
14291397 // header conflicts when including them with all the other structs.
14301398 "termios2" => true ,
@@ -1476,8 +1444,6 @@ fn test_netbsd(target: &str) {
14761444 ( struct_ == "ifaddrs" && field == "ifa_ifu" ) ||
14771445 // sighandler_t type is super weird
14781446 ( struct_ == "sigaction" && field == "sa_sigaction" ) ||
1479- // sigval is actually a union, but we pretend it's a struct
1480- ( struct_ == "sigevent" && field == "sigev_value" ) ||
14811447 // aio_buf is "volatile void*" and Rust doesn't understand volatile
14821448 ( struct_ == "aiocb" && field == "aio_buf" )
14831449 } ) ;
@@ -1606,9 +1572,6 @@ fn test_dragonflybsd(target: &str) {
16061572
16071573 t if t. ends_with ( "_t" ) => t. to_string ( ) ,
16081574
1609- // sigval is a struct in Rust, but a union in C:
1610- "sigval" => "union sigval" . to_string ( ) ,
1611-
16121575 // put `struct` in front of all structs:.
16131576 t if is_struct => format ! ( "struct {t}" ) ,
16141577
@@ -1701,8 +1664,6 @@ fn test_dragonflybsd(target: &str) {
17011664 ( struct_ == "ifaddrs" && field == "ifa_ifu" ) ||
17021665 // sighandler_t type is super weird
17031666 ( struct_ == "sigaction" && field == "sa_sigaction" ) ||
1704- // sigval is actually a union, but we pretend it's a struct
1705- ( struct_ == "sigevent" && field == "sigev_value" ) ||
17061667 // aio_buf is "volatile void*" and Rust doesn't understand volatile
17071668 ( struct_ == "aiocb" && field == "aio_buf" )
17081669 } ) ;
@@ -1993,9 +1954,6 @@ fn test_android(target: &str) {
19931954
19941955 t if t. ends_with ( "_t" ) => t. to_string ( ) ,
19951956
1996- // sigval is a struct in Rust, but a union in C:
1997- "sigval" => "union sigval" . to_string ( ) ,
1998-
19991957 "Ioctl" => "int" . to_string ( ) ,
20001958
20011959 // put `struct` in front of all structs:.
@@ -2300,8 +2258,6 @@ fn test_android(target: &str) {
23002258 cfg. skip_field_type ( move |struct_, field| {
23012259 // This is a weird union, don't check the type.
23022260 ( struct_ == "ifaddrs" && field == "ifa_ifu" ) ||
2303- // sigval is actually a union, but we pretend it's a struct
2304- ( struct_ == "sigevent" && field == "sigev_value" ) ||
23052261 // this one is an anonymous union
23062262 ( struct_ == "ff_effect" && field == "u" ) ||
23072263 // FIXME(android): `sa_sigaction` has type `sighandler_t` but that type is
@@ -2504,9 +2460,6 @@ fn test_freebsd(target: &str) {
25042460
25052461 t if t. ends_with ( "_t" ) => t. to_string ( ) ,
25062462
2507- // sigval is a struct in Rust, but a union in C:
2508- "sigval" => "union sigval" . to_string ( ) ,
2509-
25102463 // put `struct` in front of all structs:.
25112464 t if is_struct => format ! ( "struct {t}" ) ,
25122465
@@ -3140,9 +3093,6 @@ fn test_emscripten(target: &str) {
31403093 return true ;
31413094 }
31423095 match ty {
3143- // This is actually a union, not a struct
3144- "sigval" => true ,
3145-
31463096 // FIXME(emscripten): Investigate why the test fails.
31473097 // Skip for now to unblock CI.
31483098 "pthread_condattr_t" => true ,
@@ -3221,9 +3171,7 @@ fn test_emscripten(target: &str) {
32213171 // This is a weird union, don't check the type.
32223172 ( struct_ == "ifaddrs" && field == "ifa_ifu" ) ||
32233173 // sighandler_t type is super weird
3224- ( struct_ == "sigaction" && field == "sa_sigaction" ) ||
3225- // sigval is actually a union, but we pretend it's a struct
3226- ( struct_ == "sigevent" && field == "sigev_value" )
3174+ ( struct_ == "sigaction" && field == "sa_sigaction" )
32273175 } ) ;
32283176
32293177 cfg. skip_field ( move |struct_, field| {
@@ -3436,9 +3384,6 @@ fn test_neutrino(target: &str) {
34363384 match ty {
34373385 "Elf64_Phdr" | "Elf32_Phdr" => true ,
34383386
3439- // FIXME(union): This is actually a union, not a struct
3440- "sigval" => true ,
3441-
34423387 // union
34433388 "_channel_connect_attr" => true ,
34443389
@@ -3493,8 +3438,6 @@ fn test_neutrino(target: &str) {
34933438 } ) ;
34943439
34953440 cfg. skip_field_type ( move |struct_, field| {
3496- // sigval is actually a union, but we pretend it's a struct
3497- struct_ == "sigevent" && field == "sigev_value" ||
34983441 // Anonymous structures
34993442 struct_ == "_idle_hook" && field == "time"
35003443 } ) ;
@@ -3505,8 +3448,6 @@ fn test_neutrino(target: &str) {
35053448 ( "__sched_param" , "reserved" )
35063449 | ( "sched_param" , "reserved" )
35073450 | ( "sigevent" , "__padding1" ) // ensure alignment
3508- | ( "sigevent" , "__padding2" ) // union
3509- | ( "sigevent" , "__sigev_un2" ) // union
35103451 | ( "sigaction" , "sa_sigaction" ) // sighandler_t type is super weird
35113452 | ( "syspage_entry" , "__reserved" ) // does not exist
35123453 )
@@ -3611,10 +3552,8 @@ fn test_vxworks(target: &str) {
36113552
36123553 // FIXME(vxworks)
36133554 cfg. skip_fn ( move |name| match name {
3614- // sigval
3615- "sigqueue" | "_sigqueue"
36163555 // sighandler_t
3617- | "signal"
3556+ "signal"
36183557 // not used in static linking by default
36193558 | "dlerror" => true ,
36203559 _ => false ,
@@ -4051,9 +3990,6 @@ fn test_linux(target: &str) {
40513990 // which is absent in glibc, has to be defined.
40523991 "__timeval" => true ,
40533992
4054- // FIXME(union): This is actually a union, not a struct
4055- "sigval" => true ,
4056-
40573993 // This type is tested in the `linux_termios.rs` file since there
40583994 // are header conflicts when including them with all the other
40593995 // structs.
@@ -4779,8 +4715,6 @@ fn test_linux(target: &str) {
47794715 ( struct_ == "sigaction" && field == "sa_sigaction" ) ||
47804716 // __timeval type is a patch which doesn't exist in glibc
47814717 ( struct_ == "utmpx" && field == "ut_tv" ) ||
4782- // sigval is actually a union, but we pretend it's a struct
4783- ( struct_ == "sigevent" && field == "sigev_value" ) ||
47844718 // this one is an anonymous union
47854719 ( struct_ == "ff_effect" && field == "u" ) ||
47864720 // `__exit_status` type is a patch which is absent in musl
@@ -5261,8 +5195,6 @@ fn test_haiku(target: &str) {
52615195 return true ;
52625196 }
52635197 match ty {
5264- // FIXME(union): actually a union
5265- "sigval" => true ,
52665198 // FIXME(haiku): locale_t does not exist on Haiku
52675199 "locale_t" => true ,
52685200 // FIXME(haiku): rusage has a different layout on Haiku
@@ -5369,10 +5301,8 @@ fn test_haiku(target: &str) {
53695301 ( "stat" , "st_crtime_nsec" ) => true ,
53705302
53715303 // these are actually unions, but we cannot represent it well
5372- ( "siginfo_t" , "sigval" ) => true ,
53735304 ( "sem_t" , "named_sem_id" ) => true ,
53745305 ( "sigaction" , "sa_sigaction" ) => true ,
5375- ( "sigevent" , "sigev_value" ) => true ,
53765306 ( "fpu_state" , "_fpreg" ) => true ,
53775307 ( "cpu_topology_node_info" , "data" ) => true ,
53785308 // these fields have a simplified data definition in libc
@@ -5423,8 +5353,6 @@ fn test_haiku(target: &str) {
54235353 ty. to_string ( )
54245354 }
54255355
5426- // is actually a union
5427- "sigval" => "union sigval" . to_string ( ) ,
54285356 t if is_union => format ! ( "union {t}" ) ,
54295357 t if t. ends_with ( "_t" ) => t. to_string ( ) ,
54305358 t if is_struct => format ! ( "struct {t}" ) ,
0 commit comments