@@ -495,15 +495,16 @@ impl TargetTriple {
495
495
use std:: mem;
496
496
497
497
let mut sys_info;
498
- let ( sysname, machine) = unsafe {
498
+ let ( sysname, machine, version ) = unsafe {
499
499
sys_info = mem:: zeroed ( ) ;
500
- if libc:: uname ( & mut sys_info) != 0 {
500
+ if libc:: uname ( & mut sys_info) == - 1 {
501
501
return None ;
502
502
}
503
503
504
504
(
505
505
CStr :: from_ptr ( sys_info. sysname . as_ptr ( ) ) . to_bytes ( ) ,
506
506
CStr :: from_ptr ( sys_info. machine . as_ptr ( ) ) . to_bytes ( ) ,
507
+ CStr :: from_ptr ( sys_info. version . as_ptr ( ) ) . to_bytes ( ) ,
507
508
)
508
509
} ;
509
510
@@ -532,7 +533,12 @@ impl TargetTriple {
532
533
( b"NetBSD" , b"x86_64" ) => Some ( "x86_64-unknown-netbsd" ) ,
533
534
( b"NetBSD" , b"i686" ) => Some ( "i686-unknown-netbsd" ) ,
534
535
( b"DragonFly" , b"x86_64" ) => Some ( "x86_64-unknown-dragonfly" ) ,
535
- ( b"SunOS" , b"i86pc" ) => Some ( "x86_64-unknown-illumos" ) ,
536
+ ( b"SunOS" , b"i86pc" ) => Some ( if version. starts_with ( b"11.4" ) {
537
+ "x86_64-pc-solaris"
538
+ } else {
539
+ "x86_64-unknown-illumos"
540
+ } ) ,
541
+ ( b"SunOS" , b"sun4v" ) => Some ( "sparcv9-sun-solaris" ) ,
536
542
_ => None ,
537
543
} ;
538
544
0 commit comments