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.

Reply via email to