>
>  The functions the compiler
> is complaining about are defined in up_mpu.c, which is only included for
> protected builds. So it makes sense you wouldn't see the issue when
> building in protected mode.

The issue should be then seen when protected mode is enabled, there where
the MPU is used.
libarch shouldn't contain any MPU related symbol.
I built flat modes as well. All builds complete error free.
You can also see in the nightly build [1], all H7 are building error free.

However, the same issue occurs when trying to build the existing
> H7 boards and with many of the F7 boards as well.
>
What boards are causing the issue?

1.
https://builds.apache.org/view/Incubator%20Projects/job/NuttX-Nightly-Build/68/console

On Thu, Mar 19, 2020 at 2:46 PM John Rippetoe <jrippe...@roboticresearch.com>
wrote:

> I'm using the generic arm-none-eabi toolchain, version 4.84.   OS is
> Ubuntu 16.04.  The contents of my board Make.defs is below.
>
>
> ############################################################################
> # boards/arm/stm32h7/stm32h753xi-eval2/scripts/Make.defs
> #
> #   Copyright (C) 2018 Gregory Nutt. All rights reserved.
> #   Author: Gregory Nutt <gn...@nuttx.org>
> #
> # Redistribution and use in source and binary forms, with or without
> # modification, are permitted provided that the following conditions
> # are met:
> #
> # 1. Redistributions of source code must retain the above copyright
> #    notice, this list of conditions and the following disclaimer.
> # 2. Redistributions in binary form must reproduce the above copyright
> #    notice, this list of conditions and the following disclaimer in
> #    the documentation and/or other materials provided with the
> #    distribution.
> # 3. Neither the name NuttX nor the names of its contributors may be
> #    used to endorse or promote products derived from this software
> #    without specific prior written permission.
> #
> # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
> # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
> # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
> # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
> # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
> # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
> # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
> # OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
> # AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
> # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
> # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
> # POSSIBILITY OF SUCH DAMAGE.
> #
>
> ############################################################################
>
> include ${TOPDIR}/.config
> include ${TOPDIR}/tools/Config.mk
> include ${TOPDIR}/arch/arm/src/armv7-m/Toolchain.defs
>
> LDSCRIPT = flash.ld
>
> ifeq ($(WINTOOL),y)
>   # Windows-native toolchains
>   DIRLINK = $(TOPDIR)/tools/copydir.sh
>   DIRUNLINK = $(TOPDIR)/tools/unlink.sh
>   MKDEP = $(TOPDIR)/tools/mkwindeps.sh
>   ARCHINCLUDES = -I. -isystem "${shell cygpath -w $(TOPDIR)/include}"
>   ARCHXXINCLUDES = -I. -isystem "${shell cygpath -w $(TOPDIR)/include}"
> -isystem "${shell cygpath -w $(TOPDIR)/include/cxx}"
>   ARCHSCRIPT = -T "${shell cygpath -w
> $(TOPDIR)/boards/$(CONFIG_ARCH)/$(CONFIG_ARCH_CHIP)/$(CONFIG_ARCH_BOARD)/scripts/$(LDSCRIPT)}"
> else
>   # Linux/Cygwin-native toolchain
>   MKDEP = $(TOPDIR)/tools/mkdeps$(HOSTEXEEXT)
>   ARCHINCLUDES = -I. -isystem $(TOPDIR)/include
>   ARCHXXINCLUDES = -I. -isystem $(TOPDIR)/include -isystem
> $(TOPDIR)/include/cxx
>   ARCHSCRIPT =
> -T$(TOPDIR)/boards/$(CONFIG_ARCH)/$(CONFIG_ARCH_CHIP)/$(CONFIG_ARCH_BOARD)/scripts/$(LDSCRIPT)
> endif
>
> CC = $(CROSSDEV)gcc
> CXX = $(CROSSDEV)g++
> CPP = $(CROSSDEV)gcc -E
> LD = $(CROSSDEV)ld
> AR = $(ARCROSSDEV)ar rcs
> NM = $(ARCROSSDEV)nm
> OBJCOPY = $(CROSSDEV)objcopy
> OBJDUMP = $(CROSSDEV)objdump
>
> ARCHCCVERSION = ${shell $(CC) -v 2>&1 | sed -n '/^gcc version/p' | sed -e
> 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q'}
> ARCHCCMAJOR = ${shell echo $(ARCHCCVERSION) | cut -d'.' -f1}
>
> ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
>   ARCHOPTIMIZATION = -g
> endif
>
> ifneq ($(CONFIG_DEBUG_NOOPT),y)
>   ARCHOPTIMIZATION += $(MAXOPTIMIZATION) -fno-strict-aliasing
> -fno-strength-reduce -fomit-frame-pointer
> endif
>
> ARCHCFLAGS = -fno-builtin
> ARCHCXXFLAGS = -fno-builtin -fno-exceptions -fcheck-new -fno-rtti
> ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow -Wundef
> ARCHWARNINGSXX = -Wall -Wshadow -Wundef
> ARCHDEFINES =
> ARCHPICFLAGS = -fpic -msingle-pic-base -mpic-register=r10
>
> CFLAGS = $(ARCHCFLAGS) $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS)
> $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES) -pipe
> CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS)
> CXXFLAGS = $(ARCHCXXFLAGS) $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION)
> $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES) -pipe
> CXXPICFLAGS = $(ARCHPICFLAGS) $(CXXFLAGS)
> CPPFLAGS = $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES)
> AFLAGS = $(CFLAGS) -D__ASSEMBLY__
>
> NXFLATLDFLAGS1 = -r -d -warn-common
> NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1)
> -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat-pcrel.ld -no-check-sections
> LDNXFLATFLAGS = -e main -s 2048
>
> ASMEXT = .S
> OBJEXT = .o
> LIBEXT = .a
> EXEEXT =
>
> ifneq ($(CROSSDEV),arm-nuttx-elf-)
>   LDFLAGS += -nostartfiles -nodefaultlibs
> endif
> ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
>   LDFLAGS += -g
> endif
>
>
> HOSTCC = gcc
> HOSTINCLUDES = -I.
> HOSTCFLAGS = -Wall -Wstrict-prototypes -Wshadow -Wundef -g -pipe
> HOSTLDFLAGS =
>
> John Rippetoe
> Software Engineer
> Robotic Research, LLC
> (240) 631-0008
>
> ----- Original Message -----
> From: "Nathan Hartman" <hartman.nat...@gmail.com>
> To: dev@nuttx.apache.org
> Sent: Thursday, March 19, 2020 10:39:39 AM
> Subject: Re: Build errors with inline functions
>
> On Thu, Mar 19, 2020 at 9:17 AM John Rippetoe
> <jrippe...@roboticresearch.com> wrote:
> > I am working on a new board port for the STM32H7 that's not yet in the
> > repo. However, the same issue occurs when trying to build the existing
> > H7 boards and with many of the F7 boards as well. All of the affected
> > configs are flat builds, including my own.  The functions the compiler
> > is complaining about are defined in up_mpu.c, which is only included for
> > protected builds. So it makes sense you wouldn't see the issue when
> > building in protected mode.
> >
> > To answer your other question: yes, I have done a clean build. I have
> > also run a distclean and reconfigured, but the issue persists. The only
> > way to get a build to complete is to comment out line 270 below from
> > compiler.h
> >
> > /* GCC supports inlined functions for C++ and for C version C99 and
> above */
> >
> > 266   #  if defined(__cplusplus) || (defined(__STDC_VERSION__) &&
> > __STDC_VERSION__ >= 199901L)
> > 267   #    define CONFIG_HAVE_INLINE 1
> > 268   #  else
> > 269   #    undef CONFIG_HAVE_INLINE
> > 270   #    define inline
> > 271   #  endif
>
> Which toolchain are you using?
>
> Which version of that toolchain?
>
> What's in your board's Make.defs?
>
> Cheers,
> Nathan
> 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