Hello,
I updated master on my repo yesterday and noticed that I can no longer
build STM32H7 or F7 based boards. The compiler error in question is
shown below. For what its worth, I am using standard arm-none-eabi
toolchain on Ubuntu Linux.
LD: nuttx
nuttx/staging/libarch.a(stm32_allocateheap.o): In function
`mpu_configure_region':
nuttx/arch/arm/src/armv7-m/mpu.h:281: undefined reference to
`mpu_allocregion'
nuttx/arch/arm/src/armv7-m/mpu.h:296: undefined reference to
`mpu_log2regionceil'
nuttx/arch/arm/src/armv7-m/mpu.h:298: undefined reference to
`mpu_log2regionceil'
nuttx/arch/arm/src/armv7-m/mpu.h:315: undefined reference to `mpu_subregion'
These are all functions that are declared in arch/arm/src/armv7-m/mpu.h
and defined in arch/arm/src/armv7-m/up_mpu.c . They are called within
various inlined functions defined in mpu.h. The issue stems from a
change made by commit 3972510
<https://github.com/apache/incubator-nuttx/commit/39725109fac627ba70300c858d3c6e13187824f6>,
where the logic for checking that inline functions are allowed was
changed to ensure the code is being compiled with at least the C99
standard.
I am still learning how the build system for NuttX is organized, so I
don't know exactly where to specify which C standard to use. Should this
be specified by the host system or be included as a flag in the build
files for affected chips? If it is the latter, I see two possible places
it could be added
1. In the chip Make.defs
2. In each board Make.defs, where the ARCHCFLAGS variable is already
specified
Since this affects all boards with a particular chip, it seems better to
add it to the chip Make.defs. However, given that all the compiler flags
are currently specified at the board level, it seems better to put it
there for consistency's sake.
I'm not sure how many other chips are affected by this issue yet, but it
is presumably anything using inline functions.
Thanks,
John Rippetoe
CONFIDENTIALITY NOTICE: This communication may contain private, confidential
and privileged material for the sole use of the intended recipient. If you are
not the intended recipient, please delete this e-mail and any attachments
permanently.