QNX SDP 8.0.2 Release Notes

QNX SDP is a cross-compiling and debugging environment, including an IDE and command-line tools, for building binary images and programs for target boards running the QNX OS 8.0.2. These release notes describe the key features of this new release and the notable improvements since the previous release, and provide installation instructions.


Date of this edition: February 18, 2025

Target hardware

This product can run on x86_64 hardware platforms and AArch64 platforms that support the ARMv8.0 or v8.2 instruction sets. For the list of specific boards that this release supports, refer to Which platforms does the QNX OS support? below.

Development host OSs

You must install QNX SDP 8.0.2 onto a development host with one of the following 64-bit operating systems:

  • Microsoft Windows 11, or Windows 10
  • Ubuntu Desktop 24.04 LTS, Ubuntu Desktop 22.04 LTS, or Red Hat Enterprise Linux 9
Note:
  • QNX SDP isn't supported on host systems that use ARM processors.
  • QNX SDP isn't supported on macOS anymore.

Contents

What's new in QNX SDP?

Component Feature Details
General N/A The AArch64 binaries have been tested on ARMv9.0 hardware; however the ARMv9.0 extensions are not yet supported.
General N/A Ubuntu 24.04 has been added as a supported development host OS.
Kernel Multiple features
  • Added framework for future support of Generic Interrupt Controller (GIC) kernel modules.
  • Added support to emit trace events during thread context switches containing the pointer counter of the outgoing thread.
  • Added Pointer Authentication support.
  • Improvements to resource allocation logic.
  • Added configurable limit on the number of POSIX message queues that a process may create and keep open concurrently.
  • Added configurable limit on the maximum memory usage allowed for all of a process's POSIX message queues.
Filesystems Performance improvement Improved multithreaded filesystem performance.
Image-building tools mkxfs utilities The mkxfs utility has been updated to allow the build file to do the following:
  • Specify additional paths to include in the default paths.
  • Reference files as variables relative to the provided root paths.
PCI Multiplexer Added PCI Multiplexer.
Networking High-performance networking stack The FreeBSD version that QNX OS networking is based on has been updated from 13.3 to 13.4.
Networking High-performance networking stack The networking stack and drivers have been updated to support the Raspberry Pi 5 and NXP S32G3 boards.
Networking High-performance networking stack The devs-vtnet_mmio.so and devs-vtnet_pci.so drivers, which support VirtIO MMIO and PCI Ethernet devices, have changed from experimental to stable.
Networking High-performance networking stack The networking stack has been tested for TC8 (Automotive Ethernet ECU Test Specification) conformance (excluding the SOME/IP communication protocol).
Networking High-performance networking stack A driver for RealTek 8125/8126 PCI/PCIe Ethernet adapters (devs-rt.so) has been added.
Networking High-performance networking stack The networking stack now supports the standard FreeBSD devctl commands suspend and resume.
Networking High-performance networking stack The new sysctl variable qnx.net.inet.tcp.rfc1323_timestamps allows you to disable or enable TCP timestamps, for both inbound and outbound traffic.
Security Multiple features To enhance the security measures that the pathtrust feature provides, the behavior of the PROCMGR_AID_PROT_EXEC and PROCMGR_AID_PROT_WRITE_AND_EXEC abilities has changed. For more information, go to the Abilities section of the System Security Guide.
Security Multiple features The chroot (change root) behavior now allows processes to be granted access to selected resource managers or files that are located outside of the new root path. For more information, go to the change root (chroot) section of the System Security Guide.
Security Multiple features The new security policy event library (libsecpolev) allows you to monitor system trace events that relate to the successful or failed use of privileges covered by security policies.
Host Tools mkqnximage
  • Added a feature to set the ARM version of the virtualized CPU for QEMU virtual machines.

  • Executable files are now placed in /system/bin instead of /system/xbin. For more information, access the Migrating to QNX OS 8.0 document.
Host Tools C++ libraries and language standards LLVM libc++ version has been updated to version 18. This upgrade enables partial support for parallel algorithms. In this release, these libraries support the C++17 and C++20 standards. For more information, refer to the libc++ C++20 Status page from the LLVM Project website and the C++20 Support in GCC page from the GNU website. It is recommended that you recompile any existing binaries that use libc++ against this updated version.
Host Tools binutils binutils has been updated to v2.43.
Host Tools GDB GDB has been updated to v14.
Host Tools Ubuntu Support for Ubuntu 24.04 as a host development platform has been added.
Host Tools no-builtin-libm A new compiler option (-fno-builtin-libm) has been added to provide a shorthand to disable all libm builtins in the compiler.
Host Tools Critical Process Launch
  • A new modifier (critical) has been added to mkifs to indicate if a process should or should not be launched as critical.
  • dumpifs and pidin have also been updated to indicate if a process is critical.
Host Tools ps The QNX version of ps has been restored.
Target Tools Toybox The toybox version that QNX OS uses is updated from 0.8.10 to 0.8.11.

Installing QNX SDP

To use QNX SDP 8.0.2, you need to have QNX Software Center 2.0.3. For information about installing and opening this other product, refer to Install and launch the QNX Software Center in the QNX Software Center User's Guide.

You can install QNX SDP 8.0.2 as a new, separate installation of the baseline product, or as an update to an existing QNX SDP 8.0 installation.

To install the QNX SDP 8.0.2 packages as a new baseline product, open the QNX Software Center and click Add Installation on the left to launch the New Installation Wizard. In the first dialog, select QNX Software Development Platform 8.0. Follow the prompts (e.g., the Next and Installbuttons) to perform the installation. Be sure to select a Conservative installation policy to ensure you install all of the SDP 8.0.2 packages. For more information, refer to Install the QNX Software Development Platform in the QNX Software Center User's Guide.

To update your existing QNX SDP 8.0 installation to version 8.0.2, open the QNX Software Center, select the installation you want to update in the Active Installation dropdown on the Welcome page, then click Manage Installation. Click the Updates tab, then search for GA8.0.2. Select all packages and then follow the prompts (e.g., the Next and Install buttons) to perform the installation.
Note:
When upgrading an installation to 8.0.2, consider the post 8.0.2 packages. For example, download the HIDDI package with Build ID 8 (QNX SDP 8.0.2 OS Services Update) instead of Build ID GA8.0.2.

To access the contents of a package, right-click it in the QNX Software Center, choose Properties, then click Package Contents. Some of the packages may contain no files but instead references to contained packages (or subpackages), in which case the contents page will display a note saying so. To access the list of subpackages, right-click the package, choose Properties, then click Package Dependencies. Because the baseline OS product has many inter-package dependencies, sometimes you have to go through multiple levels of subpackages to access the included files.

Note:
Some packages in this release include experimental files. The maturity level of individual files is displayed in the Status column in the package contents table. The individual files in a package can have different maturity levels.

You can also obtain the maturity statuses of files by generating a manifest report. For more information, refer to the Manifest Reports & File Lookup chapter of the QNX Software Center User's Guide.

Each package has its own maturity level. You can learn this by right-clicking the package, choosing Properties, then clicking General Information. In the Legal and Regulatory Information panel, there's a Status field. For details about the possible values of this field, refer to the Package status section in the Deploy licenses to users topic in the QNX Software Center User's Guide.

Debug information for shipped binaries

The QNX SDP target binaries are generated with debug information (-g), with the debug form of the binary stored in a separate binaryName.sym file. The non-sym form is stripped of the debug and .ident information (use -s works only on files containing the .ident section).

Most target packages include debug information (.sym files). The binaries and their .sym files are linked, so gdb understands where to find the symbol data. There's no need to store .sym files for the binaries on a target.

If the debug symbols are especially large, there might be a separate debug package in the QNX Software Center. To install debug symbols in this case, select your installation from the toolbar, then go to the Advanced tab. Click Edit Installation Properties. In the property dialog that opens, ensure that the Install debug symbols checkbox is checked (this box is checked by default). Click OK.

If you decide to not install the debug information but later want it, you can right-click a package and choose Install debug symbols.

Experimental items

CAUTION:
Experimental software is primarily provided for customers and the community to try out, and to get an idea of what might be coming in the future. For information about the use of experimental software, refer to the Commercial Software License Agreement (CSLA) or Partner Software License Agreement (PSLA) in the Licensing area of our website: https://www.qnx.com/legal/licensing/.

Some experimental items are implemented in the packages of the baseline product. This means these items are installed when you install QNX SDP and, hence, there's nothing else you must do to be able to use them. Other experimental items are contained in their own packages that aren't installed when you install QNX SDP. To locate and install these packages so you can use the items they contain, go to the Available tab in QNX Software Center and search for part or all of the package name. Then, click the package in the search results and then the Install button in the bottom right corner.

The table that follows lists the experimental items by functional area and indicates whether each one is contained in an additional package that must be installed separately.

Functional area Item description Additional package
Kernel Dynamic Processor State Management:
  • The SchedCtl() commands SCHED_PROCESSOR_ONLINE and SCHED_PROCESSOR_OFFLINE.
  • TimerDelegate() and TimerDelegate_r() functions.
  • The SchedSet() scheduling policy SCHED_OFFLINING (and the PROCMGR_AID_RUNSTATE ability needed to set it)
N/A (included in baseline product)
BSP & Drivers Added Dynamic Interrupt Manager (DIM) N/A
Networking Texas Instruments Jacinto 7 network drivers (devs-cpsw-j721e.so, devs-cpsw-j784s4.so, devs-cpsw-j721s2.so) N/A
Networking Texas Instruments Sitara network driver (devs-cpsw-am62x.so) N/A
Networking DWC gmac network driver (devs-dwc.so) N/A
Networking RNDIS USB network driver (devs-urndis.so) N/A
Networking Marvell Network PHY driver (devs-marvell_phy.so) N/A
Networking RT9010 network PHY driver (devs-rt9010phy.so) N/A
Screen Support for the core Wayland communication library and the Weston compositor for Screen QNX SDP 8.0 Wayland/Weston
Screen Tools for using Wayland on Linux 64-bit hosts QNX SDP 8.0 Wayland host tools (Linux 64-bit)
Screen Tools for using Wayland on Windows 64-bit hosts QNX SDP 8.0 Wayland host tools (Windows 64-bit)

Fixed issues

The following issues are fixed in this update. To find a specific issue, search for a reference number on this page or use the search tool:
Description Applicable Architecture(s) Application-Level Impact System-Level Impact Reference Number

Using libc++ remove_all() to delete a directory and its contents might fail, if the directory contains a file entry which is a symbolic link.

AArch64, x86_64 None Rebuild the Image Filesystem (IFS) with an updated version of libc++. 2943012
This release of libc++ doesn't support the <format> header. AArch64, x86_64 None Rebuild the Image Filesystem (IFS) with an updated version of libc++. 2945645
Fixed a problem that caused packets to not be received by the guest OS when hardware offload of VLAN IPv6 packets was enabled for a QNX hypervisor host. AArch64, x86_64 None Rebuild with updated io-sock. 2966803
Nexus devices can now be unmounted using the unmount utility. AArch64, x86_64 None Rebuild with updated io-sock. 2964144
The sysctl utility now returns an error if you try to set the variable qnx.sec.droproot more than once. AArch64, x86_64 None Rebuild with updated io-sock. 2963478
Disabling transmit checksum offload (-txcsum) on a bridge interface now takes effect as expected. AArch64, x86_64 None Rebuild with updated io-sock. 2966864
An issue that caused mkqfs to fail when the buildfile was missing some attributes has been fixed. AArch64, x86_64 None Use the updated mkqfs to build your QCFS image. 2965744
The runtime linker, ldqnx-64.so, can now handle a dynamic section that includes more than 256 valid entries. This means that an ELF object with more than 256 dynamic entries can be loaded. AArch64, x86_64 None Rebuild the Image Filesystem (IFS) with an updated ldqnx-64.so. 2977055
The TLSDESC resolvers incorrectly assume that the thread pointer is read after they complete. AArch64, x86_64 None Rebuild the Image Filesystem (IFS) with an updated ldqnx-64.so. 2949788

The DF_STATIC_TLS flag is not supported. Use of this flag in a dynamically loaded library may lead to application crashes and other unexpected behavior.

AArch64, x86_64 None Rebuild the Image Filesystem (IFS) with an updated ldqnx-64.so. 2947151
The QNX procnto process may run out of fds due to failing to close those that were associated with file back shared memory that had been served by processes that are no longer running. AArch64, x86_64 None Rebuild the Image Filesystem (IFS) with an updated kernel. 2913593
The grow-heap option doesn't work on the smmuman service. AArch64, x86_64 None Rebuild the Image Filesystem (IFS) with an updated smmuman utility. 2950191
When using the driver for the Cadence GEM (cgem) controller (devscgem.so), a cgem interface may stop receiving packets when there is heavy network traffic. AArch64, x86_64 None Rebuild with updated io-sock. 2972167
The statvfs() function fails and returns the EBADMSG error if the path is hosted by a devf filesystem. AArch64, x86_64 None Rebuild your BSP's devf driver against the updated libfs-flash3.a and then rebuild the IFS using the new devf driver. 2954965

The inotify_rm_watch() function is not implemented in QNX SDP8.

AArch64, x86_64 None Rebuild the Image Filesystem (IFS) so that it contains the updated fsevmgr and libfsnotify.so.1. 2935914
Errors are generated when you set the waitfor component parameter that specifies a time in milliseconds for system launch and monitor (SLM) to pause before starting the dependent components (wait="delay"). AArch64, x86_64 None Rebuild the Image Filesystem (IFS) with an updated SLM service. 2965394, 2909161
The name of pid 1 is sometimes not a form of procnto in the output of pidin. AArch64, x86_64 None Rebuild the Image Filesystem (IFS) with an updated mkxfs utility kernel. 2943132
For ThreadCtl() and ThreadCtl_r(), you cannot use the _NTO_TCTL_RUNMASK_GET_AND_SET command to control the calling thread's processor affinity for CPUs CPUs 33 to 64. This is because the data parameter points to a 32-bit field. However, the _NTO_TCTL_RUNMASK command can set the thread affinity for CPUs 33 to 64. AArch64, x86_64 None None 2949426

Licensing information

The QNX SDP licensing, packaging, and fulfillment model from the previous release has been carried forward to this release. That is, QNX SDP will be available in the QNX Download Center and QNX Software Center as a new product baseline. Additionally, the license agreements will include a few enhancements for clarifications but otherwise will remain unchanged.

Getting started with the documentation

The QNX SDP 8.0 documentation is found on our public website at https://www.qnx.com/developers/docs/8.0/com.qnx.doc.qnxsdp.nav/topic/bookset.html.

This roadmap page contains links to the various booksets that accompany the QNX OS. For a short tutorial that will help you set up a QNX OS target and run a simple program, refer to the Quickstart Guide. Then you can access the other key documents (QNX OS System Architecture, Programmer's Guide, C Library Reference, and more) to learn about how the QNX OS is designed and how to write programs that run on it.

Technical support

To obtain technical support for any QNX product, visit the Support area on our website: https://blackberry.qnx.com/en/support. You'll find a range of support options.

For product experience and roadmap information, please contact QNX Product Management.

Page updated: