Skip to content

Commit c664843

Browse files
committed
Squashed aarch64_unknown_nto_qnx700 support
1 parent bfbe13e commit c664843

File tree

4 files changed

+18
-8
lines changed

4 files changed

+18
-8
lines changed

Diff for: std/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ miniz_oxide = { version = "0.7.0", optional = true, default-features = false }
3535
addr2line = { version = "0.22.0", optional = true, default-features = false }
3636

3737
[target.'cfg(not(all(windows, target_env = "msvc")))'.dependencies]
38-
libc = { version = "0.2.153", default-features = false, features = [
38+
libc = { version = "0.2.156", default-features = false, features = [
3939
'rustc-dep-of-std',
4040
], public = true }
4141

Diff for: std/src/sys/pal/unix/fs.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1717,7 +1717,7 @@ pub fn link(original: &Path, link: &Path) -> io::Result<()> {
17171717
run_path_with_cstr(original, &|original| {
17181718
run_path_with_cstr(link, &|link| {
17191719
cfg_if::cfg_if! {
1720-
if #[cfg(any(target_os = "vxworks", target_os = "redox", target_os = "android", target_os = "espidf", target_os = "horizon", target_os = "vita"))] {
1720+
if #[cfg(any(target_os = "vxworks", target_os = "redox", target_os = "android", target_os = "espidf", target_os = "horizon", target_os = "vita", target_os = "nto"))] {
17211721
// VxWorks, Redox and ESP-IDF lack `linkat`, so use `link` instead. POSIX leaves
17221722
// it implementation-defined whether `link` follows symlinks, so rely on the
17231723
// `symlink_hard_link` test in library/std/src/fs/tests.rs to check the behavior.

Diff for: std/src/sys/pal/unix/process/process_unix.rs

+7-4
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ use crate::sys::process::process_common::*;
1919
use crate::{fmt, mem, sys};
2020

2121
cfg_if::cfg_if! {
22-
if #[cfg(all(target_os = "nto", target_env = "nto71"))] {
22+
// This workaround is only needed for QNX 7.0 and 7.1. The bug should have been fixed in 8.0
23+
if #[cfg(any(target_env = "nto70", target_env = "nto71"))] {
2324
use crate::thread;
2425
use libc::{c_char, posix_spawn_file_actions_t, posix_spawnattr_t};
2526
use crate::time::Duration;
@@ -189,7 +190,8 @@ impl Command {
189190
#[cfg(not(any(
190191
target_os = "watchos",
191192
target_os = "tvos",
192-
all(target_os = "nto", target_env = "nto71"),
193+
target_env = "nto70",
194+
target_env = "nto71"
193195
)))]
194196
unsafe fn do_fork(&mut self) -> Result<pid_t, io::Error> {
195197
cvt(libc::fork())
@@ -199,7 +201,8 @@ impl Command {
199201
// or closed a file descriptor while the fork() was occurring".
200202
// Documentation says "... or try calling fork() again". This is what we do here.
201203
// See also https://www.qnx.com/developers/docs/7.1/#com.qnx.doc.neutrino.lib_ref/topic/f/fork.html
202-
#[cfg(all(target_os = "nto", target_env = "nto71"))]
204+
// This workaround is only needed for QNX 7.0 and 7.1. The bug should have been fixed in 8.0
205+
#[cfg(any(target_env = "nto70", target_env = "nto71"))]
203206
unsafe fn do_fork(&mut self) -> Result<pid_t, io::Error> {
204207
use crate::sys::os::errno;
205208

@@ -537,7 +540,7 @@ impl Command {
537540
// or closed a file descriptor while the posix_spawn() was occurring".
538541
// Documentation says "... or try calling posix_spawn() again". This is what we do here.
539542
// See also http://www.qnx.com/developers/docs/7.1/#com.qnx.doc.neutrino.lib_ref/topic/p/posix_spawn.html
540-
#[cfg(all(target_os = "nto", target_env = "nto71"))]
543+
#[cfg(target_os = "nto")]
541544
unsafe fn retrying_libc_posix_spawnp(
542545
pid: *mut pid_t,
543546
file: *const c_char,

Diff for: unwind/src/lib.rs

+9-2
Original file line numberDiff line numberDiff line change
@@ -165,8 +165,15 @@ extern "C" {}
165165
extern "C" {}
166166

167167
#[cfg(target_os = "nto")]
168-
#[link(name = "gcc_s")]
169-
extern "C" {}
168+
cfg_if::cfg_if! {
169+
if #[cfg(target_env = "nto70")] {
170+
#[link(name = "gcc")]
171+
extern "C" {}
172+
} else {
173+
#[link(name = "gcc_s")]
174+
extern "C" {}
175+
}
176+
}
170177

171178
#[cfg(target_os = "hurd")]
172179
#[link(name = "gcc_s")]

0 commit comments

Comments
 (0)