Re: [PATCH] x86: avoid warning for zero-filling .bss

From: Arnd Bergmann
Date: Thu Nov 17 2016 - 17:34:31 EST


On Thursday, November 17, 2016 3:02:48 PM CET Josh Poimboeuf wrote:
> On Wed, Nov 16, 2016 at 03:17:09PM +0100, Arnd Bergmann wrote:
> > The latest binutils are warning about a .fill directive with an explicit
> > value in a .bss section:
> >
> > arch/x86/kernel/head_32.S: Assembler messages:
> > arch/x86/kernel/head_32.S:677: Warning: ignoring fill value in section `.bss..page_aligned'
> > arch/x86/kernel/head_32.S:679: Warning: ignoring fill value in section `.bss..page_aligned'
> >
> > This comes from the 'ENTRY()' macro padding the space between the symbols
> > with 'nop'. Open-coding the .globl directive without the padding
> > avoids that warning.
>
> How is there space between the symbols? Aren't they already aligned?

My understanding is that they are aligned, it's just that gas complains
about the .align directive with a nonzero fill value.

> Isn't the warning really about the fact that it's unnecessarily filling
> a .bss section with zeros? Would it make sense to use .align instead?

Filling with zeroes is allowed, and that's what we are intending anyway.
.align would not do the right thing here as it only adds padding if it's
not already aligned, but we know it is.

Arnd