Fork 0
mirror of https://github.com/zephyrproject-rtos/sdk-ng.git synced 2024-07-13 11:36:09 +02:00
Go to file
Stephanos Ioannidis 4e7432fc8a gcc: Pull Zero/Sign extends for CMSE security
This commit pulls in the GCC patch that adds Zero/Sign extends for the
CMSE secure mode transitions to address the CVE-2024-0151.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2024-06-21 07:44:46 +09:00
.github/workflows ci: Trigger on release branches 2024-06-21 07:42:53 +09:00
binutils@81f63d18c4 binutils: Pull in segment first section address check workaround 2024-01-26 01:42:46 +09:00
cmake cmake: Declare toolchain support for GNU Extensions 2024-04-26 09:31:28 +09:00
configs Revert "configs: common: enable c++11 thread support via c11 threads" 2024-05-07 19:12:54 +09:00
contrib contrib: linux_build_toolchain: quote EOF and correct sdk var 2024-02-15 13:01:33 +09:00
crosstool-ng@5dfdb4b04f configs: common: enable c++11 thread support via c11 threads 2024-04-04 13:47:31 +09:00
gcc@f141243aec gcc: Pull Zero/Sign extends for CMSE security 2024-06-21 07:44:46 +09:00
gdb@db8bd068ed gdb: Pull in ARC patches 2022-07-08 16:25:54 +09:00
meta-zephyr-sdk openocd: Pull in STM32WBA5xx device support 2024-01-26 01:43:28 +09:00
newlib@fc9428506e configs: common: enable c++11 thread support via c11 threads 2024-04-04 13:47:31 +09:00
overlays xtensa: Add nxp_rt600_adsp toolchain 2023-12-11 15:10:57 +09:00
picolibc@764ef4e401 picolibc: Update to version 1.8.6 2024-01-25 19:45:51 +09:00
scripts ci: Use 7z format for Windows build artifacts 2022-11-25 20:34:38 +09:00
.gitignore gitignore: Add Emacs style backup file pattern 2019-11-14 09:34:13 -06:00
.gitmodules Add picolibc submodule 2022-11-25 20:34:38 +09:00
LICENSE license: add LICENSE file 2018-12-06 22:57:30 -05:00
README.md contrib: bash script to build one toolchain locally on Linux 2024-01-11 10:03:30 +09:00
release-notes.md release-notes: Add release notes for 0.16.8 2024-05-28 17:58:16 +09:00
VERSION VERSION: Bump to 0.16.8 2024-05-28 17:58:16 +09:00

Zephyr SDK

The Zephyr Software Development Kit (SDK) includes the toolchains for all supported target architectures as well as the host tools, such as QEMU and OpenOCD, for testing and debugging the Zephyr RTOS.

The toolchains for the following target architectures are supported:

  • ARC (32-bit and 64-bit; ARCv1, ARCv2, ARCv3)
  • ARM (32-bit and 64-bit; ARMv6, ARMv7, ARMv8; A/R/M Profiles)
  • Microblaze (32-bit)
  • MIPS (32-bit and 64-bit)
  • Nios II
  • RISC-V (32-bit and 64-bit; RV32I, RV32E, RV64I)
  • SPARC (32-bit and 64-bit; SPARC V8, SPARC V9)
  • x86 (32-bit and 64-bit)
  • Xtensa (sample_controller, intel_ace15_mtpm, intel_tgl_adsp, nxp_imx_adsp, nxp_imx8m_adsp, nxp_imx8ulp_adsp, nxp_rt500_adsp, espressif_esp32, espressif_esp32s2, espressif_esp32s3, mt8195_adsp)

The following host tools are available as part of the Zephyr SDK:

  • OpenOCD
  • QEMU
  • Xilinx QEMU


The Zephyr SDK bundle releases are available for the following host platforms:

  • Linux (AArch64, x86-64)
  • macOS (AArch64, x86-64)
  • Windows (x86-64)

These binaries can be downloaded from here.

For future release plans, please refer to the Release Plan document in the wiki.

Build Process

The Zephyr Project maintains the infrastructure necessary to build and test the Zephyr SDK, and it is highly recommended to utilise this infrastructure for generating the Zephyr SDK binaries.

When you submit a pull request to the Zephyr SDK repository, CI will automatically build and test the Zephyr SDK with the changes in the pull request and upload the binaries to the pull request check run, which you can download for further local testing as necessary.

To aid in verifying changes and introduction of a new toolchain, a helper script, contrib/linux_build_toolchain.sh, can be used to build one toolchain under Linux.

Workflow to Test Patches with Zephyr SDK

The following workflow can be used to test a patch for GCC, for example, building the SDK remotely:

  • Submit your DRAFT gcc PR to Zephyr's GCC fork (etc.)
  • Update .gitmodules in sdk-ng to point to the fork with your gcc commit(s)
  • Resync submodules (git submodule sync --recursive && cd gcc && git pull)
  • Checkout the gcc commit hash in sdk-ng's gcc submodule and commit the .gitmodule changes (git add .gitmodules gcc && git commit -s)
  • Submit a DRAFT PR to sdk-ng with the submodule change(s)

Zephyr's CI will then build a new toolchain, which will be available in the PR check step. Verify that the GCC fix behaves as expected with the generated SDK.

Release Process

To create a new Zephyr SDK release:

  • Update the VERSION file with the new version (e.g. 0.11.0 or 0.11.0-beta1)
  • On https://github.com/zephyrproject-rtos/sdk-ng/releases, create a new tag named with the version number prefixed with v (e.g. for the version 0.11.0, the tag name should be v0.11.0) and add the release information.
  • Once the release is published, CI will build the Zephyr SDK bundles for all supported host platforms and will upload the binaries to the release page.

For more detailed information on the release process, please refer to the Release Process document in the wiki.

Submodule Update Process

The Zephyr SDK repository contains various submodules, such as binutils and gcc, required for building the Zephyr SDK.

When updating a submodule, the following procedure should be followed:

  • Push a topic branch to the submodule repository.
  • Create a pull request from the topic branch to the default (current) branch of the submodule repository.
  • Create a pull request in the Zephyr SDK repository to update the submodule reference to the tip of the topic (pull request) branch.
  • When the pull request in the Zephyr SDK repository passes the CI and the submodule pull request is sufficiently reviewed, merge the submodule pull request.
  • Update the pull request in the Zephyr SDK repository to reference the merged commit in the submodule repository.
  • Merge the pull request in the Zephyr SDK repository.

When updating the picolibc submodule, the picolibc module in the west.yml of the main Zephyr repository must also be updated to reference the same commit.