@@ -331,9 +331,6 @@ fn test_apple(target: &str) {
331
331
return true ;
332
332
}
333
333
match ty {
334
- // FIXME(union): actually a union
335
- "sigval" => true ,
336
-
337
334
// FIXME(macos): The size is changed in recent macOSes.
338
335
"malloc_zone_t" => true ,
339
336
// it is a moving target, changing through versions
@@ -429,14 +426,6 @@ fn test_apple(target: &str) {
429
426
}
430
427
} ) ;
431
428
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
-
440
429
cfg. volatile_item ( |i| {
441
430
use ctest:: VolatileItemKind :: * ;
442
431
match i {
@@ -576,23 +565,8 @@ fn test_openbsd(target: &str) {
576
565
"sys/param.h" ,
577
566
}
578
567
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
-
591
568
cfg. skip_const ( move |name| {
592
569
match name {
593
- // Removed in OpenBSD 7.7
594
- "ATF_COM" | "ATF_PERM" | "ATF_PUBL" | "ATF_USETRAILERS" => true ,
595
-
596
570
// Removed in OpenBSD 7.8
597
571
"CTL_FS" | "SO_NETPROC" => true ,
598
572
@@ -720,9 +694,6 @@ fn test_cygwin(target: &str) {
720
694
721
695
t if t. ends_with ( "_t" ) => t. to_string ( ) ,
722
696
723
- // sigval is a struct in Rust, but a union in C:
724
- "sigval" => "union sigval" . to_string ( ) ,
725
-
726
697
// put `struct` in front of all structs:.
727
698
t if is_struct => format ! ( "struct {t}" ) ,
728
699
@@ -1174,8 +1145,6 @@ fn test_solarish(target: &str) {
1174
1145
return true ;
1175
1146
}
1176
1147
match ty {
1177
- // union, not a struct
1178
- "sigval" => true ,
1179
1148
// a bunch of solaris-only fields
1180
1149
"utmpx" if is_illumos => true ,
1181
1150
_ => false ,
@@ -1195,8 +1164,6 @@ fn test_solarish(target: &str) {
1195
1164
"sigaction" if field == "sa_sigaction" => true ,
1196
1165
// Missing in illumos
1197
1166
"sigevent" if field == "ss_sp" => true ,
1198
- // Avoid sigval union issues
1199
- "sigevent" if field == "sigev_value" => true ,
1200
1167
// const issues
1201
1168
"sigevent" if field == "sigev_notify_attributes" => true ,
1202
1169
@@ -1423,8 +1390,6 @@ fn test_netbsd(target: &str) {
1423
1390
1424
1391
cfg. skip_struct ( move |ty| {
1425
1392
match ty {
1426
- // This is actually a union, not a struct
1427
- "sigval" => true ,
1428
1393
// These are tested as part of the linux_fcntl tests since there are
1429
1394
// header conflicts when including them with all the other structs.
1430
1395
"termios2" => true ,
@@ -1476,8 +1441,6 @@ fn test_netbsd(target: &str) {
1476
1441
( struct_ == "ifaddrs" && field == "ifa_ifu" ) ||
1477
1442
// sighandler_t type is super weird
1478
1443
( struct_ == "sigaction" && field == "sa_sigaction" ) ||
1479
- // sigval is actually a union, but we pretend it's a struct
1480
- ( struct_ == "sigevent" && field == "sigev_value" ) ||
1481
1444
// aio_buf is "volatile void*" and Rust doesn't understand volatile
1482
1445
( struct_ == "aiocb" && field == "aio_buf" )
1483
1446
} ) ;
@@ -1606,9 +1569,6 @@ fn test_dragonflybsd(target: &str) {
1606
1569
1607
1570
t if t. ends_with ( "_t" ) => t. to_string ( ) ,
1608
1571
1609
- // sigval is a struct in Rust, but a union in C:
1610
- "sigval" => "union sigval" . to_string ( ) ,
1611
-
1612
1572
// put `struct` in front of all structs:.
1613
1573
t if is_struct => format ! ( "struct {t}" ) ,
1614
1574
@@ -1701,8 +1661,6 @@ fn test_dragonflybsd(target: &str) {
1701
1661
( struct_ == "ifaddrs" && field == "ifa_ifu" ) ||
1702
1662
// sighandler_t type is super weird
1703
1663
( struct_ == "sigaction" && field == "sa_sigaction" ) ||
1704
- // sigval is actually a union, but we pretend it's a struct
1705
- ( struct_ == "sigevent" && field == "sigev_value" ) ||
1706
1664
// aio_buf is "volatile void*" and Rust doesn't understand volatile
1707
1665
( struct_ == "aiocb" && field == "aio_buf" )
1708
1666
} ) ;
@@ -1993,9 +1951,6 @@ fn test_android(target: &str) {
1993
1951
1994
1952
t if t. ends_with ( "_t" ) => t. to_string ( ) ,
1995
1953
1996
- // sigval is a struct in Rust, but a union in C:
1997
- "sigval" => "union sigval" . to_string ( ) ,
1998
-
1999
1954
"Ioctl" => "int" . to_string ( ) ,
2000
1955
2001
1956
// put `struct` in front of all structs:.
@@ -2300,8 +2255,6 @@ fn test_android(target: &str) {
2300
2255
cfg. skip_field_type ( move |struct_, field| {
2301
2256
// This is a weird union, don't check the type.
2302
2257
( struct_ == "ifaddrs" && field == "ifa_ifu" ) ||
2303
- // sigval is actually a union, but we pretend it's a struct
2304
- ( struct_ == "sigevent" && field == "sigev_value" ) ||
2305
2258
// this one is an anonymous union
2306
2259
( struct_ == "ff_effect" && field == "u" ) ||
2307
2260
// FIXME(android): `sa_sigaction` has type `sighandler_t` but that type is
@@ -2504,9 +2457,6 @@ fn test_freebsd(target: &str) {
2504
2457
2505
2458
t if t. ends_with ( "_t" ) => t. to_string ( ) ,
2506
2459
2507
- // sigval is a struct in Rust, but a union in C:
2508
- "sigval" => "union sigval" . to_string ( ) ,
2509
-
2510
2460
// put `struct` in front of all structs:.
2511
2461
t if is_struct => format ! ( "struct {t}" ) ,
2512
2462
@@ -3140,7 +3090,8 @@ fn test_emscripten(target: &str) {
3140
3090
return true ;
3141
3091
}
3142
3092
match ty {
3143
- // This is actually a union, not a struct
3093
+ // FIXME(emscripten): Investigate why the test fails.
3094
+ // Skip for now to unblock CI.
3144
3095
"sigval" => true ,
3145
3096
3146
3097
// FIXME(emscripten): Investigate why the test fails.
@@ -3221,9 +3172,7 @@ fn test_emscripten(target: &str) {
3221
3172
// This is a weird union, don't check the type.
3222
3173
( struct_ == "ifaddrs" && field == "ifa_ifu" ) ||
3223
3174
// 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" )
3175
+ ( struct_ == "sigaction" && field == "sa_sigaction" )
3227
3176
} ) ;
3228
3177
3229
3178
cfg. skip_field ( move |struct_, field| {
@@ -3436,9 +3385,6 @@ fn test_neutrino(target: &str) {
3436
3385
match ty {
3437
3386
"Elf64_Phdr" | "Elf32_Phdr" => true ,
3438
3387
3439
- // FIXME(union): This is actually a union, not a struct
3440
- "sigval" => true ,
3441
-
3442
3388
// union
3443
3389
"_channel_connect_attr" => true ,
3444
3390
@@ -3493,8 +3439,6 @@ fn test_neutrino(target: &str) {
3493
3439
} ) ;
3494
3440
3495
3441
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" ||
3498
3442
// Anonymous structures
3499
3443
struct_ == "_idle_hook" && field == "time"
3500
3444
} ) ;
@@ -3505,8 +3449,6 @@ fn test_neutrino(target: &str) {
3505
3449
( "__sched_param" , "reserved" )
3506
3450
| ( "sched_param" , "reserved" )
3507
3451
| ( "sigevent" , "__padding1" ) // ensure alignment
3508
- | ( "sigevent" , "__padding2" ) // union
3509
- | ( "sigevent" , "__sigev_un2" ) // union
3510
3452
| ( "sigaction" , "sa_sigaction" ) // sighandler_t type is super weird
3511
3453
| ( "syspage_entry" , "__reserved" ) // does not exist
3512
3454
)
@@ -3611,10 +3553,8 @@ fn test_vxworks(target: &str) {
3611
3553
3612
3554
// FIXME(vxworks)
3613
3555
cfg. skip_fn ( move |name| match name {
3614
- // sigval
3615
- "sigqueue" | "_sigqueue"
3616
3556
// sighandler_t
3617
- | "signal"
3557
+ "signal"
3618
3558
// not used in static linking by default
3619
3559
| "dlerror" => true ,
3620
3560
_ => false ,
@@ -4051,9 +3991,6 @@ fn test_linux(target: &str) {
4051
3991
// which is absent in glibc, has to be defined.
4052
3992
"__timeval" => true ,
4053
3993
4054
- // FIXME(union): This is actually a union, not a struct
4055
- "sigval" => true ,
4056
-
4057
3994
// This type is tested in the `linux_termios.rs` file since there
4058
3995
// are header conflicts when including them with all the other
4059
3996
// structs.
@@ -4740,12 +4677,6 @@ fn test_linux(target: &str) {
4740
4677
// Needs musl 1.2.3 or later.
4741
4678
"pthread_getname_np" if old_musl => true ,
4742
4679
4743
- // pthread_sigqueue uses sigval, which was initially declared
4744
- // as a struct but should be defined as a union. However due
4745
- // to the issues described here: https://github.com/rust-lang/libc/issues/2816
4746
- // it can't be changed from struct.
4747
- "pthread_sigqueue" => true ,
4748
-
4749
4680
// There are two versions of basename(3) on Linux with glibc, see
4750
4681
//
4751
4682
// https://man7.org/linux/man-pages/man3/basename.3.html
@@ -4779,8 +4710,6 @@ fn test_linux(target: &str) {
4779
4710
( struct_ == "sigaction" && field == "sa_sigaction" ) ||
4780
4711
// __timeval type is a patch which doesn't exist in glibc
4781
4712
( struct_ == "utmpx" && field == "ut_tv" ) ||
4782
- // sigval is actually a union, but we pretend it's a struct
4783
- ( struct_ == "sigevent" && field == "sigev_value" ) ||
4784
4713
// this one is an anonymous union
4785
4714
( struct_ == "ff_effect" && field == "u" ) ||
4786
4715
// `__exit_status` type is a patch which is absent in musl
@@ -5261,8 +5190,6 @@ fn test_haiku(target: &str) {
5261
5190
return true ;
5262
5191
}
5263
5192
match ty {
5264
- // FIXME(union): actually a union
5265
- "sigval" => true ,
5266
5193
// FIXME(haiku): locale_t does not exist on Haiku
5267
5194
"locale_t" => true ,
5268
5195
// FIXME(haiku): rusage has a different layout on Haiku
@@ -5369,10 +5296,8 @@ fn test_haiku(target: &str) {
5369
5296
( "stat" , "st_crtime_nsec" ) => true ,
5370
5297
5371
5298
// these are actually unions, but we cannot represent it well
5372
- ( "siginfo_t" , "sigval" ) => true ,
5373
5299
( "sem_t" , "named_sem_id" ) => true ,
5374
5300
( "sigaction" , "sa_sigaction" ) => true ,
5375
- ( "sigevent" , "sigev_value" ) => true ,
5376
5301
( "fpu_state" , "_fpreg" ) => true ,
5377
5302
( "cpu_topology_node_info" , "data" ) => true ,
5378
5303
// these fields have a simplified data definition in libc
@@ -5423,8 +5348,6 @@ fn test_haiku(target: &str) {
5423
5348
ty. to_string ( )
5424
5349
}
5425
5350
5426
- // is actually a union
5427
- "sigval" => "union sigval" . to_string ( ) ,
5428
5351
t if is_union => format ! ( "union {t}" ) ,
5429
5352
t if t. ends_with ( "_t" ) => t. to_string ( ) ,
5430
5353
t if is_struct => format ! ( "struct {t}" ) ,
@@ -5563,9 +5486,6 @@ fn test_aix(target: &str) {
5563
5486
"FILE" => ty. to_string ( ) ,
5564
5487
"ACTION" => ty. to_string ( ) ,
5565
5488
5566
- // 'sigval' is a struct in Rust, but a union in C.
5567
- "sigval" => format ! ( "union sigval" ) ,
5568
-
5569
5489
t if t. ends_with ( "_t" ) => t. to_string ( ) ,
5570
5490
t if is_struct => format ! ( "struct {}" , t) ,
5571
5491
t if is_union => format ! ( "union {}" , t) ,
@@ -5586,9 +5506,6 @@ fn test_aix(target: &str) {
5586
5506
5587
5507
cfg. skip_struct ( move |ty| {
5588
5508
match ty {
5589
- // FIXME(union): actually a union.
5590
- "sigval" => true ,
5591
-
5592
5509
// '__poll_ctl_ext_u' and '__pollfd_ext_u' are for unnamed unions.
5593
5510
"__poll_ctl_ext_u" => true ,
5594
5511
"__pollfd_ext_u" => true ,
0 commit comments