@@ -495,15 +495,16 @@ impl TargetTriple {
495495 use std:: mem;
496496
497497 let mut sys_info;
498- let ( sysname, machine) = unsafe {
498+ let ( sysname, machine, version ) = unsafe {
499499 sys_info = mem:: zeroed ( ) ;
500- if libc:: uname ( & mut sys_info) != 0 {
500+ if libc:: uname ( & mut sys_info) == - 1 {
501501 return None ;
502502 }
503503
504504 (
505505 CStr :: from_ptr ( sys_info. sysname . as_ptr ( ) ) . to_bytes ( ) ,
506506 CStr :: from_ptr ( sys_info. machine . as_ptr ( ) ) . to_bytes ( ) ,
507+ CStr :: from_ptr ( sys_info. version . as_ptr ( ) ) . to_bytes ( ) ,
507508 )
508509 } ;
509510
@@ -532,7 +533,12 @@ impl TargetTriple {
532533 ( b"NetBSD" , b"x86_64" ) => Some ( "x86_64-unknown-netbsd" ) ,
533534 ( b"NetBSD" , b"i686" ) => Some ( "i686-unknown-netbsd" ) ,
534535 ( 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" ) ,
536542 _ => None ,
537543 } ;
538544
0 commit comments