prepare QNX OS 8.0 targets for qualification#2394
Conversation
|
bors try |
tryBuild failed:
|
|
bors try |
tryBuild failed: |
|
bors try |
tryBuild failed: |
|
bors try |
|
bors try |
tryAlready running a review |
tryBuild failed: |
|
bors try |
|
bors try- |
|
bors try |
tryBuild failed: |
|
bors try |
tryBuild failed: |
|
bors try |
|
bors try |
tryBuild failed: |
There was a problem hiding this comment.
this looks quite similar to the existing emulated-aarch64-qnx-test-runner.sh and emulated-x86_64-qnx-test-runner.sh scripts. can we share any logic between them?
There was a problem hiding this comment.
we're going to leave this for a follow-up PR.
| // on QNX7.1 and QNX8 the `len` value returned by the SUN_LEN | ||
| // macro in its libc does not include the null byte in the count so | ||
| // don't add it here to match what a C program passes to bind(2) and | ||
| // similar functions | ||
| if cfg!(not(any(target_env = "nto80", target_env = "nto71"))) { | ||
| len += 1 |
There was a problem hiding this comment.
has this change been upstreamed yet?
There was a problem hiding this comment.
Note that this bug fix is also necessary for all BSD targets, not just for QNX.
There was a problem hiding this comment.
We're waiting for someone who works at QNX to investigate this issue.
| FERROCENE_TARGETS: x86_64-pc-nto-qnx800 | ||
| SCRIPT: | | ||
| set +u; source ./qnx800-141/qnxsdp-env.sh; set -u; RUST_TEST_THREADS=1 TEST_DEVICE_ADDR=172.31.1.11:12345 ./x.py --stage 2 test $(ferrocene/ci/split-tasks.py << parameters.job >>) --ferrocene-test-one-crate-per-cargo-call --test-variant << parameters.test-variant >> << parameters.extra-args >> | ||
| set +u; source ./qnx800-141/qnxsdp-env.sh; set -u; RUST_TEST_THREADS=1 TEST_DEVICE_ADDR=172.31.1.105:12345 ./x.py --stage 2 test $(ferrocene/ci/split-tasks.py << parameters.job >>) --ferrocene-test-one-crate-per-cargo-call --test-variant << parameters.test-variant >> << parameters.extra-args >> |
There was a problem hiding this comment.
where can i find documentation on this? is this being hard-coded somewhere else?
There was a problem hiding this comment.
this is hard-coded in the QNX image itself, Jorge is going to leave a comment.
There was a problem hiding this comment.
for now I'll leave a comment indicating where the IP address is defined/set/unified in the emulator scripts. in a follow-up PR we can load it (grep it) from the script instead of duplicating it here a few times
|
🕐 Waiting for PR status (Github check) to be set, probably by CI. Bors will automatically try to run when all required PR statuses are set. |
2460: v7r: add missing qualifications documents r=jyn514 a=japaric cross referenced against doc changes in #2394 Co-authored-by: Jorge Aparicio <[email protected]>
2460: v7r: add missing qualifications documents r=jyn514 a=japaric cross referenced against doc changes in #2394 Co-authored-by: Jorge Aparicio <[email protected]>
2454: Restore QNX8 jobs r=japaric a=Hoverbear Reverses #2440 2460: v7r: add missing qualifications documents r=jyn514 a=japaric cross referenced against doc changes in #2394 Co-authored-by: Ana Hobden <[email protected]> Co-authored-by: Jorge Aparicio <[email protected]>
2473: [1.97] 26.08 backports r=jyn514 a=jyn514 i fixed the following conflicts which remained after running mergiraf: - #2460: ferrocene/doc/qualification-report/src/index.rst (1.98 had a powerpc target that 1.97 didn't) - #2439: library/std/src/env.rs, src/bootstrap/src/core/sanity.rs, src/tools/miri/tests/pass-dep/shims/gettid.rs, tests/run-make/c-link-to-rust-va-list-fn/rmake.rs, tests/rustdoc-html/doc-cfg/all-targets.rs <details> ```diff diff --cc library/std/src/env.rs index 047dfbe,fa5dfd8b76e..00000000000 --- a/library/std/src/env.rs +++ b/library/std/src/env.rs `@@@` -1098,8 -1089,14 +1098,15 `@@@` pub mod consts /// * `"horizon"` /// * `"hurd"` /// * `"illumos"` - /// * `"ios"` /// * `"l4re"` - /// * `"linux"` - /// * `"macos"` - /// * `"netbsd"` /// * `"nto"` ++<<<<<<< HEAD ++||||||| parent of dc484f364dc (Backport #2439) ++ /// * `"openbsd"` ++======= + /// * `"openbsd"` + /// * `"qnx"` ++>>>>>>> dc484f364dc (Backport #2439) /// * `"redox"` /// * `"solaris"` /// * `"solid_asp3"` diff --cc src/bootstrap/src/core/sanity.rs index f829a5b,b0190328740..00000000000 --- a/src/bootstrap/src/core/sanity.rs +++ b/src/bootstrap/src/core/sanity.rs `@@@` -47,6 -47,9 +47,14 `@@@` const STAGE0_MISSING_TARGETS: &[&str] "thumbv7em-ferrocene.facade-eabi", "thumbv7em-ferrocene.facade-eabihf", // just a dummy comment so the list doesn't get onelined ++<<<<<<< HEAD ++||||||| parent of dc484f364dc (Backport #2439) ++ "powerpc64-unknown-linux-gnuelfv2", ++======= + "powerpc64-unknown-linux-gnuelfv2", + "aarch64-unknown-qnx", + "x86_64-pc-qnx", ++>>>>>>> dc484f364dc (Backport #2439) ]; /// Minimum version threshold for libstdc++ required when using prebuilt LLVM diff --cc src/tools/miri/tests/pass-dep/shims/gettid.rs index 0dce7bd,05885ac277f..00000000000 --- a/src/tools/miri/tests/pass-dep/shims/gettid.rs +++ b/src/tools/miri/tests/pass-dep/shims/gettid.rs `@@@` -5,21 -5,27 +5,29 `@@@` #![feature(linkage)] fn gettid() -> u64 { - cfg_select! { - any(target_os = "android", target_os = "linux") => { + cfg_if::cfg_if! { + if #[cfg(any(target_os = "android", target_os = "linux"))] { gettid_linux_like() ++<<<<<<< HEAD + } else if #[cfg(target_os = "nto")] { ++||||||| parent of dc484f364dc (Backport #2439) ++ } ++ target_os = "nto" => { ++======= + } + any(target_os = "nto", target_os = "qnx") => { ++>>>>>>> dc484f364dc (Backport #2439) unsafe { libc::gettid() as u64 } - } - target_os = "openbsd" => { + } else if #[cfg(target_os = "openbsd")] { unsafe { libc::getthrid() as u64 } - } - target_os = "freebsd" => { + } else if #[cfg(target_os = "freebsd")] { unsafe { libc::pthread_getthreadid_np() as u64 } - } - target_os = "netbsd" => { + } else if #[cfg(target_os = "netbsd")] { unsafe { libc::_lwp_self() as u64 } - } - any(target_os = "solaris", target_os = "illumos") => { + } else if #[cfg(any(target_os = "solaris", target_os = "illumos"))] { // On Solaris and Illumos, the `pthread_t` is the OS TID. unsafe { libc::pthread_self() as u64 } - } - target_vendor = "apple" => { + } else if #[cfg(target_vendor = "apple")] { let mut id = 0u64; let status: libc::c_int = unsafe { libc::pthread_threadid_np(0, &mut id) }; assert_eq!(status, 0); diff --cc tests/run-make/c-link-to-rust-va-list-fn/rmake.rs index 96b8ade,457a286b6e2..00000000000 --- a/tests/run-make/c-link-to-rust-va-list-fn/rmake.rs +++ b/tests/run-make/c-link-to-rust-va-list-fn/rmake.rs `@@@` -7,6 -7,12 +7,21 `@@@` //@ ignore-android: FIXME(#142855) //@ ignore-sgx: (x86 machine code cannot be directly executed) ++<<<<<<< HEAD ++||||||| parent of dc484f364dc (Backport #2439) ++// Ferrocene addition: Various compile and link errors on these platforms: ++// missing <assert.h>, missing libraries, and breakage when not using -fPIC ++//@ ignore-ferrocene.facade ++//@ ignore-nto ++ ++======= + // Ferrocene addition: Various compile and link errors on these platforms: + // missing <assert.h>, missing libraries, and breakage when not using -fPIC + //@ ignore-ferrocene.facade + //@ ignore-nto + //@ ignore-qnx + ++>>>>>>> dc484f364dc (Backport #2439) use run_make_support::{cc, extra_c_flags, run, rustc, static_lib_name}; fn main() { diff --cc tests/rustdoc-html/doc-cfg/all-targets.rs index 5b61d61,d5a8be83bc1..00000000000 --- a/tests/rustdoc-html/doc-cfg/all-targets.rs +++ b/tests/rustdoc-html/doc-cfg/all-targets.rs `@@@` -2,10 -2,10 +2,22 `@@@` //@ has all_targets/fn.foo.html \ // '//*[`@id="main-content"]/*[@Class="item-info"]/*[@Class="stab` portability"]' \ ++<<<<<<< HEAD +// 'Available on GNU or Catalyst or Managarm C Library or MSVC or musl or Newlib or \ +// Neutrino 7.0 or Neutrino 7.1 or Neutrino 7.1 with io-sock or Neutrino 8.0 or \ +// OpenHarmony or relibc or SGX or Simulator or WASIp1 or WASIp2 or WASIp3 or \ +// uClibc or V5 or target_env=fake_env only.' ++||||||| parent of dc484f364dc (Backport #2439) ++// 'Available on target_env=fake_env or Catalyst or GNU or Managarm C Library \ ++// or MSVC or musl or Neutrino 7.0 or Neutrino 7.1 or Neutrino 7.1 with io-sock \ ++// or Neutrino 8.0 or Newlib or OpenHarmony or relibc or SGX or Simulator or \ ++// uClibc or V5 or WASIp1 or WASIp2 or WASIp3 only.' ++======= + // 'Available on target_env=fake_env or Catalyst or GNU or Managarm C Library \ + // or MSVC or musl or Newlib or OpenHarmony or QNX SDP 7.0 or QNX SDP 7.1 or \ + // QNX SDP 7.1 with io-sock or relibc or SGX or Simulator or uClibc or V5 or WASIp1 \ + // or WASIp2 or WASIp3 only.' ++>>>>>>> dc484f364dc (Backport #2439) #[doc(cfg(any( target_env = "gnu", target_env = "macabi", `@@@` -75,15 -74,16 +86,39 `@@@` pub fn bar() { //@ has all_targets/fn.baz.html \ // '//*[`@id="main-content"]/*[@Class="item-info"]/*[@Class="stab` portability"]' \ ++<<<<<<< HEAD +// 'Available on AIX and AMD HSA and Android and CUDA and Cygwin and DragonFly \ +// BSD and Emscripten and ESP-IDF and FreeBSD and Fuchsia and Haiku and HelenOS \ +// and Hermit and Horizon and GNU/Hurd and illumos and iOS and L4Re and Linux \ +// and LynxOS-178 and macOS and Managarm and Motor OS and NetBSD and bare-metal \ +// and QNX Neutrino and NuttX and OpenBSD and Play Station Portable and Play \ +// Station 1 and QuRT and Redox OS and RTEMS OS and Solaris and SOLID ASP3 and \ +// TEEOS and Trusty and tvOS and UEFI and VEXos and visionOS and Play Station \ +// Vita and VxWorks and WASI and watchOS and Windows and Xous and zero knowledge \ +// Virtual Machine and target_os=unknown and target_os=fake_os only.' ++||||||| parent of dc484f364dc (Backport #2439) ++// 'Available on target_os=fake_os and target_os=unknown and AIX and AMD HSA \ ++// and Android and bare-metal and CUDA and Cygwin and DragonFly BSD and \ ++// Emscripten and ESP-IDF and FreeBSD and Fuchsia and GNU/Hurd and Haiku \ ++// and HelenOS and Hermit and Horizon and illumos and iOS and L4Re and Linux \ ++// and LynxOS-178 and macOS and Managarm and Motor OS and NetBSD and NuttX \ ++// and OpenBSD and Play Station 1 and Play Station Portable and Play Station Vita \ ++// and QNX Neutrino and QuRT and Redox OS and RTEMS OS and Solaris and \ ++// SOLID ASP3 and TEEOS and Trusty and tvOS and UEFI and VEXos and visionOS \ ++// and VxWorks and WASI and watchOS and Windows and Xous and zero knowledge \ ++// Virtual Machine only.' ++======= + // 'Available on target_os=fake_os and target_os=unknown and AIX and AMD HSA \ + // and Android and bare-metal and CUDA and Cygwin and DragonFly BSD and \ + // Emscripten and ESP-IDF and FreeBSD and Fuchsia and GNU/Hurd and Haiku \ + // and HelenOS and Hermit and Horizon and illumos and iOS and L4Re and Linux \ + // and LynxOS-178 and macOS and Managarm and Motor OS and NetBSD and NuttX \ + // and OpenBSD and Play Station 1 and Play Station Portable and Play Station Vita \ + // and QNX SDP 7.x and QNX SDP 8.0+ and QuRT and Redox OS and RTEMS OS and Solaris and \ + // SOLID ASP3 and TEEOS and Trusty and tvOS and UEFI and VEXos and visionOS \ + // and VxWorks and WASI and watchOS and Windows and Xous and zero knowledge \ + // Virtual Machine only.' ++>>>>>>> dc484f364dc (Backport #2439) #[doc(cfg(all( target_os = "aix", target_os = "amdhsa", * Unmerged path tests/rustdoc-html/doc-cfg/sort.rs ``` </details> #2394 was not marked as backport until just now; i needed it or the QNX rename wouldn't backport cleanly. Co-authored-by: Urhengulas <[email protected]> Co-authored-by: Jorge Aparicio <[email protected]> Co-authored-by: Jynn Nelson <[email protected]> Co-authored-by: Tshepang Mbambo <[email protected]> Co-authored-by: Ana Hobden <[email protected]> Co-authored-by: jyn <[email protected]>
2473: [1.97] 26.08 backports r=jyn514 a=jyn514 i fixed the following conflicts which remained after running mergiraf: - #2460: ferrocene/doc/qualification-report/src/index.rst (1.98 had a powerpc target that 1.97 didn't) - #2439: library/std/src/env.rs, src/bootstrap/src/core/sanity.rs, src/tools/miri/tests/pass-dep/shims/gettid.rs, tests/run-make/c-link-to-rust-va-list-fn/rmake.rs, tests/rustdoc-html/doc-cfg/all-targets.rs <details> ```diff diff --cc library/std/src/env.rs index 047dfbe,fa5dfd8b76e..00000000000 --- a/library/std/src/env.rs +++ b/library/std/src/env.rs `@@@` -1098,8 -1089,14 +1098,15 `@@@` pub mod consts /// * `"horizon"` /// * `"hurd"` /// * `"illumos"` - /// * `"ios"` /// * `"l4re"` - /// * `"linux"` - /// * `"macos"` - /// * `"netbsd"` /// * `"nto"` ++<<<<<<< HEAD ++||||||| parent of dc484f364dc (Backport #2439) ++ /// * `"openbsd"` ++======= + /// * `"openbsd"` + /// * `"qnx"` ++>>>>>>> dc484f364dc (Backport #2439) /// * `"redox"` /// * `"solaris"` /// * `"solid_asp3"` diff --cc src/bootstrap/src/core/sanity.rs index f829a5b,b0190328740..00000000000 --- a/src/bootstrap/src/core/sanity.rs +++ b/src/bootstrap/src/core/sanity.rs `@@@` -47,6 -47,9 +47,14 `@@@` const STAGE0_MISSING_TARGETS: &[&str] "thumbv7em-ferrocene.facade-eabi", "thumbv7em-ferrocene.facade-eabihf", // just a dummy comment so the list doesn't get onelined ++<<<<<<< HEAD ++||||||| parent of dc484f364dc (Backport #2439) ++ "powerpc64-unknown-linux-gnuelfv2", ++======= + "powerpc64-unknown-linux-gnuelfv2", + "aarch64-unknown-qnx", + "x86_64-pc-qnx", ++>>>>>>> dc484f364dc (Backport #2439) ]; /// Minimum version threshold for libstdc++ required when using prebuilt LLVM diff --cc src/tools/miri/tests/pass-dep/shims/gettid.rs index 0dce7bd,05885ac277f..00000000000 --- a/src/tools/miri/tests/pass-dep/shims/gettid.rs +++ b/src/tools/miri/tests/pass-dep/shims/gettid.rs `@@@` -5,21 -5,27 +5,29 `@@@` #![feature(linkage)] fn gettid() -> u64 { - cfg_select! { - any(target_os = "android", target_os = "linux") => { + cfg_if::cfg_if! { + if #[cfg(any(target_os = "android", target_os = "linux"))] { gettid_linux_like() ++<<<<<<< HEAD + } else if #[cfg(target_os = "nto")] { ++||||||| parent of dc484f364dc (Backport #2439) ++ } ++ target_os = "nto" => { ++======= + } + any(target_os = "nto", target_os = "qnx") => { ++>>>>>>> dc484f364dc (Backport #2439) unsafe { libc::gettid() as u64 } - } - target_os = "openbsd" => { + } else if #[cfg(target_os = "openbsd")] { unsafe { libc::getthrid() as u64 } - } - target_os = "freebsd" => { + } else if #[cfg(target_os = "freebsd")] { unsafe { libc::pthread_getthreadid_np() as u64 } - } - target_os = "netbsd" => { + } else if #[cfg(target_os = "netbsd")] { unsafe { libc::_lwp_self() as u64 } - } - any(target_os = "solaris", target_os = "illumos") => { + } else if #[cfg(any(target_os = "solaris", target_os = "illumos"))] { // On Solaris and Illumos, the `pthread_t` is the OS TID. unsafe { libc::pthread_self() as u64 } - } - target_vendor = "apple" => { + } else if #[cfg(target_vendor = "apple")] { let mut id = 0u64; let status: libc::c_int = unsafe { libc::pthread_threadid_np(0, &mut id) }; assert_eq!(status, 0); diff --cc tests/run-make/c-link-to-rust-va-list-fn/rmake.rs index 96b8ade,457a286b6e2..00000000000 --- a/tests/run-make/c-link-to-rust-va-list-fn/rmake.rs +++ b/tests/run-make/c-link-to-rust-va-list-fn/rmake.rs `@@@` -7,6 -7,12 +7,21 `@@@` //@ ignore-android: FIXME(#142855) //@ ignore-sgx: (x86 machine code cannot be directly executed) ++<<<<<<< HEAD ++||||||| parent of dc484f364dc (Backport #2439) ++// Ferrocene addition: Various compile and link errors on these platforms: ++// missing <assert.h>, missing libraries, and breakage when not using -fPIC ++//@ ignore-ferrocene.facade ++//@ ignore-nto ++ ++======= + // Ferrocene addition: Various compile and link errors on these platforms: + // missing <assert.h>, missing libraries, and breakage when not using -fPIC + //@ ignore-ferrocene.facade + //@ ignore-nto + //@ ignore-qnx + ++>>>>>>> dc484f364dc (Backport #2439) use run_make_support::{cc, extra_c_flags, run, rustc, static_lib_name}; fn main() { diff --cc tests/rustdoc-html/doc-cfg/all-targets.rs index 5b61d61,d5a8be83bc1..00000000000 --- a/tests/rustdoc-html/doc-cfg/all-targets.rs +++ b/tests/rustdoc-html/doc-cfg/all-targets.rs `@@@` -2,10 -2,10 +2,22 `@@@` //@ has all_targets/fn.foo.html \ // '//*[`@id="main-content"]/*[@Class="item-info"]/*[@Class="stab` portability"]' \ ++<<<<<<< HEAD +// 'Available on GNU or Catalyst or Managarm C Library or MSVC or musl or Newlib or \ +// Neutrino 7.0 or Neutrino 7.1 or Neutrino 7.1 with io-sock or Neutrino 8.0 or \ +// OpenHarmony or relibc or SGX or Simulator or WASIp1 or WASIp2 or WASIp3 or \ +// uClibc or V5 or target_env=fake_env only.' ++||||||| parent of dc484f364dc (Backport #2439) ++// 'Available on target_env=fake_env or Catalyst or GNU or Managarm C Library \ ++// or MSVC or musl or Neutrino 7.0 or Neutrino 7.1 or Neutrino 7.1 with io-sock \ ++// or Neutrino 8.0 or Newlib or OpenHarmony or relibc or SGX or Simulator or \ ++// uClibc or V5 or WASIp1 or WASIp2 or WASIp3 only.' ++======= + // 'Available on target_env=fake_env or Catalyst or GNU or Managarm C Library \ + // or MSVC or musl or Newlib or OpenHarmony or QNX SDP 7.0 or QNX SDP 7.1 or \ + // QNX SDP 7.1 with io-sock or relibc or SGX or Simulator or uClibc or V5 or WASIp1 \ + // or WASIp2 or WASIp3 only.' ++>>>>>>> dc484f364dc (Backport #2439) #[doc(cfg(any( target_env = "gnu", target_env = "macabi", `@@@` -75,15 -74,16 +86,39 `@@@` pub fn bar() { //@ has all_targets/fn.baz.html \ // '//*[`@id="main-content"]/*[@Class="item-info"]/*[@Class="stab` portability"]' \ ++<<<<<<< HEAD +// 'Available on AIX and AMD HSA and Android and CUDA and Cygwin and DragonFly \ +// BSD and Emscripten and ESP-IDF and FreeBSD and Fuchsia and Haiku and HelenOS \ +// and Hermit and Horizon and GNU/Hurd and illumos and iOS and L4Re and Linux \ +// and LynxOS-178 and macOS and Managarm and Motor OS and NetBSD and bare-metal \ +// and QNX Neutrino and NuttX and OpenBSD and Play Station Portable and Play \ +// Station 1 and QuRT and Redox OS and RTEMS OS and Solaris and SOLID ASP3 and \ +// TEEOS and Trusty and tvOS and UEFI and VEXos and visionOS and Play Station \ +// Vita and VxWorks and WASI and watchOS and Windows and Xous and zero knowledge \ +// Virtual Machine and target_os=unknown and target_os=fake_os only.' ++||||||| parent of dc484f364dc (Backport #2439) ++// 'Available on target_os=fake_os and target_os=unknown and AIX and AMD HSA \ ++// and Android and bare-metal and CUDA and Cygwin and DragonFly BSD and \ ++// Emscripten and ESP-IDF and FreeBSD and Fuchsia and GNU/Hurd and Haiku \ ++// and HelenOS and Hermit and Horizon and illumos and iOS and L4Re and Linux \ ++// and LynxOS-178 and macOS and Managarm and Motor OS and NetBSD and NuttX \ ++// and OpenBSD and Play Station 1 and Play Station Portable and Play Station Vita \ ++// and QNX Neutrino and QuRT and Redox OS and RTEMS OS and Solaris and \ ++// SOLID ASP3 and TEEOS and Trusty and tvOS and UEFI and VEXos and visionOS \ ++// and VxWorks and WASI and watchOS and Windows and Xous and zero knowledge \ ++// Virtual Machine only.' ++======= + // 'Available on target_os=fake_os and target_os=unknown and AIX and AMD HSA \ + // and Android and bare-metal and CUDA and Cygwin and DragonFly BSD and \ + // Emscripten and ESP-IDF and FreeBSD and Fuchsia and GNU/Hurd and Haiku \ + // and HelenOS and Hermit and Horizon and illumos and iOS and L4Re and Linux \ + // and LynxOS-178 and macOS and Managarm and Motor OS and NetBSD and NuttX \ + // and OpenBSD and Play Station 1 and Play Station Portable and Play Station Vita \ + // and QNX SDP 7.x and QNX SDP 8.0+ and QuRT and Redox OS and RTEMS OS and Solaris and \ + // SOLID ASP3 and TEEOS and Trusty and tvOS and UEFI and VEXos and visionOS \ + // and VxWorks and WASI and watchOS and Windows and Xous and zero knowledge \ + // Virtual Machine only.' ++>>>>>>> dc484f364dc (Backport #2439) #[doc(cfg(all( target_os = "aix", target_os = "amdhsa", * Unmerged path tests/rustdoc-html/doc-cfg/sort.rs ``` </details> #2394 was not marked as backport until just now; i needed it or the QNX rename wouldn't backport cleanly. Co-authored-by: Urhengulas <[email protected]> Co-authored-by: Jorge Aparicio <[email protected]> Co-authored-by: Jynn Nelson <[email protected]> Co-authored-by: Tshepang Mbambo <[email protected]> Co-authored-by: Ana Hobden <[email protected]> Co-authored-by: jyn <[email protected]>
NOTE depends on #2399
This PR sets up CI to build and test two new targets
aarch64-unknown-nto-qnx800x86_64-pc-nto-qnx800using the QEMU VM approach used for the QNX 7.1 targets