You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* On QNX SDP 7.0 and 7.1, `io-pkt` is used as network stack by default.
30
-
* QNX SDP 7.1 includes the optional network stack `io-sock`.
31
-
* QNX SDP 8.0 always uses `io-sock`.
32
-
33
-
Adding other architectures that are supported by QNX is possible.
34
-
35
-
In the table above, 'full support' indicates support for building Rust applications with the full standard library. A '?' means that support is in-progress. `no_std` support' is for building `#![no_std]` applications where only `core` and `alloc` are available.
36
-
37
-
For building or using the Rust toolchain for QNX, the relevant version of the [QNX Software Development Platform (SDP)] must be installed and initialized.
38
-
Initialization is usually done by sourcing `qnxsdp-env.sh` (this will be installed as part of the SDP, see also installation instruction provided with the SDP).
39
-
Afterwards [`qcc`](https://www.qnx.com/developers/docs/8.0/com.qnx.doc.neutrino.utilities/topic/q/qcc.html) (the QNX C/C++ compiler)
40
-
should be available (in the `$PATH` variable).
41
-
`qcc` will be called e.g. for linking executables.
42
-
43
-
[QNX Software Development Platform (SDP)]: https://qnx.software/en/software/products-and-solutions/qnx-software-development-platform
44
-
45
-
When linking `no_std` applications, they must link against `libc.so` (see example). This is
46
-
required because applications always link against the `crt` library and `crt` depends on `libc.so`.
47
-
This is done automatically when using the standard library.
* QNX SDP 7.0 only offers the `io-pkt` network stack
44
+
* QNX SDP 7.1 uses the `io-pkt` network stack by default, but also includes the optional `io-sock` network stack
45
+
* QNX SDP 8.0 only offers the `io-sock` network stack
50
46
51
-
While not recommended by default, some QNX kernel setups may require the `RELRO` to be disabled with `-C relro_level=off`, e.g. by adding it to the `.cargo/config.toml` file:
47
+
In the table above, 'full support' indicates support for building Rust
48
+
applications with the full standard library. A '?' means that support is
49
+
in-progress. `no_std` support is for building `#![no_std]` applications where
50
+
only `core` and `alloc` are available.
52
51
53
-
```toml
54
-
[target.aarch64-unknown-nto-qnx700]
55
-
rustflags = ["-C", "relro_level=off"]
56
-
```
52
+
For building or using the Rust toolchain for QNX, the relevant version of the
53
+
[QNX Software Development Platform (SDP)] must be installed and initialized.
54
+
Initialization is usually done by sourcing `qnxsdp-env.sh` (this will be
55
+
installed as part of the SDP, so see the installation instruction provided with
56
+
the SDP). Afterwards [`qcc`] (the QNX C/C++ compiler) should be available in
57
+
your system PATH because it will be called during Rust compilation (e.g. for
58
+
linking executables).
57
59
58
-
If your QNX kernel does not allow it, and `relro` is not disabled, running compiled binary would fail with `syntax error: ... unexpected` or similar. This is due to kernel trying to interpret compiled binary with `/bin/sh`, and obviously failing. To verify that this is really the case, run your binary with the `DL_DEBUG=all` env var, and look for this output. If you see it, you should disable `relro` as described above.
0 commit comments