diff --git a/.github/workflows/toolchain_build.yml b/.github/workflows/toolchain_build.yml index 4c3d227..8bcf743 100644 --- a/.github/workflows/toolchain_build.yml +++ b/.github/workflows/toolchain_build.yml @@ -25,27 +25,17 @@ jobs: - os: ubuntu-24.04-arm host_arch: aarch64 - name: rv32imcb - display_name: Toolchains targeting Ibex with bit-manipulation extensions + display_name: RV32IMCB toolchains (Ibex) target: riscv32-unknown-elf - output_dir: /tools/riscv march: rv32imc_zba_zbb_zbc_zbs mabi: ilp32 mcmodel: medany - name: rv64imac - display_name: GCC and Clang/LLVM toolchains targeting RV64IMAC (Muntjac) + display_name: RV64IMAC toolchains (Muntjac) target: riscv64-unknown-elf - output_dir: /tools/riscv march: rv64imac mabi: lp64 mcmodel: medany -# - name: multilib-baremetal -# display_name: RV64 GCC (Multilib Baremetal) -# target: riscv64-unknown-elf -# output_dir: /opt/riscv-baremetal-toolchain -# - name: multilib-linux -# display_name: RV64 GCC (Multilib Linux) -# target: riscv64-unknown-linux-gnu -# output_dir: /opt/riscv-linux-toolchain name: ${{ matrix.host_arch }} build of ${{ matrix.display_name }} runs-on: ${{ matrix.os }} @@ -62,10 +52,6 @@ jobs: ./prepare-host.sh echo ::endgroup:: - echo ::group::Install crosstool-ng - ./install-crosstool-ng.sh - echo ::endgroup:: - echo Preparing toolchain destination directory... sudo mkdir -p /tools/riscv sudo chmod 0777 /tools/riscv @@ -81,27 +67,27 @@ jobs: echo Creating artifact staging directory... mkdir "$ARTIFACT_STAGING_DIR" - - name: Build GCC toolchain + # Git warns about this repo having dubious ownership - ignore. + git config --global --add safe.directory "$(pwd)" + + - name: Build Binutils run: | - ./build-gcc-with-args.sh \ - "lowrisc-toolchain-gcc-${{ matrix.name }}" \ - "${{ matrix.target }}" \ - "${{ matrix.output_dir }}" \ - "${{ matrix.march }}" \ - "${{ matrix.mabi}}" \ - "${{ matrix.mcmodel }}" \ - "${{ matrix.cflags }}" + ./build-binutils.sh "${{ matrix.target }}" - name: Build Clang toolchain run: | ./build-clang-with-args.sh \ - "lowrisc-toolchain-${{ matrix.name }}" \ - "${{ matrix.target }}" \ - "${{ matrix.output_dir }}" \ - "${{ matrix.march }}" \ - "${{ matrix.mabi}}" \ - "${{ matrix.mcmodel }}" \ - "${{ matrix.cflags }}" + --name "lowrisc-toolchain-${{ matrix.name }}" \ + --target "${{ matrix.target }}" \ + --march "${{ matrix.march }}" \ + --mabi "${{ matrix.mabi}}" \ + --mcmodel "${{ matrix.mcmodel }}" + + - name: Package toolchains + run: | + ./create-prefixed-archive.sh \ + "lowrisc-toolchain-${{ matrix.name }}-${HOST_ARCH}-${RELEASE_TAG}" \ + "${ARTIFACT_STAGING_DIR}" - uses: actions/upload-artifact@v4 with: @@ -120,12 +106,8 @@ jobs: env: GH_TOKEN: ${{ github.token }} run: | - # Git warns about this repo having dubious ownership - ignore. - git config --global --add safe.directory /__w/lowrisc-toolchains/lowrisc-toolchains - # Create the release if it doesn't already exist. gh release create "$RELEASE_TAG" --prerelease || echo "release exists" # Upload this job's artifacts. gh release upload "$RELEASE_TAG" --clobber \ "${ARTIFACT_STAGING_DIR}/lowrisc-toolchain-${{ matrix.name }}-${HOST_ARCH}-${RELEASE_TAG}.tar.xz" \ - "${ARTIFACT_STAGING_DIR}/lowrisc-toolchain-gcc-${{ matrix.name }}-${HOST_ARCH}-${RELEASE_TAG}.tar.xz" diff --git a/README.md b/README.md index 549d2b5..7470eda 100644 --- a/README.md +++ b/README.md @@ -9,21 +9,13 @@ Head over to the [GitHub releases for this repository](https://github.com/lowRISC/lowrisc-toolchains/releases) for pre-built toolchains. -* A GCC RV32IMC without hardfloat support, targeting [Ibex](https://github.com/lowRISC/ibex/) -* A GCC RV64IMAC, targeting [Muntjac](https://github.com/lowRISC/muntjac) -* A GCC elf multilib toolchain -* A GCC linux multilib toolchain +* Clang RV32IMCB without hardfloat support, targeting [Ibex](https://github.com/lowRISC/ibex/) +* Clang RV64IMAC, targeting [Muntjac](https://github.com/lowRISC/muntjac) How to do a release ------------------- -1. Modify any of the following variables to configure the build: - - `CROSSTOOL_NG_VERSION` in `install-crosstool-ng.sh` - -2. Modify any of the `*.config` files to update the crosstool-ng configurations - for a particular toolchain. - -3. Push the changes or do a pull request, and wait for the CI workflow to +1. Push the changes or do a pull request, and wait for the CI workflow to complete. The build can be tested by downloading the GitHub artifacts. @@ -31,14 +23,14 @@ How to do a release 2. Select a workflow run from the list. 4. Download the desired artifact from the bottom of the page and test it. -4. Tag a release +2. Tag a release ```bash VERSION=$(date +%Y%m%d)-1 git tag -a -m "Release version $VERSION" $VERSION ``` -5. Push the tag +3. Push the tag ```bash git push origin $VERSION diff --git a/build-binutils.sh b/build-binutils.sh new file mode 100755 index 0000000..1fb4090 --- /dev/null +++ b/build-binutils.sh @@ -0,0 +1,72 @@ +#!/bin/bash +# Copyright lowRISC contributors. +# Licensed under the Apache License, Version 2.0, see LICENSE for details. +# SPDX-License-Identifier: Apache-2.0 + +## build-binutils.sh +# +# Builds: +# - GNU Binutils, GDB +# +# Then: +# - Creates a tar file of the whole install directory + +set -e -o pipefail + +repo_dir="$(git rev-parse --show-toplevel)" +build_dir="${repo_dir}/build" +patch_dir="${repo_dir}/patches" +dist_dir="${build_dir}/dist" + +source "${repo_dir}/sw-versions.sh" + +if [ "$#" -ne 1 ] || [ "$1" == "-h" ] || [ "$1" == "--help" ]; then + echo "USAGE: $0 " >&2 + echo >&2 + echo "EXAMPLE:" >&2 + echo " $0 riscv32" >&2 + exit 1 +fi + +target="$1" + +# Double check the arch part of the target tuple. +target_arch="${target/%-*}" +if [ "$target_arch" != "riscv32" ] && [ "$target_arch" != "riscv64" ]; then + echo "Error: unsupported target '${target}'" >&2 + echo >&2 + echo "Supported arches are: riscv32, riscv64" >&2 + exit 1 +fi + +set -x + +mkdir -p "$build_dir" +cd "$build_dir" + +if [ ! -d binutils ]; then + git clone "$BINUTILS_URL" binutils \ + --branch "$BINUTILS_BRANCH" \ + --depth 1 +fi + +cd binutils +git reset --hard +git checkout "$BINUTILS_COMMIT" +git apply "${patch_dir}/binutils/"* + +mkdir -p build +cd build + +mkdir -p "$dist_dir" + +# NOTE: We don't want to require `libexpat` to be dynamically linked. +# It turns out to be quite hard to statically link *only* `libexpat`. +../configure \ + --target "$target" \ + --program-prefix="$target-" \ + --prefix "$dist_dir" \ + --with-expat=no + +make -j "$(nproc)" +make install diff --git a/build-clang-with-args.sh b/build-clang-with-args.sh index 1dc5c09..e3abfba 100755 --- a/build-clang-with-args.sh +++ b/build-clang-with-args.sh @@ -5,8 +5,6 @@ ## build-clang-with-args.sh # -# This requires a gcc toolchain dir made by `build-gcc-with-args.sh` -# # Builds: # - Clang/LLVM # @@ -16,49 +14,75 @@ # - Creates a tar file of the whole install directory set -e -set -x set -o pipefail -if ! [ "$#" -ge 3 ]; then - echo "Usage: $0 " +repo_dir="$(git rev-parse --show-toplevel)" +build_dir="${repo_dir}/build" +dist_dir="${build_dir}/dist" + +usage="\ +USAGE: ${0} [options] + +OPTIONS: + -h,--help Print this message + --debug Build with assertions and debug info + --clean Build from scratch + +ARGS: + --name Name of the toolchain + --target Default target triple + --march Default -march + --mabi Default -mabi + --mcmodel Default -mcmodel +" +options="$(getopt -a -o '-h' -l 'help,name:,target:,march:,mabi:,mcmodel:,debug,clean' -- "$@")" + +err() { + echo "ERROR ${1}" >&2 + echo >&2 + echo "$usage" >&2 exit 2 -fi; - -## Take configuration from arguments -# This is the name for the tar file. -# Suggested to be the gcc config with s/gcc/clang/. Will be updated if it -# contains 'gcc' -toolchain_name="${1}" -# This is the expected gcc target triple (so we can set a default, and invoke gcc) -toolchain_target="${2}" -# This is the directory where we want the toolchain to added to -toolchain_dest="${3}" -# -march option default value -march="${4}" -# -mabi option default value -mabi="${5}" -# -mcmodel option default value -mcmodel="${6}" -# Remaining cflags for build configurations -toolchain_cflags=("${@:7}") - -build_top_dir="${PWD}" +} +[[ "$options" == *"--name"* ]] || err 'Missing argument `--name`' +[[ "$options" == *"--target"* ]] || err 'Missing argument `--target`' +[[ "$options" == *"--march"* ]] || err 'Missing argument `--march`' +[[ "$options" == *"--mabi"* ]] || err 'Missing argument `--mabi`' +[[ "$options" == *"--mcmodel"* ]] || err 'Missing argument `--mcmodel`' + +build_type=Release +clean=false + +eval set -- "$options" +while true; do + case "$1" in + -h,--help) echo "$usage" && exit 0;; + --name) toolchain_name="$2"; shift 2;; + --target) toolchain_target="$2"; shift 2;; + --march) march="$2"; shift 2;; + --mabi) mabi="$2"; shift 2;; + --mcmodel) mcmodel="$2"; shift 2;; + --debug) build_type=Debug; shift 1;; + --clean) clean=true; shift 1;; + --) shift; break;; + esac +done + +set -x # For *_VERSION variables # shellcheck source=sw-versions.sh -source "${build_top_dir}/sw-versions.sh" +source "${repo_dir}/sw-versions.sh" tag_name="${RELEASE_TAG:-HEAD}" -host_arch="${HOST_ARCH:-x86_64}" -toolchain_full_name="${toolchain_name}-${host_arch}-${tag_name}" - -mkdir -p "${build_top_dir}/build" -cd "${build_top_dir}/build" +mkdir -p "$build_dir" +cd "$build_dir" -llvm_dir="${build_top_dir}/build/llvm-project" -if [ ! -d "${llvm_dir}" ]; then - git clone --branch ${LLVM_BRANCH} ${LLVM_URL} "${llvm_dir}" +llvm_dir="${build_dir}/llvm-project" +if [ ! -d "$llvm_dir" ]; then + git clone "$LLVM_URL" "$llvm_dir" \ + --branch "$LLVM_BRANCH" \ + --depth 1 fi cd "${llvm_dir}" git fetch origin @@ -71,10 +95,11 @@ clang_links_to_create+=";${toolchain_target}-clang;${toolchain_target}-clang++" lld_links_to_create="ld.lld;ld64.lld" lld_links_to_create+=";${toolchain_target}-ld.lld;${toolchain_target}-ld64.lld" -llvm_build_dir="${build_top_dir}/build/llvm-build" +llvm_build_dir="${build_dir}/llvm-project/build" -# Delete old build artifacts (if they exist) -rm -rf "${llvm_build_dir}" +if [[ "$clean" == true ]]; then + rm -rf "${llvm_build_dir}" +fi mkdir -p "${llvm_build_dir}" cd "${llvm_build_dir}" @@ -110,8 +135,8 @@ llvm_distribution_components+=";${llvm_tools}" cmake "${llvm_dir}/llvm" \ -Wno-dev \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX="${toolchain_dest}" \ + -DCMAKE_BUILD_TYPE="${build_type}" \ + -DCMAKE_INSTALL_PREFIX="${dist_dir}" \ -DLLVM_TARGETS_TO_BUILD="RISCV" \ -DLLVM_ENABLE_PROJECTS="clang;lld;clang-tools-extra" \ -DLLVM_ENABLE_BACKTRACES=Off \ @@ -132,31 +157,22 @@ cmake --build "${llvm_build_dir}" \ --parallel $(( $(nproc) + 2 )) \ --target install-distribution -cd "${build_top_dir}" - -## Create Toolchain Files! -# These don't yet add cflags ldflags -"${build_top_dir}/generate-clang-cmake-toolchain.sh" \ - "${toolchain_target}" "${toolchain_dest}" "${toolchain_cflags[@]}" -"${build_top_dir}/generate-clang-meson-cross-file.sh" \ - "${toolchain_target}" "${toolchain_dest}" ${march} ${mabi} ${mcmodel} \ - "${toolchain_cflags[@]}" +cd "${repo_dir}" # Copy LLVM licenses into toolchain -mkdir -p "${toolchain_dest}/share/licenses/llvm" -cp "${llvm_dir}/llvm/LICENSE.TXT" "${toolchain_dest}/share/licenses/llvm" +mkdir -p "${dist_dir}/share/licenses/llvm" +cp "${llvm_dir}/llvm/LICENSE.TXT" "${dist_dir}/share/licenses/llvm" -ls -l "${toolchain_dest}" +ls -l "${dist_dir}" # Write out build info set +o pipefail # head causes pipe failures, so we have to switch off pipefail while we use it. ct_ng_version_string="$( (set +o pipefail; ct-ng version | head -n1) )" -clang_version_string="$("${toolchain_dest}/bin/clang" --version | head -n1)" -gcc_version_string="$("${toolchain_dest}/bin/${toolchain_target}-gcc" --version | head -n1)" +clang_version_string="$("${dist_dir}/bin/clang" --version | head -n1)" build_date="$(date -u)" set -o pipefail -tee "${toolchain_dest}/buildinfo" < " - exit 2 -fi; - -## Take configuration from arguments -# This is the name for the tar file, and also the basename of the .config file -toolchain_name="${1}" -# This is the expected gcc target triple (so we can invoke gcc) -toolchain_target="${2}" -# This is the directory where we want the toolchain to be installed. -toolchain_dest="${3}" -# -march option default value -march="${4}" -# -mabi option default value -mabi="${5}" -# -mcmodel option default value -mcmodel="${6}" -# Remaining cflags for build configurations -toolchain_cflags=("${@:7}") - -build_top_dir="${PWD}" - -# For *_VERSION variables -# shellcheck source=sw-versions.sh -source "${build_top_dir}/sw-versions.sh" - -tag_name="${RELEASE_TAG:-HEAD}" -host_arch="${HOST_ARCH:-x86_64}" -toolchain_full_name="${toolchain_name}-${host_arch}-${tag_name}" - -# crosstools-NG needs the ability to create and chmod the -# $toolchain_dest directory. -sudo mkdir -p "$(dirname "${toolchain_dest}")" -sudo chmod 777 "$(dirname "${toolchain_dest}")" - -mkdir -p "${toolchain_dest}" - -mkdir -p "${build_top_dir}/build/gcc" -cd "${build_top_dir}/build/gcc" - -# Create crosstool-ng config file with correct `CT_PREFIX_DIR` and `CT_LOCAL_PATCH_DIR` -{ - grep -v '^CT_PREFIX_DIR=' "${build_top_dir}/${toolchain_name}.config" - echo "" - echo "# ADDED BY ${0}"; - echo "CT_PREFIX_DIR=\"${toolchain_dest}\"" - echo "CT_LOCAL_PATCH_DIR=\"${build_top_dir}/patches/${toolchain_name}\"" - echo "CT_ALLOW_BUILD_AS_ROOT=y" - echo "CT_ALLOW_BUILD_AS_ROOT_SURE=y" - echo "# END ADDED BY ${0}" -} > .config -ct-ng upgradeconfig -cat .config - -# crosstool-ng doesn't work with some environment variables set, leading to -# errors like "Don't set LD_LIBRARY_PATH. It screws up the build." otherwise. -# Do so in a subshell to avoid disturbing subsequent tasks. -( - unset LD_LIBRARY_PATH - unset LIBRARY_PATH - unset LPATH - unset CPATH - unset C_INCLUDE_PATH - unset CPLUS_INCLUDE_PATH - unset OBJC_INCLUDE_PATH - unset CFLAGS - unset CXXFLAGS - unset CC - unset CXX - unset GREP_OPTIONS - - # Invoke crosstool-ng - ct-ng build -) - -cd "${build_top_dir}" - -## Create Toolchain Files! -# These don't yet add cflags ldflags -"${build_top_dir}/generate-gcc-cmake-toolchain.sh" \ - "${toolchain_target}" "${toolchain_dest}" "${toolchain_cflags[@]}" -"${build_top_dir}/generate-gcc-meson-cross-file.sh" \ - "${toolchain_target}" "${toolchain_dest}" ${march} ${mabi} ${mcmodel} \ - "${toolchain_cflags[@]}" - -ls -l "${toolchain_dest}" - -# Write out build info -set +o pipefail # head causes pipe failures, so we have to switch off pipefail while we use it. -ct_ng_version_string="$(ct-ng version | head -n1)" -gcc_version_string="$("${toolchain_dest}/bin/${toolchain_target}-gcc" --version | head -n1)" -build_date="$(date -u)" -set -o pipefail - -tee "${toolchain_dest}/buildinfo" < " +if ! [ "$#" = 2 ]; then + echo "Usage: $0 " exit 2 fi; +repo_dir="$(git rev-parse --show-toplevel)" +build_dir="${repo_dir}/build" +dist_dir="${build_dir}/dist" + # These arguments are provided by `./build-*-with-args.sh` toolchain_full_name="$1" -toolchain_dest="$2" -artifact_dir="${3:-.}" +artifact_dir="${2:-.}" tar -cJ \ --show-transformed-names --verbose \ - --directory="$(dirname "${toolchain_dest}")" \ - -f "${artifact_dir}/$toolchain_full_name.tar.xz" \ - --transform="flags=rhS;s@^$(basename "${toolchain_dest}")@$toolchain_full_name@" \ + --directory="$(dirname "$dist_dir")" \ + -f "${artifact_dir}/${toolchain_full_name}.tar.xz" \ + --transform="flags=rhS;s@^$(basename "$dist_dir")@${toolchain_full_name}@" \ --owner=0 --group=0 \ - "$(basename "${toolchain_dest}")" + "$(basename "$dist_dir")" diff --git a/generate-clang-cmake-toolchain.sh b/generate-clang-cmake-toolchain.sh deleted file mode 100755 index f676357..0000000 --- a/generate-clang-cmake-toolchain.sh +++ /dev/null @@ -1,90 +0,0 @@ -#!/bin/bash -# Copyright lowRISC contributors. -# Licensed under the Apache License, Version 2.0, see LICENSE for details. -# SPDX-License-Identifier: Apache-2.0 - -## generate-clang-cmake-toolchain.sh -# -# This generates a cmake-toolchains(7) file to configure CMake for -# cross-compiling with clang. -# -# Docs: https://cmake.org/cmake/help/v3.15/manual/cmake-toolchains.7.html - -set -e -set -x -set -o pipefail - -if ! [ "$#" -ge 2 ]; then - echo "Usage: $0 " - exit 2 -fi; - -## Take configuration from arguments -# This is the gcc target triple -toolchain_target="${1}" -# This is the directory where the toolchain has been installed. -toolchain_dest="${2}" -# Remaining cflags for build configurations -toolchain_cflags=("${@:3}") - -cmake_cflags="" -for flag in "${toolchain_cflags[@]}"; do - if [ -z "${cmake_cflags}" ]; then - cmake_cflags+="${flag}"; - else - cmake_cflags+=";${flag}" - fi -done - -config_dest="${toolchain_dest}/${toolchain_target}-clang.cmake" -sysroot_config="" -system_name="" - -case "${toolchain_target}" in - riscv*-*-linux-gnu) - system_name="Linux" - sysroot_config="set(CMAKE_SYSROOT \"\${LOWRISC_TOOLCHAIN}/${toolchain_target}/sysroot\" CACHE STRING \"\" FORCE)"; - ;; - riscv*-*-elf) - system_name="Generic" - ;; -esac; - -tee "${config_dest}" < " - exit 2 -fi; - -## Take configuration from arguments -# This is the gcc target triple -toolchain_target="${1}" -# This is the directory where the toolchain has been installed. -toolchain_dest="${2}" -# Remaining cflags for build configurations -toolchain_cflags=("${@:3}") - -cmake_cflags="" -for flag in "${toolchain_cflags[@]}"; do - if [ -z "${cmake_cflags}" ]; then - cmake_cflags+="${flag}"; - else - cmake_cflags+=";${flag}" - fi -done - -config_dest="${toolchain_dest}/${toolchain_target}-gcc.cmake" -sysroot_config="" -system_name="" - -case "${toolchain_target}" in - riscv*-*-linux-gnu) - system_name="Linux" - sysroot_config="set(CMAKE_SYSROOT \"\${LOWRISC_TOOLCHAIN}/${toolchain_target}/sysroot\" CACHE STRING \"\" FORCE)"; - ;; - riscv*-*-elf) - system_name="Generic" - ;; -esac; - -tee "${config_dest}" <, good enough for Gnulib. */ #define SHLIB_COMPAT(lib, introduced, obsoleted) 0 - #define compat_symbol(lib, local, symbol, version) extern int dummy - #define versioned_symbol(lib, local, symbol, version) extern int dummy + #define versioned_symbol(lib, local, symbol, version) + +#ifndef __THROWNL +#define __THROWNL __THROW diff --git a/patches/lowrisc-toolchain-gcc-rv32imcb/gdb/11.1/001-glob-libc-config.patch b/patches/lowrisc-toolchain-gcc-rv32imcb/gdb/11.1/001-glob-libc-config.patch deleted file mode 100644 index 77a75ed..0000000 --- a/patches/lowrisc-toolchain-gcc-rv32imcb/gdb/11.1/001-glob-libc-config.patch +++ /dev/null @@ -1,25 +0,0 @@ -diff --git a/gnulib/import/glob.c b/gnulib/import/glob.c -index 1bfcafb..9947f24 100644 ---- a/gnulib/import/glob.c -+++ b/gnulib/import/glob.c -@@ -21,7 +21,7 @@ - optimizes away the pattern == NULL test below. */ - # define _GL_ARG_NONNULL(params) - --# include -+# include - - #endif - -diff --git a/gnulib/import/libc-config.h b/gnulib/import/libc-config.h -index e3571ee..44c3d0f 100644 ---- a/gnulib/import/libc-config.h -+++ b/gnulib/import/libc-config.h -@@ -189,3 +189,7 @@ - #define SHLIB_COMPAT(lib, introduced, obsoleted) 0 - #define compat_symbol(lib, local, symbol, version) extern int dummy - #define versioned_symbol(lib, local, symbol, version) extern int dummy -+ -+#ifndef __THROWNL -+#define __THROWNL __THROW -+#endif diff --git a/patches/lowrisc-toolchain-gcc-rv64imac/gdb/11.1/001-glob-libc-config.patch b/patches/lowrisc-toolchain-gcc-rv64imac/gdb/11.1/001-glob-libc-config.patch deleted file mode 100644 index 77a75ed..0000000 --- a/patches/lowrisc-toolchain-gcc-rv64imac/gdb/11.1/001-glob-libc-config.patch +++ /dev/null @@ -1,25 +0,0 @@ -diff --git a/gnulib/import/glob.c b/gnulib/import/glob.c -index 1bfcafb..9947f24 100644 ---- a/gnulib/import/glob.c -+++ b/gnulib/import/glob.c -@@ -21,7 +21,7 @@ - optimizes away the pattern == NULL test below. */ - # define _GL_ARG_NONNULL(params) - --# include -+# include - - #endif - -diff --git a/gnulib/import/libc-config.h b/gnulib/import/libc-config.h -index e3571ee..44c3d0f 100644 ---- a/gnulib/import/libc-config.h -+++ b/gnulib/import/libc-config.h -@@ -189,3 +189,7 @@ - #define SHLIB_COMPAT(lib, introduced, obsoleted) 0 - #define compat_symbol(lib, local, symbol, version) extern int dummy - #define versioned_symbol(lib, local, symbol, version) extern int dummy -+ -+#ifndef __THROWNL -+#define __THROWNL __THROW -+#endif diff --git a/sw-versions.sh b/sw-versions.sh index ca2623c..ff67711 100644 --- a/sw-versions.sh +++ b/sw-versions.sh @@ -2,13 +2,6 @@ # This documents the versions of any software checked out from git -# crosstool-ng-1.26.0-rc1 -export CROSSTOOL_NG_URL=https://github.com/crosstool-ng/crosstool-ng.git -export CROSSTOOL_NG_VERSION=5a09578b6798f426b62d97b2ece1ba5e7b82990b - -# v4.0.1 -export QEMU_VERSION=23967e5b2a6c6d04b8db766a8a149f3631a7b899 - # LLVM 16.0.2 plus: # - hardening patches # - unratified bitmanip extensions @@ -17,3 +10,8 @@ export QEMU_VERSION=23967e5b2a6c6d04b8db766a8a149f3631a7b899 export LLVM_URL=https://github.com/lowRISC/llvm-project.git export LLVM_BRANCH=ot-llvm-16-hardening export LLVM_VERSION=dec908d48facb6041c12b95b8ade64719a894917 + +# RISC-V fork of Binutils 2.35 with bitmanip instruction support +export BINUTILS_URL=https://github.com/riscv-collab/riscv-binutils-gdb.git +export BINUTILS_BRANCH=riscv-binutils-2.35-rvb +export BINUTILS_COMMIT=7c9dd840fbb6a1171a51feb08afb859288615137