| NuttX 10.2 has not been released yet. These Release Notes are a work-in-progress in preparation for the next release of NuttX. There is a board tracking the PRs that need to be looked at to add to this doc for the OS TODO ADD LINK and for the Apps TODO ADD LINK |
# What's New In This Release
## Highlights
* Feature 1
* Feature 2
* Feature 3
## Major Changes to Core OS
### New Features
### Bug Fixes
## Major Changes to the Build System
### New Features
### Bug Fixes
## Architectural Support
### New Architecture
### Architectures with significant improvements
#### ARM
#### CXD56XX
#### STM32
#### STM32L4
#### STM32L5
#### S32K1XX
#### IMX6
#### IMXRT
#### RP2040
#### NRF52
#### STM32H7
#### STM32F7
#### Renesas
#### RX65N
#### Risc-V
#### RV64
#### ESP32C3
#### BL602
#### Xtensa
#### ESP32
### Minor changes
## Simulator
### New Features
### Bug Fixes
## Documentation
### New Features
### Improvements
## Driver Support
### Bug Fixes
### New Driver Support
## Board Support
### New Board Support
### Boards With Significant Improvements
#### ARM
#### CXD56
#### IMX6
#### IMXRT
#### LPC17XX_40XX
#### NRF52
#### RP2040
#### SAM34
#### STM32
#### STM32L4
#### STM32F4
#### STM32F7
#### STM32H7
#### KINETIS
#### RISC-V
#### BL602
#### C906
#### ESP32C3
#### XTENSA
#### ESP32
#### TIVA
### **Minor Board Changes**
#### ARM
#### CXD56
#### Xtensa
## File System
### Bug Fixes
### Significant Improvements
## Networking
### Improvements
### Bug Fixes
# Security Issues Fixed In This Release
# Compatibility Concerns
## Changes to Build System
### LD Now Called Through GCC
When building NuttX with GCC toolchains, the linker is now called through $(CROSSDEV)gcc rather than $(CROSSDEV)ld. This requires all linker options to be prefixed with `-Wl,` (dash, capital W, lower-case L, comma). All boards in the NuttX tree have been updated, but any custom out-of-tree boards will need to apply this change in the relevant parts of their build scripts.
The reason for this change is that GNU Binutils 2.36.x has added new error checking on command line arguments. This has had the effect that the NuttX build suddenly broke on host OS distributions that updated to the 2.36.x release line. Reports included Arch, Manjaro, and Ubuntu. Other host OSes are likely to be affected as well.
#### Symptoms
Your toolchain and board are affected if you see errors from LD like:
```
arm-none-eabi-ld: Error: unable to disambiguate: -nostartfiles (did you mean --nostartfiles ?)
```
or (following this change in NuttX) errors from GCC like:
```
arm-none-eabi-gcc: error: unrecognized command line option '--gc-sections'; did you mean '--data-sections'?
```
#### What to change
Any `make` variables in your board's `Makefile` or `Make.defs`.
Some variables to look for:
- `ARCHSCRIPT`
- `ARCH_LIBS`
- `CCLINKFLAGS`
- `EXTRALINKCMDS`
- `LDELFFLAGS`
- `LDENDGROUP`
- `LDFLAGS`
- `LDLINKFLAGS`
- `LDMODULEFLAGS`
- `LDSTARTGROUP`
- `NXFLATLDFLAGS1`
- `NXFLATLDFLAGS2`
- `USER_LDFLAGS`
Anything that executes LD, such as:
```
$(Q) $(LD) --entry=__start $(LDFLAGS) $(LIBPATHS) $(EXTRA_LIBPATHS) \
```
Anything that processes LD flags, such as:
```
$(LIBPATHS) "-(" $(LDLIBS) "-)" $(LDFLAGS) -Map="$(TOPDIR)$(DELIM)nuttx.map"
```
In general, any command line options destined for LD must be prefixed with `-Wl,` (dash, capital W, lower-case L, comma) since they are now being passed through GCC.
#### Examples
Change:
```
EXTRALINKCMDS += @$(TOPDIR)/syscall/syscall_wraps.ldcmd
```
to:
```
EXTRALINKCMDS += -Wl,@$(TOPDIR)/syscall/syscall_wraps.ldcmd
```
Change:
```
LDFLAGS += -gc-sections
```
to:
```
LDFLAGS += -Wl,-gc-sections
```
Change:
```
$(LIBPATHS) "-(" $(LDLIBS) "-)" $(LDFLAGS) -Map="$(TOPDIR)$(DELIM)nuttx.map"
```
to:
```
$(LIBPATHS) "-(" $(LDLIBS) "-)" $(LDFLAGS) -Wl,-Map="$(TOPDIR)$(DELIM)nuttx.map"
```
Change:
```
NXFLATLDFLAGS1 = -r -d -warn-common
```
to:
```
NXFLATLDFLAGS1 = -r -Wl,-d -Wl,-warn-common
```
Change:
```
ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
LDFLAGS += -Map="${shell cygpath -w $(TOPDIR)/nuttx.map}" --cref
else
LDFLAGS += -Map=$(TOPDIR)/nuttx.map --cref
endif
```
to:
```
ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
LDFLAGS += -Wl,-Map="${shell cygpath -w $(TOPDIR)/nuttx.map}" -Wl,--cref
else
LDFLAGS += -Wl,-Map=$(TOPDIR)/nuttx.map -Wl,--cref
endif
```
Also, if you have assigned the LD variable, it would need to change as well:
Change:
```
LD = $(CROSSDEV)ld
```
to:
```
LD = $(CROSSDEV)gcc
```
#### References
* Git commit # 45672c269db13f59bdaa417e564837e8bbb6c8c1 in the NuttX main repository:
- https://github.com/apache/incubator-nuttx/commit/45672c269db13f59bdaa417e564837e8bbb6c8c1
* PR-3836 in the NuttX main repository:
- https://github.com/apache/incubator-nuttx/pull/3836
* Issues 3209 and 3826 in the NuttX issue tracker:
- https://github.com/apache/incubator-nuttx/issues/3209
- https://github.com/apache/incubator-nuttx/issues/3826
* Description of the change on Binutils mailing list:
- https://sourceware.org/pipermail/binutils/2021-June/116826.html
* Description of -Wl,option in the GCC manual:
- https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html
|
Release artifacts for all current and past NuttX releases can be downloaded at:
The Apache NuttX project uses Git SCM as its version control system.
There are two primary repositories:
The main "Single Source of Truth" repositories are hosted by the ASF:
These are synchronized with repositories hosted at GitHub:
The main forum for project communication, to ask a question, get involved, or contribute to NuttX, is our mailing list, dev@nuttx.apache.org. The list is publicly archived and searchable at https://lists.apache.org/list.html?dev@nuttx.apache.org. For more information, see NuttX Community.
NuttX is a free open-source project. If you'd like to participate, whether it's to enhance documentation (even these release notes) or dive into the nitty gritty of some low-level drivers, please join us! You can join the conversation at our dev mailing list by emailing dev-subscribe@nuttx.apache.org. The mailing list is open to the public and archived. You can browse older messages at https://lists.apache.org/list.html?dev@nuttx.apache.org.