[PATCH 3/3] kbuild: SPL/TPL: generate separate asm-offsets.h for SPL and TPL

Bin Meng bmeng.cn at gmail.com
Fri Apr 17 09:10:23 CEST 2020


Hi Masahiro,

On Fri, Apr 17, 2020 at 3:02 PM Masahiro Yamada <masahiroy at kernel.org> wrote:
>
> On Thu, Apr 16, 2020 at 11:15 PM Bin Meng <bmeng.cn at gmail.com> wrote:
> >
> > Hi Masahiro,
> >
> > On Thu, Apr 16, 2020 at 12:39 PM Masahiro Yamada <masahiroy at kernel.org> wrote:
> > >
> > > Currently generic-asm-offsets.h and asm-offsets.h are generated based
> > > on U-Boot proper config options. The same asm-offsets headers are used
> > > for building U-Boot SPL/TPL, which causes potential offset mismatch if
> > > U-Boot proper has different config options from U-Boot SPL/TPL.
> > >
> >
> > Thank you very much for doing this.
> >
> > > This commit adds:
> > >   spl/include/generated/(generic-)asm-offsets.h
> > >   tpl/include/generated/(generic-)asm-offsets.h
> > >
> > > spl/include/generated/(generic-)asm-offsets.h is generated if
> > > CONFIG_SPL=y, and included when building SPL.
> > >
> > > tpl/include/generated/(generic-)asm-offsets.h is generated if
> > > CONFIG_TPL=y, and included when building TPL.
> > >
> > > They are created before Kbuild descends into SPL/TPL object directories
> > > and builds $(obj)/dts/dt-platdata.o because $(obj)/dts/dt-platdata.c
> > > includes a bunch of headers.
> > >
> > > Prepend -I$(obj)/include to $(UBOOTINCLUDE) so (generic-)asm-offsets.h
> > > is searched in {spl,tpl}/include/generated/.
> > >
> >
> > This patch does not apply on top of u-boot/master, unfortunately.
> >
> > > Requested-by: Bin Meng <bmeng.cn at gmail.com>
> > > Signed-off-by: Masahiro Yamada <masahiroy at kernel.org>
> > > ---
> > >
> > >  Kbuild               |  4 ++--
> > >  scripts/Makefile.spl | 10 ++++++++--
> > >  2 files changed, 10 insertions(+), 4 deletions(-)
> > >
> >
> > I manually applied the changes and had a test, but it failed to build.
> > See below:
> >
> > > diff --git a/Kbuild b/Kbuild
> > > index 6014f7c34a..1eac091594 100644
> > > --- a/Kbuild
> > > +++ b/Kbuild
> > > @@ -10,7 +10,7 @@ generic-offsets-file := include/generated/generic-asm-offsets.h
> > >  always  := $(generic-offsets-file)
> > >  targets := lib/asm-offsets.s
> > >
> > > -$(obj)/$(generic-offsets-file): lib/asm-offsets.s FORCE
> > > +$(obj)/$(generic-offsets-file): $(obj)/lib/asm-offsets.s FORCE
> >
> >   CC      spl/./lib/asm-offsets.s
> > cc1: fatal error: can't open 'spl/./lib/asm-offsets.s' for writing: No
> > such file or directory
> > compilation terminated.
> > scripts/Makefile.build:166: recipe for target 'spl/./lib/asm-offsets.s' failed
> > make[2]: *** [spl/./lib/asm-offsets.s] Error 1
> > scripts/Makefile.spl:432: recipe for target 'prepare' failed
> > make[1]: *** [prepare] Error 2
> > Makefile:1917: recipe for target 'spl/u-boot-spl' failed
> > make: *** [spl/u-boot-spl] Error 2
> >
> > When I removed the changes for this line, and the line below, the
> > build could pass.
> > The spl/include/generated/(generic-)asm-offsets.h were generated, and
> > I verified the macro values are correct and different with the U-Boot
> > proper one.
> >
> > But since there is no $(obj) prepended to lib/asm-offsets.s, I believe
> > this is still not perfect.
>
>
> This is because you remove the needed changes.

I applied patch 1, and manually applied patch 3 in this series. Do you
mean patch 2 is needed for patch 3 to work properly?

Regards,
Bin


More information about the U-Boot mailing list