@@ -3556,29 +3556,36 @@ fn config_gnu_bits(target: &str, cfg: &mut ctest::TestGenerator) {
35563556 && !target. contains ( "riscv32" )
35573557 && pointer_width == "32"
35583558 {
3559- match env:: var ( "RUST_LIBC_UNSTABLE_GNU_TIME_BITS" ) {
3560- Ok ( val) if val == "64" => {
3561- cfg. define ( "_FILE_OFFSET_BITS" , Some ( "64" ) ) ;
3562- cfg. define ( "_TIME_BITS" , Some ( "64" ) ) ;
3563- cfg. cfg ( "gnu_file_offset_bits64" , None ) ;
3564- cfg. cfg ( "linux_time_bits64" , None ) ;
3565- cfg. cfg ( "gnu_time_bits64" , None ) ;
3566- }
3567- Ok ( val) if val != "32" => {
3568- panic ! ( "RUST_LIBC_UNSTABLE_GNU_TIME_BITS may only be set to '32' or '64'" )
3569- }
3570- _ => {
3571- match env:: var ( "RUST_LIBC_UNSTABLE_GNU_FILE_OFFSET_BITS" ) {
3572- Ok ( val) if val == "64" => {
3573- cfg. define ( "_FILE_OFFSET_BITS" , Some ( "64" ) ) ;
3574- cfg. cfg ( "gnu_file_offset_bits64" , None ) ;
3575- }
3576- Ok ( val) if val != "32" => {
3577- panic ! ( "RUST_LIBC_UNSTABLE_GNU_FILE_OFFSET_BITS may only be set to '32' or '64'" )
3578- }
3579- _ => { }
3580- }
3581- }
3559+ let defaultbits = "32" . to_string ( ) ;
3560+ let ( timebits, filebits) = match (
3561+ env:: var ( "RUST_LIBC_UNSTABLE_GNU_TIME_BITS" ) ,
3562+ env:: var ( "RUST_LIBC_UNSTABLE_GNU_FILE_OFFSET_BITS" ) ,
3563+ ) {
3564+ ( Ok ( _) , Ok ( _) ) => panic ! ( "Do not set both RUST_LIBC_UNSTABLE_GNU_TIME_BITS and RUST_LIBC_UNSTABLE_GNU_FILE_OFFSET_BITS" ) ,
3565+ ( Err ( _) , Err ( _) ) => ( defaultbits. clone ( ) , defaultbits. clone ( ) ) ,
3566+ ( Ok ( tb) , Err ( _) ) if tb == "64" => ( tb. clone ( ) , tb. clone ( ) ) ,
3567+ ( Ok ( tb) , Err ( _) ) if tb == "32" => ( tb, defaultbits. clone ( ) ) ,
3568+ ( Ok ( _) , Err ( _) ) => panic ! ( "Invalid value for RUST_LIBC_UNSTABLE_GNU_TIME_BITS, must be 32 or 64" ) ,
3569+ ( Err ( _) , Ok ( fb) ) if fb == "32" || fb == "64" => ( defaultbits. clone ( ) , fb) ,
3570+ ( Err ( _) , Ok ( _) ) => panic ! ( "Invalid value for RUST_LIBC_UNSTABLE_GNU_FILE_OFFSET_BITS, must be 32 or 64" ) ,
3571+ } ;
3572+ let valid_bits = [ "32" , "64" ] ;
3573+ assert ! (
3574+ valid_bits. contains( & filebits. as_str( ) ) && valid_bits. contains( & timebits. as_str( ) ) ,
3575+ "Invalid value for RUST_LIBC_UNSTABLE_GNU_TIME_BITS or RUST_LIBC_UNSTABLE_GNU_FILE_OFFSET_BITS, must be 32, 64 or unset"
3576+ ) ;
3577+ assert ! (
3578+ !( filebits == "32" && timebits == "64" ) ,
3579+ "RUST_LIBC_UNSTABLE_GNU_FILE_OFFSET_BITS must be 64 or unset if RUST_LIBC_UNSTABLE_GNU_TIME_BITS is 64"
3580+ ) ;
3581+ if timebits == "64" {
3582+ cfg. define ( "_TIME_BITS" , Some ( "64" ) ) ;
3583+ cfg. cfg ( "linux_time_bits64" , None ) ;
3584+ cfg. cfg ( "gnu_time_bits64" , None ) ;
3585+ }
3586+ if filebits == "64" {
3587+ cfg. define ( "_FILE_OFFSET_BITS" , Some ( "64" ) ) ;
3588+ cfg. cfg ( "gnu_file_offset_bits64" , None ) ;
35823589 }
35833590 }
35843591}
0 commit comments