Skip to content

Commit 712c2da

Browse files
psumberatgross35
authored andcommitted
Fixes tests on Solaris
(backport <#3864>) (cherry picked from commit ec3c338)
1 parent eaf53b1 commit 712c2da

File tree

9 files changed

+474
-275
lines changed

9 files changed

+474
-275
lines changed

libc-test/build.rs

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -886,8 +886,6 @@ fn test_solarish(target: &str) {
886886
"stdlib.h",
887887
"string.h",
888888
"sys/auxv.h",
889-
"sys/epoll.h",
890-
"sys/eventfd.h",
891889
"sys/file.h",
892890
"sys/filio.h",
893891
"sys/ioctl.h",
@@ -927,6 +925,19 @@ fn test_solarish(target: &str) {
927925
"wchar.h",
928926
}
929927

928+
if is_illumos {
929+
headers! { cfg:
930+
"sys/epoll.h",
931+
"sys/eventfd.h",
932+
}
933+
}
934+
935+
if is_solaris {
936+
headers! { cfg:
937+
"sys/lgrp_user_impl.h",
938+
}
939+
}
940+
930941
cfg.skip_type(move |ty| match ty {
931942
"sighandler_t" => true,
932943
_ => false,
@@ -976,7 +987,7 @@ fn test_solarish(target: &str) {
976987
// EPOLLEXCLUSIVE is a relatively recent addition to the epoll interface and may not be
977988
// defined on older systems. It is, however, safe to use on systems which do not
978989
// explicitly support it. (A no-op is an acceptable implementation of EPOLLEXCLUSIVE.)
979-
"EPOLLEXCLUSIVE" => true,
990+
"EPOLLEXCLUSIVE" if is_illumos => true,
980991

981992
_ => false,
982993
});
@@ -1068,7 +1079,7 @@ fn test_solarish(target: &str) {
10681079
// These functions may return int or void depending on the exact
10691080
// configuration of the compilation environment, but the return
10701081
// value is not useful (always 0) so we can ignore it:
1071-
"setservent" | "endservent" if is_illumos => true,
1082+
"setservent" | "endservent" => true,
10721083

10731084
// Following illumos#3729, getifaddrs was changed to a
10741085
// redefine_extname symbol in order to preserve compatibility.

libc-test/semver/TODO-unix.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,8 @@
33
getpwuid_r
44
pthread_atfork
55
pthread_sigmask
6+
# * Solaris is missing flock(2)
7+
LOCK_EX
8+
LOCK_NB
9+
LOCK_SH
10+
LOCK_UN

libc-test/semver/unix.txt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -189,10 +189,6 @@ ISTRIP
189189
IXANY
190190
IXOFF
191191
IXON
192-
LOCK_EX
193-
LOCK_NB
194-
LOCK_SH
195-
LOCK_UN
196192
LOG_ALERT
197193
LOG_AUTH
198194
LOG_CONS

src/unix/mod.rs

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -622,10 +622,8 @@ extern "C" {
622622
target_vendor = "nintendo"
623623
)))]
624624
#[cfg_attr(target_os = "netbsd", link_name = "__socket30")]
625-
#[cfg_attr(
626-
any(target_os = "illumos", target_os = "solaris"),
627-
link_name = "__xnet_socket"
628-
)]
625+
#[cfg_attr(target_os = "illumos", link_name = "__xnet_socket")]
626+
#[cfg_attr(target_os = "solaris", link_name = "__xnet7_socket")]
629627
#[cfg_attr(target_os = "espidf", link_name = "lwip_socket")]
630628
pub fn socket(domain: ::c_int, ty: ::c_int, protocol: ::c_int) -> ::c_int;
631629
#[cfg(not(all(
@@ -931,6 +929,7 @@ extern "C" {
931929
pub fn getppid() -> pid_t;
932930
pub fn getuid() -> uid_t;
933931
pub fn isatty(fd: ::c_int) -> ::c_int;
932+
#[cfg_attr(target_os = "solaris", link_name = "__link_xpg4")]
934933
pub fn link(src: *const c_char, dst: *const c_char) -> ::c_int;
935934
pub fn lseek(fd: ::c_int, offset: off_t, whence: ::c_int) -> off_t;
936935
pub fn pathconf(path: *const c_char, name: ::c_int) -> c_long;
@@ -968,7 +967,10 @@ extern "C" {
968967
all(target_os = "macos", target_arch = "x86"),
969968
link_name = "ttyname_r$UNIX2003"
970969
)]
971-
#[cfg_attr(target_os = "illumos", link_name = "__posix_ttyname_r")]
970+
#[cfg_attr(
971+
any(target_os = "illumos", target_os = "solaris"),
972+
link_name = "__posix_ttyname_r"
973+
)]
972974
pub fn ttyname_r(fd: ::c_int, buf: *mut c_char, buflen: ::size_t) -> ::c_int;
973975
pub fn unlink(c: *const c_char) -> ::c_int;
974976
#[cfg_attr(
@@ -1089,8 +1091,6 @@ extern "C" {
10891091
)]
10901092
pub fn realpath(pathname: *const ::c_char, resolved: *mut ::c_char) -> *mut ::c_char;
10911093

1092-
pub fn flock(fd: ::c_int, operation: ::c_int) -> ::c_int;
1093-
10941094
#[cfg_attr(target_os = "netbsd", link_name = "__times13")]
10951095
pub fn times(buf: *mut ::tms) -> ::clock_t;
10961096

@@ -1399,6 +1399,7 @@ extern "C" {
13991399
#[cfg_attr(target_os = "netbsd", link_name = "__sigpending14")]
14001400
pub fn sigpending(set: *mut sigset_t) -> ::c_int;
14011401

1402+
#[cfg_attr(target_os = "solaris", link_name = "__sysconf_xpg7")]
14021403
pub fn sysconf(name: ::c_int) -> ::c_long;
14031404

14041405
pub fn mkfifo(path: *const c_char, mode: mode_t) -> ::c_int;
@@ -1452,10 +1453,15 @@ cfg_if! {
14521453
if #[cfg(not(any(target_os = "emscripten",
14531454
target_os = "android",
14541455
target_os = "haiku",
1455-
target_os = "nto")))] {
1456+
target_os = "nto",
1457+
target_os = "solaris")))] {
14561458
extern "C" {
14571459
pub fn adjtime(delta: *const timeval, olddelta: *mut timeval) -> ::c_int;
14581460
}
1461+
} else if #[cfg(target_os = "solaris")] {
1462+
extern "C" {
1463+
pub fn adjtime(delta: *mut timeval, olddelta: *mut timeval) -> ::c_int;
1464+
}
14591465
}
14601466
}
14611467

@@ -1477,6 +1483,14 @@ cfg_if! {
14771483
}
14781484
}
14791485

1486+
cfg_if! {
1487+
if #[cfg(not(target_os = "solaris"))] {
1488+
extern "C" {
1489+
pub fn flock(fd: ::c_int, operation: ::c_int) -> ::c_int;
1490+
}
1491+
}
1492+
}
1493+
14801494
cfg_if! {
14811495
if #[cfg(not(any(target_env = "uclibc", target_os = "nto")))] {
14821496
extern "C" {

0 commit comments

Comments
 (0)