linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] kbuild: add OBJSIZE variable for the size tool
@ 2019-08-06 10:56 Vasily Gorbik
  2019-08-06 10:56 ` [PATCH 2/2] s390/build: use size command to perform empty .bss check Vasily Gorbik
  2019-08-07  2:32 ` [PATCH 1/2] kbuild: add OBJSIZE variable for the size tool Masahiro Yamada
  0 siblings, 2 replies; 6+ messages in thread
From: Vasily Gorbik @ 2019-08-06 10:56 UTC (permalink / raw)
  To: Masahiro Yamada; +Cc: linux-kbuild, linux-kernel

Define and export OBJSIZE variable for "size" tool from binutils to be
used in architecture specific Makefiles (naming the variable just "SIZE"
would be too risky). In particular this tool is useful to perform checks
that early boot code is not using bss section (which might have not been
zeroed yet or intersects with initrd or other files boot loader might
have put right after the linux kernel).

Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
---
 Makefile | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/Makefile b/Makefile
index fa0fbe7851ea..ff4cff29fe46 100644
--- a/Makefile
+++ b/Makefile
@@ -419,6 +419,7 @@ NM		= $(CROSS_COMPILE)nm
 STRIP		= $(CROSS_COMPILE)strip
 OBJCOPY		= $(CROSS_COMPILE)objcopy
 OBJDUMP		= $(CROSS_COMPILE)objdump
+OBJSIZE		= $(CROSS_COMPILE)size
 PAHOLE		= pahole
 LEX		= flex
 YACC		= bison
@@ -474,9 +475,9 @@ KBUILD_LDFLAGS :=
 GCC_PLUGINS_CFLAGS :=
 
 export ARCH SRCARCH CONFIG_SHELL HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE AS LD CC
-export CPP AR NM STRIP OBJCOPY OBJDUMP PAHOLE KBUILD_HOSTLDFLAGS KBUILD_HOSTLDLIBS
-export MAKE LEX YACC AWK INSTALLKERNEL PERL PYTHON PYTHON2 PYTHON3 UTS_MACHINE
-export HOSTCXX KBUILD_HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS
+export CPP AR NM STRIP OBJCOPY OBJDUMP OBJSIZE PAHOLE LEX YACC AWK INSTALLKERNEL
+export PERL PYTHON PYTHON2 PYTHON3 CHECK CHECKFLAGS MAKE UTS_MACHINE HOSTCXX
+export KBUILD_HOSTCXXFLAGS KBUILD_HOSTLDFLAGS KBUILD_HOSTLDLIBS LDFLAGS_MODULE
 
 export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS KBUILD_LDFLAGS
 export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE
-- 
2.21.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/2] s390/build: use size command to perform empty .bss check
  2019-08-06 10:56 [PATCH 1/2] kbuild: add OBJSIZE variable for the size tool Vasily Gorbik
@ 2019-08-06 10:56 ` Vasily Gorbik
  2019-08-07  2:33   ` Masahiro Yamada
  2019-08-07  2:32 ` [PATCH 1/2] kbuild: add OBJSIZE variable for the size tool Masahiro Yamada
  1 sibling, 1 reply; 6+ messages in thread
From: Vasily Gorbik @ 2019-08-06 10:56 UTC (permalink / raw)
  To: Masahiro Yamada; +Cc: Arnd Bergmann, linux-kbuild, linux-kernel

Currently empty .bss checks performed do not pay attention to "common
objects" in object files which end up in .bss section eventually.

The "size" tool is a part of binutils and since version 2.18 provides
"--common" command line option, which allows to account "common objects"
sizes in .bss section size. Utilize "size --common" to perform accurate
check that .bss section is unused. Besides that the size tool handles
object files without .bss section gracefully and doesn't require
additional objdump run.

The linux kernel requires binutils 2.20 since 4.13.

Kbuild exports OBJSIZE to reference the right size tool.

Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
---
 arch/s390/scripts/Makefile.chkbss | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/arch/s390/scripts/Makefile.chkbss b/arch/s390/scripts/Makefile.chkbss
index 884a9caff5fb..ba1d7a8a242f 100644
--- a/arch/s390/scripts/Makefile.chkbss
+++ b/arch/s390/scripts/Makefile.chkbss
@@ -11,8 +11,7 @@ chkbss: $(addprefix $(obj)/, $(chkbss-files))
 
 quiet_cmd_chkbss = CHKBSS  $<
       cmd_chkbss = \
-	if $(OBJDUMP) -h $< | grep -q "\.bss" && \
-	   ! $(OBJDUMP) -j .bss -w -h $< | awk 'END { if ($$3) exit 1 }'; then \
+	if ! $(OBJSIZE) --common $< | awk 'END { if ($$3) exit 1 }'; then \
 		echo "error: $< .bss section is not empty" >&2; exit 1; \
 	fi; \
 	touch $@;
-- 
2.21.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] kbuild: add OBJSIZE variable for the size tool
  2019-08-06 10:56 [PATCH 1/2] kbuild: add OBJSIZE variable for the size tool Vasily Gorbik
  2019-08-06 10:56 ` [PATCH 2/2] s390/build: use size command to perform empty .bss check Vasily Gorbik
@ 2019-08-07  2:32 ` Masahiro Yamada
  2019-08-07  8:01   ` Vasily Gorbik
  1 sibling, 1 reply; 6+ messages in thread
From: Masahiro Yamada @ 2019-08-07  2:32 UTC (permalink / raw)
  To: Vasily Gorbik; +Cc: Linux Kbuild mailing list, Linux Kernel Mailing List

Hi.

On Tue, Aug 6, 2019 at 7:56 PM Vasily Gorbik <gor@linux.ibm.com> wrote:
>
> Define and export OBJSIZE variable for "size" tool from binutils to be
> used in architecture specific Makefiles (naming the variable just "SIZE"
> would be too risky). In particular this tool is useful to perform checks
> that early boot code is not using bss section (which might have not been
> zeroed yet or intersects with initrd or other files boot loader might
> have put right after the linux kernel).
>
> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>

I think you want to apply both to the s390 tree. If so,

Acked-by: Masahiro Yamada <yamada.masahiro@socionext.com>

Thanks.

> ---
>  Makefile | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index fa0fbe7851ea..ff4cff29fe46 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -419,6 +419,7 @@ NM          = $(CROSS_COMPILE)nm
>  STRIP          = $(CROSS_COMPILE)strip
>  OBJCOPY                = $(CROSS_COMPILE)objcopy
>  OBJDUMP                = $(CROSS_COMPILE)objdump
> +OBJSIZE                = $(CROSS_COMPILE)size
>  PAHOLE         = pahole
>  LEX            = flex
>  YACC           = bison
> @@ -474,9 +475,9 @@ KBUILD_LDFLAGS :=
>  GCC_PLUGINS_CFLAGS :=
>
>  export ARCH SRCARCH CONFIG_SHELL HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE AS LD CC
> -export CPP AR NM STRIP OBJCOPY OBJDUMP PAHOLE KBUILD_HOSTLDFLAGS KBUILD_HOSTLDLIBS
> -export MAKE LEX YACC AWK INSTALLKERNEL PERL PYTHON PYTHON2 PYTHON3 UTS_MACHINE
> -export HOSTCXX KBUILD_HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS
> +export CPP AR NM STRIP OBJCOPY OBJDUMP OBJSIZE PAHOLE LEX YACC AWK INSTALLKERNEL
> +export PERL PYTHON PYTHON2 PYTHON3 CHECK CHECKFLAGS MAKE UTS_MACHINE HOSTCXX
> +export KBUILD_HOSTCXXFLAGS KBUILD_HOSTLDFLAGS KBUILD_HOSTLDLIBS LDFLAGS_MODULE
>
>  export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS KBUILD_LDFLAGS
>  export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE
> --
> 2.21.0
>


-- 
Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/2] s390/build: use size command to perform empty .bss check
  2019-08-06 10:56 ` [PATCH 2/2] s390/build: use size command to perform empty .bss check Vasily Gorbik
@ 2019-08-07  2:33   ` Masahiro Yamada
  2019-08-07  7:54     ` Vasily Gorbik
  0 siblings, 1 reply; 6+ messages in thread
From: Masahiro Yamada @ 2019-08-07  2:33 UTC (permalink / raw)
  To: Vasily Gorbik
  Cc: Arnd Bergmann, Linux Kbuild mailing list, Linux Kernel Mailing List

On Tue, Aug 6, 2019 at 7:56 PM Vasily Gorbik <gor@linux.ibm.com> wrote:
>
> Currently empty .bss checks performed do not pay attention to "common
> objects" in object files which end up in .bss section eventually.
>
> The "size" tool is a part of binutils and since version 2.18 provides
> "--common" command line option, which allows to account "common objects"
> sizes in .bss section size. Utilize "size --common" to perform accurate
> check that .bss section is unused. Besides that the size tool handles
> object files without .bss section gracefully and doesn't require
> additional objdump run.
>
> The linux kernel requires binutils 2.20 since 4.13.
>
> Kbuild exports OBJSIZE to reference the right size tool.
>
> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
> ---
>  arch/s390/scripts/Makefile.chkbss | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/arch/s390/scripts/Makefile.chkbss b/arch/s390/scripts/Makefile.chkbss
> index 884a9caff5fb..ba1d7a8a242f 100644
> --- a/arch/s390/scripts/Makefile.chkbss
> +++ b/arch/s390/scripts/Makefile.chkbss
> @@ -11,8 +11,7 @@ chkbss: $(addprefix $(obj)/, $(chkbss-files))
>
>  quiet_cmd_chkbss = CHKBSS  $<
>        cmd_chkbss = \
> -       if $(OBJDUMP) -h $< | grep -q "\.bss" && \
> -          ! $(OBJDUMP) -j .bss -w -h $< | awk 'END { if ($$3) exit 1 }'; then \
> +       if ! $(OBJSIZE) --common $< | awk 'END { if ($$3) exit 1 }'; then \

While you are touching this line,
you may also want to replace 'awk' with $(AWK),
which is defined in the top-level Makefile.




>                 echo "error: $< .bss section is not empty" >&2; exit 1; \
>         fi; \
>         touch $@;
> --
> 2.21.0
>


-- 
Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/2] s390/build: use size command to perform empty .bss check
  2019-08-07  2:33   ` Masahiro Yamada
@ 2019-08-07  7:54     ` Vasily Gorbik
  0 siblings, 0 replies; 6+ messages in thread
From: Vasily Gorbik @ 2019-08-07  7:54 UTC (permalink / raw)
  To: Masahiro Yamada
  Cc: Arnd Bergmann, Linux Kbuild mailing list, Linux Kernel Mailing List

On Wed, Aug 07, 2019 at 11:33:40AM +0900, Masahiro Yamada wrote:
> On Tue, Aug 6, 2019 at 7:56 PM Vasily Gorbik <gor@linux.ibm.com> wrote:
> >
> > Currently empty .bss checks performed do not pay attention to "common
> > objects" in object files which end up in .bss section eventually.
> >
> > The "size" tool is a part of binutils and since version 2.18 provides
> > "--common" command line option, which allows to account "common objects"
> > sizes in .bss section size. Utilize "size --common" to perform accurate
> > check that .bss section is unused. Besides that the size tool handles
> > object files without .bss section gracefully and doesn't require
> > additional objdump run.
> >
> > The linux kernel requires binutils 2.20 since 4.13.
> >
> > Kbuild exports OBJSIZE to reference the right size tool.
> >
> > Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
> > ---
> >  arch/s390/scripts/Makefile.chkbss | 3 +--
> >  1 file changed, 1 insertion(+), 2 deletions(-)
> >
> > diff --git a/arch/s390/scripts/Makefile.chkbss b/arch/s390/scripts/Makefile.chkbss
> > index 884a9caff5fb..ba1d7a8a242f 100644
> > --- a/arch/s390/scripts/Makefile.chkbss
> > +++ b/arch/s390/scripts/Makefile.chkbss
> > @@ -11,8 +11,7 @@ chkbss: $(addprefix $(obj)/, $(chkbss-files))
> >
> >  quiet_cmd_chkbss = CHKBSS  $<
> >        cmd_chkbss = \
> > -       if $(OBJDUMP) -h $< | grep -q "\.bss" && \
> > -          ! $(OBJDUMP) -j .bss -w -h $< | awk 'END { if ($$3) exit 1 }'; then \
> > +       if ! $(OBJSIZE) --common $< | awk 'END { if ($$3) exit 1 }'; then \
> 
> While you are touching this line,
> you may also want to replace 'awk' with $(AWK),
> which is defined in the top-level Makefile.

Indeed, thank you!


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] kbuild: add OBJSIZE variable for the size tool
  2019-08-07  2:32 ` [PATCH 1/2] kbuild: add OBJSIZE variable for the size tool Masahiro Yamada
@ 2019-08-07  8:01   ` Vasily Gorbik
  0 siblings, 0 replies; 6+ messages in thread
From: Vasily Gorbik @ 2019-08-07  8:01 UTC (permalink / raw)
  To: Masahiro Yamada; +Cc: Linux Kbuild mailing list, Linux Kernel Mailing List

On Wed, Aug 07, 2019 at 11:32:04AM +0900, Masahiro Yamada wrote:
> Hi.
> 
> On Tue, Aug 6, 2019 at 7:56 PM Vasily Gorbik <gor@linux.ibm.com> wrote:
> >
> > Define and export OBJSIZE variable for "size" tool from binutils to be
> > used in architecture specific Makefiles (naming the variable just "SIZE"
> > would be too risky). In particular this tool is useful to perform checks
> > that early boot code is not using bss section (which might have not been
> > zeroed yet or intersects with initrd or other files boot loader might
> > have put right after the linux kernel).
> >
> > Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
> 
> I think you want to apply both to the s390 tree. If so,
> 
> Acked-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> 
> Thanks.

Yes, I would take it via s390 tree. Thank you!


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2019-08-07  8:01 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-06 10:56 [PATCH 1/2] kbuild: add OBJSIZE variable for the size tool Vasily Gorbik
2019-08-06 10:56 ` [PATCH 2/2] s390/build: use size command to perform empty .bss check Vasily Gorbik
2019-08-07  2:33   ` Masahiro Yamada
2019-08-07  7:54     ` Vasily Gorbik
2019-08-07  2:32 ` [PATCH 1/2] kbuild: add OBJSIZE variable for the size tool Masahiro Yamada
2019-08-07  8:01   ` Vasily Gorbik

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).