ldnxflat is the last piece of the NXFLAT toolchain that NuttX cannot carry. It descends from elf2flt through four sets of copyright holders, so it is GPL by that descent and not merely by its libbfd dependency. This is a new implementation, written from include/nxflat.h, from what binfmt/libnxflat does with the container, and from the ELF specification. The relocation arithmetic is that of libs/libc/machine/arm/armv7-m/arch_elf.c, which the ELF loader runs on the target for the same relocations, and which brings R_ARM_TARGET1 with it. NXFLAT is not an ARM format. Its loader only adds a base to a 32-bit word, so the segments, the GOT, the relocation records and the header are common to every architecture. An architecture supplies a table entry, an entry-point convention and a relocation handler; an object for a machine with no entry is refused by name. The GOT is built here, because ld -r emits none: one entry per symbol that a GOT-relative reference names, at the start of D-Space, each with a relocation record of its own. An entry may hold a function, which is what makes a function pointer reached through the GOT work. Two defects of the out-of-tree tool do not survive. A GOT entry naming a .bss object lost its section's address and pointed at the start of D-Space, the GOT itself, so on lm3s6965-ek:qemu-nxflat the longjmp test panics with PC 0 and the five tests after it never run. The alignment gap before .bss went missing from h_bssend as well, leaving D-Space short. The tool is built and named like the rest of the toolchain. Makefile.host builds it, Unix.mk makes a configuration that sets CONFIG_NXFLAT depend on it beside mknxflat, and LDNXFLAT points at the tool in the tree rather than one on PATH. All eight C modules of apps/examples/nxflat/tests convert and run to completion under qemu-system-arm -M lm3s6965evb. Assisted-by: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Marco Casaroli <marco.casaroli@gmail.com> |
||
|---|---|---|
| .github | ||
| arch | ||
| audio | ||
| binfmt | ||
| boards | ||
| cmake | ||
| crypto | ||
| Documentation | ||
| drivers | ||
| dummy | ||
| fs | ||
| graphics | ||
| include | ||
| libs | ||
| mm | ||
| net | ||
| openamp | ||
| pass1 | ||
| sched | ||
| syscall | ||
| tools | ||
| video | ||
| wireless | ||
| .asf.yaml | ||
| .codespell-ignore-lines | ||
| .codespellrc | ||
| .editorconfig | ||
| .gitignore | ||
| .gitmessage | ||
| .pre-commit-config.yaml | ||
| .yamllint | ||
| AUTHORS | ||
| CMakeLists.txt | ||
| CONTRIBUTING.md | ||
| INVIOLABLES.md | ||
| Kconfig | ||
| LICENSE | ||
| Makefile | ||
| NOTICE | ||
| README.md | ||
| ReleaseNotes | ||
Apache NuttX is a real-time operating system (RTOS) with an emphasis on standards compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller environments, the primary governing standards in NuttX are POSIX and ANSI standards. Additional standard APIs from Unix and other common RTOSs (such as VxWorks) are adopted for functionality not available under these standards, or for functionality that is not appropriate for deeply-embedded environments (such as fork()).
For brevity, many parts of the documentation will refer to Apache NuttX as simply NuttX.
Getting Started
First time on NuttX? Read the Getting Started guide! If you don't have a board available, NuttX has its own simulator that you can run on terminal.
Documentation
You can find the current NuttX documentation on the Documentation Page.
Alternatively, you can build the documentation yourself by following the Documentation Build Instructions.
The old NuttX documentation is still available in the Apache wiki.
Supported Boards
NuttX supports a wide variety of platforms. See the full list on the Supported Platforms page.
Contributing
If you wish to contribute to the NuttX project, read the Contributing guidelines for information on Git usage, coding standard, workflow and the NuttX principles.
License
The code in this repository is under either the Apache 2 license, or a license compatible with the Apache 2 license. See the License Page for more information.