Giter VIP home page Giter VIP logo

crosstool-ng-old's Introduction

Crosstool-NG

Introduction

Crosstool-NG aims at building toolchains. Toolchains are an essential component in a software development project. It will compile, assemble and link the code that is being developed. Some pieces of the toolchain will eventually end up in the resulting binaries: static libraries are but an example.

Before reporting a bug, please read bug reporting guidelines. Bugs that do not provide the required information will be closed without explanation.

Refer to documentation at crosstool-NG website for more information on how to configure, install and use crosstool-NG.

Note 1: If you elect to build a uClibc-based toolchain, you will have to prepare a config file for uClibc with <= crosstool-NG-1.21.0. In >= crosstool-NG-1.22.0 you only need to prepare a config file for uClibc(or uClibc-ng) if you really need a custom config for uClibc.

Note 2: If you call ct-ng --help you will get help for make(2). This is because ct-ng is in fact a make(2) script. There is no clean workaround for this.

Repository layout

To clone the crosstool-NG repository:

git clone https://github.com/crosstool-ng/crosstool-ng

Build Status

  • CI

Old repositories

These are the old Mercurial repositories. They are now read-only: http://crosstool-ng.org/hg/

Pull Requests and Issues

You can find open Pull Requests on GitHub here and you can find open issues here.

Contributing

To contribute to crosstool-NG it is helpful to provide as much information as you can about your change, including any updates to documentation (if appropriate), and test... test... test.

git clone https://github.com/crosstool-ng/crosstool-ng
  • Create a topic branch for your work
git checkout -b fix_comment_typo
  • Make changes
  • hack
  • test
  • hack
  • etc...
  • Add your changes
git add [file(s) that changed, add -p if you want to be more specific]
  • Verify you are happy with your changes to be commited
git diff --cached
  • Commit changes
git commit -s

The -s automatically adds your Signed-off-by: [name] <email> to your commit message. Your commit will be rejected without this.

Also, please explain what your change does. "Fix stuff" will be rejected. For examples of good commit messages, read the changelog.

  • Push your topic branch with your changes to your fork
git push origin fix_comment_typo
  • Go to the crosstool-ng project and click the Compare & pull request button for the branch you want to open a pull request with.
  • Review the pull request changes, and verify that you are opening a pull request for the appropriate branch. The title and message should reflect the nature/theme of the changes in the PR, say the title is Fix comment typos and the message details any specifics you can provide.
  • You might change the crosstool-ng branch, if you are opening a pull request that is intended for a different branch. For example, when you created your topic branch you could have done:
git checkout -b fix_out_of_date_patch origin/1.22

Then when you get to this pull request screen change the base branch from master to 1.22

  • By creating a pull request, the PR is entered into the backlog. A travis-ci job will run to test your changes against a select set of samples. As they start to get worked, they should be placed in the Ready state. PRs that are being worked are In Progress. If a questions come up about the commit that might envolve changes to the commit then the PR is placed in Waiting For Response, you have two options:
  1. Fix the issue with the commit by adding a new commit in the topic branch that fixes the code review. Then push your changes to your branch. This option keeps the comments in the PR, and allows for further code review. I personally dislike this, because people are lazy and fix reviews with fix more review issues. Please make good commit messages! All rules about commits from above apply! THIS IS PREFERED

Add your changes

git add [file(s) that changed, add -p if you want to be more specific]

Verify you are happy with your changes to be commited

git diff --cached

Commit changes

git commit -s
  • Push your topic branch with your changes to your fork
git push origin fix_comment_typo

At this point the PR will be updated to have the latest commit to that branch, and can be subsequently reviewed.

  1. Interactively rebase the offending commit(s) to fix the code review. This option is slightly annoying on Github, as the comments are stored with the commits, and are hidden when new commits replace the old commits. They used to disappear completely; now Github shows a grey 'View outdated' link next to the old commits.

This recipe also comes handy with other issues, like your topic branch not being up-to-date with master:

git fetch --all
git rebase --ignore-whitespace origin master
git rebase -i <offending-commit-id>^

NOTE: The --ignore-whitespace stops git apply (which is called by rebase) from changing any whitespace when it runs.

Replace pick with edit or remove the line to delete a commit. Fix the issue in the code review.

git add [file(s)]
git rebase --continue
<update commit comment if needed>
git push --force origin fix_comment_typo

Patchwork

We previously used patchwork for development, but it is no longer used. I'd like to see patches that are still applicable turned into Pull Requests on GitHub.

You can find the list of pending patches available on patchwork.

More Info

You can find all of this and more at crosstool-ng.org

Report issues at the project site on GitHub.

We have a mailing list. Archive and subscription info can be found here: https://sourceware.org/ml/crossgcc/

Aloha! :-)

crosstool-ng-old's People

Contributors

abrodkin avatar antmak avatar bartvdrmeulen avatar bhundven avatar bthebaudeau avatar christopher83 avatar codyps avatar cpackham avatar davidholsgrove avatar deece avatar dimkr avatar diorcety avatar enunes avatar jasmin-j avatar jcmvbkbc avatar jmlemetayer avatar kirillsmirnov avatar ksergeyv avatar lacombar avatar mingwandroid avatar netzimme avatar nolange avatar nzmichaelh avatar stephanosio avatar stilor avatar tkil avatar tpetazzoni avatar tvb377 avatar yann-morin-1998 avatar ysharma-harris avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

isabella232

crosstool-ng-old's Issues

Implement Ubuntu packages

TODO

  • Create zephyr-crosstool-ng package
  • Create zephyr-crosstool compiler toolchain packages
  • Create zephyr-qemu QEMU package

NOTE

  • All component source code repositories must be hosted on LaunchPad in order to be able to make use of the LaunchPad build servers. This will be handled by creating a "LaunchPad project" and importing the GitHub repositories there (automatically synced).
  • Packages will be hosted on the LaunchPad PPA. The PPA will be part of the "LaunchPad Zephyr RTOS Project" team.

Copy libgloss for newlib nano variant build

Hi, the nano.specs file references libgloss_nano, however this file does not get created with the "Enable newlib nano" option.

I added the following code to the newlib.sh file in the newlib_copy_nano_multilibs() function and it seems to work. Is this the correct way to get Libgloss_nano?

CT_DoExecLog ALL cp -f "${nano_lib_dir}/${CT_TARGET}/lib/${multi_dir}/libgloss.a"
"${CT_PREFIX_DIR}/${CT_TARGET}/lib/${multi_dir}/libgloss_nano.a"

Also, the option to "Optimize newlib for size" is enabled by default causing my libraries to increase dramatically in size.
I'm doing a Canadian cross build to build a riscv Windows toolchain.
Here are the sizes with "Optimize newlib for size" enabled.
libc 1391 KB
libc_nano 2346 KB
libg 1391 KB
libg_nano 2346 KB
libgloss 36 KB
libgloss_nano 60 KB

and without "Optimize newlib for size" enabled.
libc 1391 KB
libc_nano 1297 KB
libg 1391 KB
libg_nano 1297 KB
libgloss 36 KB
libgloss_nano 36 KB

1.24.0.1 release executable version tag is incorrect

The Zephyr crosstool-NG 1.24.0.1 release executables report the version tag zephyr-crosstool-NG 1.24.0.0.31_4f9f79a when it should report zephyr-crosstool-NG 1.24.0.1.

root@DOMINUS:/opt/zephyr-tools/aarch64-zephyr-elf/bin# ./aarch64-zephyr-elf-ld --version
GNU ld (zephyr-crosstool-NG 1.24.0.0.31_4f9f79a) 2.34
Copyright (C) 2020 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) a later version.
This program has absolutely no warranty.

root@DOMINUS:/opt/zephyr-tools/aarch64-zephyr-elf/bin# ./aarch64-zephyr-elf-gcc --version
aarch64-zephyr-elf-gcc (zephyr-crosstool-NG 1.24.0.0.31_4f9f79a) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Copy Windows runtime DLLs during build process

The current Windows zephyr-crosstool-ng distribution process relies on the packaging process (i.e. Chocolatey package build process) to provide the required runtime DLLs (note that GDB, notoriously, links to the dynamic GCC runtime libraries; see #32).

This approach is potentially error-prone and can lead to build- and run-time library version mismatch as the zephyr-crosstool-ng component versions get updated in the future; therefore, these DLLs should be copied into the release archive during the build process.

Note that crosstool-ng builds its own MinGW host library dependencies. This means that we cannot simply copy the build system MinGW-w64 installation DLL files for some.

Enable Python support for Windows host GDB

The GDB Python scripting support for Windows host is disabled for now because we have not fully established the Windows host runtime requirements at this time.

Re-enable it by setting the relevant crosstool-ng configurations once these requirements are fully established.

[INFO ]  Installing cross-gdb
[ERROR]    For canadian build, Python wrapper runnable on the build machine must be provided. Set CT_GDB_CROSS_PYTHON_BINARY.
[ERROR]  
[ERROR]  >>
[ERROR]  >>  Build failed in step 'Installing cross-gdb'
[ERROR]  >>        called in step '(top-level)'
[ERROR]  >>
[ERROR]  >>  Error happened in: CT_Abort[scripts/functions@487]
[ERROR]  >>        called from: do_debug_gdb_build[scripts/build/debug/300-gdb.sh@31]
[ERROR]  >>        called from: do_debug[scripts/build/debug.sh@35]
[ERROR]  >>        called from: main[scripts/crosstool-NG.sh@695]
[ERROR]  >>
[ERROR]  >>  For more info on this error, look at the file: 'build.log'
[ERROR]  >>  There is a list of known issues, some with workarounds, in:
[ERROR]  >>      https://crosstool-ng.github.io/docs/known-issues/

https://github.com/stephanosio/zephyr-crosstool-ng/blob/6ca0fd3cdd4024c3fc2d1ac72d37d8ccd1f91367/scripts/build/debug/300-gdb.sh#L28-L39

Implement Snap packages

Implement Snap packages

Note:

  • Snap packages shall target the core18 base image, which is derived from the Ubuntu 18.04 LTS. This provides an Ubuntu 18.04-compatible library system on all Linux distros and effectively allows the packaged executables to run in a known environment (just like Poky in the meta-zephyr-sdk does).
  • See https://snapcraft.io/docs/pre-built-apps for building Snap packages from the pre-built archives.

GDB home path reference is broken on Windows

The GDB prints out the following warning during start-up:

warning: Couldn't determine a path for the index cache directory.

This is because GDB expects to find the HOME environment variable, but this is not set by default on Windows.

Since our goal is to support native Windows environment without any POSIX abstraction (e.g. MSYS2), the GDB code should be patched to use the USERPROFILE environment variable alongside HOME when building for Windows.

Update to newlib 3.3.0 for Zephyr Xtensa targets

The Zephyr Xtensa targets currently use a fork of newlib that is based on a very old version of newlib.

Update this to the primary newlib version used by the zephyr-crosstool-ng (3.3.0 at the time of writing).

Note that there is a new Xtensa newlib branch that is based on the version 3.2.0; see #35 (comment).

TODO

  • Rebase the Xtensa newlib 3.2.0 branch onto 3.3.0
  • Add patches to the newlib-3.3.0 package (or merge them into our newlib fork if #35 gets done before this)
  • Validate the updated newlib in the QEMU (running Zephyr tests should suffice)

Provide ZIP archive for Windows host build artifacts

The CI/CD process currently produces .tar.gz archives for all build artifacts.

Since .zip archive format is more common on Windows, it is desirable to use that for the Windows host build artifacts.

NOTE: Some target toolchains may require case sensitive handling for proper archiving. Make sure that the case sensitive nature is preserved in the .zip archive. Note that Windows (10)/NTFS now supports proper case sensitive handling within the Win32 subsystem.

Implement general toolchain testing framework

Implement general toolchain testing framework.

The framework should use some form of test suite (e.g. gcc-test-suite) for validating the cross compiler on the intended host platform.

The C runtime (newlib) and C++ runtime (libstdc++, covered by gcc-test-suite?) libraries must be validated as well.

p.s. the scope of this work does not include functional safety certification aspect of the toolchain.

Linux *-gdb-py crashes when running invalid Python commands

Synopsis

Linux *-gdb-py crashes when running invalid Python commands.

Reproduction steps

  1. Run aarch64-zephyr-elf-gdb-py
  2. Type python rubbish

GDB crashes with Aborted (core dumped)

Expected behaviour

A proper Python error message is displayed.

Additional context

  • This issue only affects the 1.24.0.4 release. The 1.24.0.3 release does not have this problem.
  • Windows build does not experience this problem (proper error message is displayed when attempting to execute an invalid Python command).
  • TODO: Check if macOS build has the same issue.

Add ARM EABI big endian target

Add ARM EABI big endian target (armeb-zephyr-eabi)

This is mainly to support the Hercules TMS570 automotive series MCUs.

GDB build dynamic links extraneous runtime libraries

Synopsis

The GNU Debugger executables built by zephyr-crosstool-ng dynamically link to the extraneous runtime libraries, such as:

  • libstdc++
  • libgcc_s
  • liblzma

Analysis

Linux

$ ldd arm-zephyr-eabi-gdb
        linux-vdso.so.1 (0x00007ffd6f5a4000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f71522a7000)
        libpython3.6m.so.1.0 => /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0 (0x00007f7151bfc000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f71519dd000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f715163f000)
        liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f7151419000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f7151045000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f7150e2d000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7150a3c000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f7152e6c000)
        libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f715080a000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f71505ed000)
        libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f71503ea000)

For comparison, GNU ARM Embedded GDB executables:

$ ldd arm-none-eabi-gdb
        linux-vdso.so.1 (0x00007ffc053ee000)
        libncurses.so.5 => /lib/x86_64-linux-gnu/libncurses.so.5 (0x00007f4f6b654000)
        libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f4f6b42a000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f4f6b226000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f4f6ae88000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4f6aa97000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f4f6b877000)

$ ldd arm-none-eabi-gdb-py
        linux-vdso.so.1 (0x00007fff3c98c000)
        libncurses.so.5 => /lib/x86_64-linux-gnu/libncurses.so.5 (0x00007f63ec273000)
        libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f63ec049000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f63ebe45000)
        libpython2.7.so.1.0 => /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0 (0x00007f63eb8c8000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f63eb6a9000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f63eb30b000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f63eaf1a000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f63ec496000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f63eacfd000)
        libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f63eaafa000)

macOS

$ otool -L arm-zephyr-eabi-gdb
arm-zephyr-eabi-gdb:
	/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1675.129.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1281.100.1)
	/usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/Python (compatibility version 3.7.0, current version 3.7.0)
	/usr/local/opt/xz/lib/liblzma.5.dylib (compatibility version 8.0.0, current version 8.5.0)
	/usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
	/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 902.1.0)

Windows
image

For comparison, GNU ARM Embedded GDB executables:
image

image

Note

  • This issue is not specific to zephyr-crosstool-ng and also exists for sdk-ng.
  • While this issue does not usually cause any immediate problems (for instance, on Windows, we just need to include the GCC runtime library DLLs in the bin directory), it is desirable to static-link these libraries so that the compatibility problems due to external dependency version mismatch are minimised.

Add ESP32 Xtensa target

Add ESP32 Xtensa target (xtensa-esp32_zephyr-elf)
(Import zephyrproject-rtos/sdk-ng#213)

Re: CT_BINUTILS_DEVEL_URL="https://github.com/espressif/binutils-gdb.git"

This repo contains only minor ESP32-specific commits. Import them as patches in the zephyr-crosstool-ng so we do not need to maintain two different versions and patch sets.

Re: CT_NEWLIB_DEVEL_URL="https://github.com/espressif/newlib-esp32.git"

pretty much the same deal here

Re: CT_GCC_DEVEL_URL="https://github.com/espressif/gcc.git"

This is based on GCC 8.2.0 with some minor corrective patches (many of them might be already merged in 9.x), should be easy enough to keep them as patches on top of GCC 9.1.

Define versioning scheme

Define a Zephyr crosstool-ng-specific versioning scheme, and add a version tag to the toolchain builds.

The version tag must be displayed for every user invoke-able component (e.g. {binutils,gcc} -v should indicate which version of zephyr-crosstool-ng it was built from).

The purpose of this versioning scheme is to allow users to identify the Zephyr-specific toolchain (patch) version, independent of the component version (e.g. GCC 9.2.0 may have multiple Zephyr patch versions identified by this versioning scheme).

This version shall also be used for package distribution.

Establish package distribution strategy

OUTDATED INFORMATION
SUPERSEDED BY zephyrproject-rtos/zephyr#37255

Establish toolchain package distribution strategy.

Packages

Compiler Toolchain

  • zephyr-crosstool-{target} - {target} toolchain (binutils and gcc) package
  • zephyr-crosstool - meta package that depends on all supported targets (i.e. install all targets)

Support Tools

  • zephyr-qemu - QEMU with Zephyr-specific patches
  • zephyr-openocd - OpenOCD with Zephyr-specific patches

Target Distribution Channels

  • Linux
    • Snap (for all Linux distributions, to be made available through the official Snap Store)
      #26
    • Apt/Deb (mainly for Ubuntu and WSL users, to be made available through PPA)
      #44
    • Archived Binaries (.tar.gz)
  • macOS
    • Homebrew aka. brew (preferred)
      #27
    • Archived Binaries (.tar.gz)
  • Windows

Notes

  • The archived binaries will be uploaded to the "Releases" section of this GitHub repository.
  • Package builds will be done in separate applicable repositories.
  • On Linux, users can choose between the zephyr-crosstool-ng and sdk-ng (aka. Zephyr SDK).
  • WSL does not support snapd which is required to support Snap packages. As long as the WSL users use the Ubuntu distro, they will be able to install the Apt/Deb packages instead.
  • Only Zephyr-specific tool(chain)s packages shall be prefixed zephyr-; for the rest, do either of the following:
    • If the package ecosystem already provides an applicable package, use that.
    • If the package ecosystem provides an applicable package of an incompatible version, add a derived package of a compatible version.
    • If the package ecosystem does not provide an applicable package, add one.

Multiple Package Version Coexistence

See #25 (comment)

Package Discovery

  • Each SDK component shall contain a "CMake package" which can be registered in the system or user package registry.
  • The Zephyr build system shall find the required components of a compatible version through the CMake find_package command which searches the package registry for the specified package.

NOTE: sdk-ng (Zephyr SDK) currently uses the same scheme, except that the whole SDK is registered as single package rather than individual packages for each component.

Implement Homebrew packages

TODO: Implement Homebrew packages

NOTE: Cask Providing binary installation formulae from the GitHub releases would be more practical, as the Homebrew maintainers seem to be rather reserved about accepting large Cask packages.

Reduce build disk usage

The GitHub Actions provide only 14GB of disk space for its build machines, and some multilib builds (e,g. arc, arm and riscv64) require more disk space than this.

Implement a mechanism to reduce disk usage while building (e.g. clean after install for each build step).

GDB shell is broken on Windows

The shell of the GNU Debugger (GDB) included in the Windows builds of zephyr-crosstool-ng is broken:

  • Basic command line input works, but
  • Backspace key does not work
  • Arrow keys do not work

NOTE:

  • This problem does not exist on the Windows build of GNU ARM Embedded.
  • The source of the problem seems to be related to ncurses usage (or rather lack of) in the GDB.

Cache source files in Git repository

The CI is often producing build failures due to source archive download error (possibly due to the file server's request rate limiting).

Cache the source archives in a dedicated Git repository and clone it in the CI to prevent sourcing the archives from the third-party servers.

Note that, as long as the archives are under 100MB, there is no need to use the LFS storage since these blobs are never going to be modified after the initial commit.

Inconsistent debug information inclusion in newlib binaries

Currently, the newlib "full" variant builds without debug information while the "nano" variant builds with full debug information.

Address this inconsistency by either including debug information for both newlib variants, or getting rid of it from the nano variant.

Add Zephyr targets

Add/re-integrate the Zephyr targets from sdk-ng

  • arc
  • arm
  • arm64
  • i586 (obsolete)
  • iamcu (obsolete)
  • mips (obsolete)
  • nios2
  • riscv64
  • sparc (merged as part of #9)
  • x86_64-zephyr-elf
  • xtensa_intel_apl_adsp
  • xtensa_intel_bdw_adsp
  • xtensa_intel_byt_adsp
  • xtensa_intel_s1000
  • xtensa_nxp_imx8m_adsp
  • xtensa_nxp_imx_adsp
  • xtensa_sample_controller

NOTE:

  • Do not add obsolete targets; just keep in mind that they exist and can be brought back if ever necessary (the original configurations are available in sdk-ng).
  • Add xtensa_ targets in a separate PR, since they are quite different from the rest.

Add Python-less GDB variant

Add Python-less GDB variant:

{target}-gdb - GDB that does not depend on any Python libraries
{target}-gdb-py - GDB that depends on a Python library

Note that static linking of GDB does not work at this time, so we are forced to dynamic-link and maintain these two variants for now.

Review Zephyr-specific patches

The version of crosstool-ng used in this repository includes newer toolchain components:

  • binutils 2.34 (sdk-ng uses 2.32)
  • newlib 3.3.0 (sdk-ng uses 3.1.0.20181231)

Review and assess whether the following patches are still relevant for these newer component versions:

binutils (2.32 -> 2.34)

  • 0001-GAS-Arm-PR24559-Fix-pseudo-load-operations-for-Armv8.patch (patch is in)
  • 0001-RISC-V-Compress-3-operand-beq-bne-against-x0.patch (patch is in)
  • 0002-RISC-V-Fix-linker-crash-in-section-symbol-check.patch (patch is in)
  • 0003-RISC-V-Relax-tail-j-to-c.j-for-RV64.patch (patch is in)
  • 0004-RISC-V-Don-t-check-ABI-flags-if-no-code-section.patch (patch is in)
  • 0005-RISC-V-Enable-32-bit-linux-gdb-core-file-support.patch (patch is in)
  • 0006-RISC-V-Fix-lui-argument-parsing.patch (patch is in)
  • 0007-RISC-V-Enable-lui-relaxation-for-CODE-and-MERGE-sect.patch (patch is in)
  • 0008-RISC-V-Make-objdump-disassembly-work-right-for-binar.patch (patch is in)
  • 0009-Kito-s-5-part-patch-set-to-improve-.insn-support.patch (patch is in)
  • 0010-RISC-V-Fix-minor-issues-with-FP-csr-instructions.patch (patch is in)
  • 0011-RISC-V-Fix-lui-relax-failure-with-relro.patch (patch is in)
  • 0012-RISC-V-Fix-lui-relaxation-issue-with-code-at-address.patch (patch is in)

newlib 3.3.0 (3.1.0.20181231 -> 3.3.0)

  • 0001-work-arc-issue-with-nsim-and-fcntrl.patch (not upstreamed; mergeable)
  • 0002-Recognize-x86_64-zephyr.patch (not upstreamed; mergeable)
  • 0003-Support-building-for-32-bit-under-x86_64.patch (not upstreamed; conflict resolved)

NOTE

  • patches/gdb/8.1.1 and patches/gdb/8.2.1 are no longer relevant (@galak @dcpleung could you confirm this?)
  • patches/newlib/git-b06f1b57 is no longer relevant (@galak @dcpleung this as well) this is required since Xtensa targets use them

Fork newlib

Consider forking newlib and pulling it in the zephyr-crosstool-ng so as to facilitate Zephyr-specific development of the newlib.

This will be necessary as we implement more advanced OS features.

TODO: Compile rationale for forking newlib.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.