[PATCH 00/11] Reduce usage of timestamp macros

Pali Rohár pali at kernel.org
Fri Sep 10 22:56:18 CEST 2021


On Wednesday 01 September 2021 23:49:57 Pali Rohár wrote:
> On Wednesday 01 September 2021 23:44:52 Pali Rohár wrote:
> > On Wednesday 01 September 2021 17:33:57 Tom Rini wrote:
> > > On Wed, Sep 01, 2021 at 11:28:54PM +0200, Pali Rohár wrote:
> > > > On Wednesday 01 September 2021 17:17:06 Tom Rini wrote:
> > > > > On Wed, Sep 01, 2021 at 11:05:45PM +0200, Pali Rohár wrote:
> > > > > > On Wednesday 01 September 2021 16:59:09 Tom Rini wrote:
> > > > > > > On Mon, Aug 02, 2021 at 03:18:27PM +0200, Pali Rohár wrote:
> > > > > > > 
> > > > > > > > Including timestamp.h (either directly or transitionally) cause build
> > > > > > > > system to recompile binaries at every 'make' run. This has disadvantage
> > > > > > > > in U-Boot development as for every small change 'make' recompiles lot of
> > > > > > > > other irrelevant files which were not touched / changed.
> > > > > > > > 
> > > > > > > > This patch series eliminate transitional / indirect usage of
> > > > > > > > timestamp.h by removing unneeded inclusion of header files, moving
> > > > > > > > timestamp values from macros to global variables, etc...
> > > > > > > > 
> > > > > > > > After these patches, U-Boot tools are not recompiled by every 'make' run,
> > > > > > > > which decrease time for incremental U-Boot recompilation.
> > > > > > > > 
> > > > > > > > Please test these patches, specially m68k and powerpc parts as I do not
> > > > > > > > have any of these boards.
> > > > > > > > 
> > > > > > > > Patch series depend on this patch (now marked as accepted):
> > > > > > > > http://patchwork.ozlabs.org/project/uboot/patch/20210710111001.32325-1-pali@kernel.org/
> > > > > > > > 
> > > > > > > > Pali Rohár (11):
> > > > > > > >   Remove #include <timestamp.h> from files which do not need it
> > > > > > > >   Remove #include <version.h> from files which do not need it
> > > > > > > >   efi_loader: Use directly version_string variable
> > > > > > > >   version: Move version_string[] from version.h to version_string.h
> > > > > > > >   m68k: mcf: Remove overloading version_string
> > > > > > > >   version: Put version_string[] variable into section
> > > > > > > >     .text_version_string
> > > > > > > >   powerpc: mpc: Put U-Boot version string at correct place by linker
> > > > > > > >     script
> > > > > > > >   version: Do not make version_string[] variable as a weak
> > > > > > > >   x86: quark: MRC: Remove U_BOOT_DATE and U_BOOT_TIME from debug log
> > > > > > > >   version: Remove global macro U_BOOT_VERSION_STRING from version.h
> > > > > > > >   Remove including timestamp.h in version.h
> > > > > > > 
> > > > > > > So, looking at https://source.denx.de/u-boot/u-boot/-/pipelines/8948
> > > > > > > this fails to build for at least qemu-ppce500 and xtfpga.  Over in 
> > > > > > > doc/develop/ci_testing.rst we document how to run a world build.  Please
> > > > > > > fix these build errors and re-submit, thanks.
> > > > > > 
> > > > > > Already happened about month ago
> > > > > > https://patchwork.ozlabs.org/project/uboot/patch/20210808112038.7942-1-pali@kernel.org/
> > > > > > 
> > > > > > As stated, following build command now passes:
> > > > > > make CROSS_COMPILE=powerpc-linux-gnu- MCR3000_defconfig u-boot.bin
> > > > > 
> > > > > OK, I'll make sure to grab that.  Note that xtfpga isn't PowerPC...
> > > > 
> > > > I saw only error https://source.denx.de/u-boot/u-boot/-/jobs/316601 and
> > > > this should be fixed above patch. At least I got similar error for
> > > > MCR3000_defconfig with new gcc before that.
> > > > 
> > > > But now after scrolling down I see that second xtfpga error
> > > > https://source.denx.de/u-boot/u-boot/-/jobs/316614
> > > > But seems that in this UI is error log truncated. I see only
> > > > 
> > > > +xtensa-dc233c-elf-ld.bfd: section .text_version_string LMA [00000000fe021584,00000000fe0215c7] overlaps section .u_boot_list LMA [00000000fe021584,00000000fe021e6b]
> > > > 
> > > > Is there a way how to show full build log? And which defconfig and
> > > > compiler is used? Because that error does not help me what is wrong
> > > > here...
> > > 
> > > That's the full error log, from the linker, I believe.  It's the xtfpga
> > > config for the xtensa architecture.  It's one of the few that buildman
> > > won't fetch a good toolchain for so you'll want to look at
> > > tools/docker/Dockerfile and see we get it from
> > > https://github.com/foss-xtensa/toolchain/releases/download/2020.07/x86_64-2020.07-xtensa-dc233c-elf.tar.gz
> > > if you don't have the CI builder container itself handy already.
> > 
> > So this is the only other build which failed, right? I suspect that
> > there is some other bug in xtfpga linker script, that it missed
> > specifying wildcard sections and this change triggered it.
> > 
> > I will try to look at it.
> 
> Just a quick look...
> https://source.denx.de/u-boot/u-boot/-/blob/master/arch/xtensa/cpu/u-boot.lds#L78
> Probably it is needed to specify .text_version_string section here, like
> is specified .text section there.

I really do not know what is the memory layout of u-boot image for this
platform, but could not something like this help?

--- arch/xtensa/cpu/u-boot.lds	2021-09-10 22:50:51.501324477 +0200
+++ arch/xtensa/cpu/u-boot.lds	2021-09-10 22:53:55.271410047 +0200
@@ -47,6 +47,7 @@ SECTIONS
     RELOCATE2(DoubleExceptionVector,literal);
     RELOCATE2(DoubleExceptionVector,text);
     RELOCATE1(text);
+    RELOCATE1(text_version_string);
     RELOCATE1(rodata);
     RELOCATE1(data);
     RELOCATE1(u_boot_list);
@@ -76,7 +77,8 @@ SECTIONS
   __monitor_start = XTENSA_SYS_TEXT_ADDR;
 
   SECTION_text(XTENSA_SYS_TEXT_ADDR, FOLLOWING(.DoubleExceptionVector.text))
-  SECTION_rodata(ALIGN(16), FOLLOWING(.text))
+  SECTION_text_version_string(ALIGN(16), FOLLOWING(.text))
+  SECTION_rodata(ALIGN(16), FOLLOWING(.text_version_string))
   SECTION_u_boot_list(ALIGN(16), FOLLOWING(.rodata))
   SECTION_data(ALIGN(16), FOLLOWING(.u_boot_list))
 

> > It is pity that in above gitlab build log is missing full command which
> > produced that error as in its arguments could be something interesting,
> > like path to linker script or compile flags...


More information about the U-Boot mailing list