mbox series

[v5,00/12] kbuild: yet another series of cleanups (modpost, LTO, MODULE_REL_CRCS, export.h)

Message ID 20220511164514.2741934-1-masahiroy@kernel.org (mailing list archive)
Headers show
Series kbuild: yet another series of cleanups (modpost, LTO, MODULE_REL_CRCS, export.h) | expand

Message

Masahiro Yamada May 11, 2022, 4:45 p.m. UTC
This is the third batch of cleanups in this development cycle.

Major changes in v5:
 - Fix build errors
 - More cleanups

Major changes in v4:
 - Move static EXPORT_SYMBOL check to a script
 - Some refactoring

Major changes in v3:

 - Generate symbol CRCs as C code, and remove CONFIG_MODULE_REL_CRCS.

Major changes in v2:

 - V1 did not work with CONFIG_MODULE_REL_CRCS.
   I fixed this for v2.

 - Reflect some review comments in v1

 - Refactor the code more

 - Avoid too long argument error



Masahiro Yamada (12):
  modpost: split the section mismatch checks into section-check.c
  modpost: add sym_find_with_module() helper
  modpost: extract symbol versions from *.cmd files
  kbuild: link symbol CRCs at final link, removing
    CONFIG_MODULE_REL_CRCS
  kbuild: stop merging *.symversions
  genksyms: adjust the output format to modpost
  kbuild: do not create *.prelink.o for Clang LTO or IBT
  kbuild: check static EXPORT_SYMBOL* by script instead of modpost
  kbuild: make built-in.a rule robust against too long argument error
  kbuild: make *.mod rule robust against too long argument error
  kbuild: add cmd_and_savecmd macro
  kbuild: rebuild multi-object modules when objtool is updated

 arch/m68k/include/asm/Kbuild    |    1 +
 arch/m68k/include/asm/export.h  |    2 -
 arch/powerpc/Kconfig            |    1 -
 arch/s390/Kconfig               |    1 -
 arch/um/Kconfig                 |    1 -
 include/asm-generic/export.h    |   22 +-
 include/linux/export-internal.h |   16 +
 include/linux/export.h          |   30 +-
 init/Kconfig                    |    4 -
 kernel/module.c                 |   10 +-
 scripts/Kbuild.include          |   10 +-
 scripts/Makefile.build          |  134 +--
 scripts/Makefile.lib            |    7 -
 scripts/Makefile.modfinal       |    5 +-
 scripts/Makefile.modpost        |    9 +-
 scripts/check-local-export      |   64 ++
 scripts/genksyms/genksyms.c     |   18 +-
 scripts/link-vmlinux.sh         |   33 +-
 scripts/mod/Makefile            |    4 +-
 scripts/mod/modpost.c           | 1395 +++----------------------------
 scripts/mod/modpost.h           |   34 +-
 scripts/mod/section-check.c     | 1222 +++++++++++++++++++++++++++
 22 files changed, 1541 insertions(+), 1482 deletions(-)
 delete mode 100644 arch/m68k/include/asm/export.h
 create mode 100644 include/linux/export-internal.h
 create mode 100755 scripts/check-local-export
 create mode 100644 scripts/mod/section-check.c

Comments

Nathan Chancellor May 11, 2022, 8:04 p.m. UTC | #1
Hi Masahiro,

On Thu, May 12, 2022 at 01:45:02AM +0900, Masahiro Yamada wrote:
> 
> This is the third batch of cleanups in this development cycle.
> 
> Major changes in v5:
>  - Fix build errors
>  - More cleanups
> 
> Major changes in v4:
>  - Move static EXPORT_SYMBOL check to a script
>  - Some refactoring
> 
> Major changes in v3:
> 
>  - Generate symbol CRCs as C code, and remove CONFIG_MODULE_REL_CRCS.
> 
> Major changes in v2:
> 
>  - V1 did not work with CONFIG_MODULE_REL_CRCS.
>    I fixed this for v2.
> 
>  - Reflect some review comments in v1
> 
>  - Refactor the code more
> 
>  - Avoid too long argument error
> 
> 
> 
> Masahiro Yamada (12):
>   modpost: split the section mismatch checks into section-check.c
>   modpost: add sym_find_with_module() helper
>   modpost: extract symbol versions from *.cmd files
>   kbuild: link symbol CRCs at final link, removing
>     CONFIG_MODULE_REL_CRCS
>   kbuild: stop merging *.symversions
>   genksyms: adjust the output format to modpost
>   kbuild: do not create *.prelink.o for Clang LTO or IBT
>   kbuild: check static EXPORT_SYMBOL* by script instead of modpost
>   kbuild: make built-in.a rule robust against too long argument error
>   kbuild: make *.mod rule robust against too long argument error
>   kbuild: add cmd_and_savecmd macro
>   kbuild: rebuild multi-object modules when objtool is updated

I applied this series to your latest kbuild branch, built an Arch
Linux x86_64 config and Fedora aarch64 config with
CONFIG_LTO_CLANG_FULL=y then CONFIG_LTO_CLANG_THIN=y, and boot tested
each kernel in QEMU with a full userspace. I did not notice any new
warnings/errors and everything appears to work fine.

Tested-by: Nathan Chancellor <nathan@kernel.org>

Cheers,
Nathan
Masahiro Yamada May 13, 2022, 11:18 a.m. UTC | #2
On Thu, May 12, 2022 at 5:04 AM Nathan Chancellor <nathan@kernel.org> wrote:
>
> Hi Masahiro,
>
> On Thu, May 12, 2022 at 01:45:02AM +0900, Masahiro Yamada wrote:
> >
> > This is the third batch of cleanups in this development cycle.
> >
> > Major changes in v5:
> >  - Fix build errors
> >  - More cleanups
> >
> > Major changes in v4:
> >  - Move static EXPORT_SYMBOL check to a script
> >  - Some refactoring
> >
> > Major changes in v3:
> >
> >  - Generate symbol CRCs as C code, and remove CONFIG_MODULE_REL_CRCS.
> >
> > Major changes in v2:
> >
> >  - V1 did not work with CONFIG_MODULE_REL_CRCS.
> >    I fixed this for v2.
> >
> >  - Reflect some review comments in v1
> >
> >  - Refactor the code more
> >
> >  - Avoid too long argument error
> >
> >
> >
> > Masahiro Yamada (12):
> >   modpost: split the section mismatch checks into section-check.c
> >   modpost: add sym_find_with_module() helper
> >   modpost: extract symbol versions from *.cmd files
> >   kbuild: link symbol CRCs at final link, removing
> >     CONFIG_MODULE_REL_CRCS
> >   kbuild: stop merging *.symversions
> >   genksyms: adjust the output format to modpost
> >   kbuild: do not create *.prelink.o for Clang LTO or IBT
> >   kbuild: check static EXPORT_SYMBOL* by script instead of modpost
> >   kbuild: make built-in.a rule robust against too long argument error
> >   kbuild: make *.mod rule robust against too long argument error
> >   kbuild: add cmd_and_savecmd macro
> >   kbuild: rebuild multi-object modules when objtool is updated
>
> I applied this series to your latest kbuild branch, built an Arch
> Linux x86_64 config and Fedora aarch64 config with
> CONFIG_LTO_CLANG_FULL=y then CONFIG_LTO_CLANG_THIN=y, and boot tested
> each kernel in QEMU with a full userspace. I did not notice any new
> warnings/errors and everything appears to work fine.
>
> Tested-by: Nathan Chancellor <nathan@kernel.org>
>
> Cheers,
> Nathan


Thanks for your testing.

I ended up with v6 due to a build issue
of CONFIG_TRIM_UNUSED_KSYMS,
but this patch set is getting in good shape.

Thanks.
Masahiro Yamada May 13, 2022, 11:19 a.m. UTC | #3
On Fri, May 13, 2022 at 8:18 PM Masahiro Yamada <masahiroy@kernel.org> wrote:
>
> On Thu, May 12, 2022 at 5:04 AM Nathan Chancellor <nathan@kernel.org> wrote:
> >
> > Hi Masahiro,
> >
> > On Thu, May 12, 2022 at 01:45:02AM +0900, Masahiro Yamada wrote:
> > >
> > > This is the third batch of cleanups in this development cycle.
> > >
> > > Major changes in v5:
> > >  - Fix build errors
> > >  - More cleanups
> > >
> > > Major changes in v4:
> > >  - Move static EXPORT_SYMBOL check to a script
> > >  - Some refactoring
> > >
> > > Major changes in v3:
> > >
> > >  - Generate symbol CRCs as C code, and remove CONFIG_MODULE_REL_CRCS.
> > >
> > > Major changes in v2:
> > >
> > >  - V1 did not work with CONFIG_MODULE_REL_CRCS.
> > >    I fixed this for v2.
> > >
> > >  - Reflect some review comments in v1
> > >
> > >  - Refactor the code more
> > >
> > >  - Avoid too long argument error
> > >
> > >
> > >
> > > Masahiro Yamada (12):
> > >   modpost: split the section mismatch checks into section-check.c
> > >   modpost: add sym_find_with_module() helper
> > >   modpost: extract symbol versions from *.cmd files
> > >   kbuild: link symbol CRCs at final link, removing
> > >     CONFIG_MODULE_REL_CRCS
> > >   kbuild: stop merging *.symversions
> > >   genksyms: adjust the output format to modpost
> > >   kbuild: do not create *.prelink.o for Clang LTO or IBT
> > >   kbuild: check static EXPORT_SYMBOL* by script instead of modpost
> > >   kbuild: make built-in.a rule robust against too long argument error
> > >   kbuild: make *.mod rule robust against too long argument error
> > >   kbuild: add cmd_and_savecmd macro
> > >   kbuild: rebuild multi-object modules when objtool is updated
> >

The first two applied.

I will send v6 for the rest.