Re: [PATCH] ARM: tegra: remove board_init_funcs array

From: Thierry Reding
Date: Wed Jun 22 2016 - 09:35:09 EST


On Wed, Jun 22, 2016 at 03:05:35PM +0200, Arnd Bergmann wrote:
> On Wednesday, June 22, 2016 2:50:13 PM CEST Thierry Reding wrote:
> >
> > Not enough information to check signature validity.
> > On Wed, Jun 22, 2016 at 02:39:41PM +0200, Arnd Bergmann wrote:
> > > In a configuration that enables CONFIG_UBSAN_SANITIZE_ALL, I am getting
> > > a section mismatch warning for tegra20:
> > >
> > > WARNING: arch/arm/mach-tegra/built-in.o(.data+0x6e0): Section mismatch in reference from the variable board_init_funcs to the function .init.text:paz00_init()
> > >
> > > The array is no longer useful here since there is only one entry,
> > > so we can simply call the function directly after checking
> > > of_machine_is_compatible(). This fixes the section mismatch
> > > and is easier to read.
> > >
> > > Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx>
> > > ---
> > > arch/arm/mach-tegra/tegra.c | 24 +++---------------------
> > > 1 file changed, 3 insertions(+), 21 deletions(-)
> >
> > Shouldn't these section mismatches show up with default builds? I
> > haven't seen any when building Tegra configurations.
> >
> > I'm going to apply this patch because I think it's useful, but it sure
> > would be nice to know why I need to enable this new UBSAN stuff to get
> > these warnings now.
>
> It depends on the how aggressive the inlining works. Without UBSAN,
> gcc seems to completely optimze away the loop and just the function
> directly, which it can do because 'board_init_funcs' is static.
>
> I assume that the UBSAN object overflow check has the effect of
> not dropping the symbol so it can check the size.

Ah, I see. Thanks.

Thierry

Attachment: signature.asc
Description: PGP signature