Re: [PATCH] ARM: socfpga: generate smaller images when multiple boards are selected

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Nov 16, 2018 at 11:31 PM Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> wrote:
>
> The socfpga xload images are limited to 64KiB. This doesn't fit if
> multiple boards are selected. The reason is that we include huge
> C files and arrays in the early init code which get compiled once
> for each board. -ffunction-sections is without effect here since all
> functions have the same name and hence we get the same function
> multiple times in the same section.
>
> To overcome this we surround all function names with a SECT() macro which
> is used to add a board specific prefix to the section names. This way
> -ffunction-sections can now do its work and discard unused functions.
>
> Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx>


I just accidentally stopped by this commit.

It is a good thing that you noticed dead code elimination
(-ffunction-sections -fdata-sections, --gc-sections)
does not work if the same symbol names are used
in the conventional incremental linking
Linux kernel used to use.

As you notice, this is a potential problem
of CONFIG_PBL_MULTI_IMAGES,
and I know the right solution.


Since Linux v4.13 (commit 98ced886dd79a),
Linux kernel build system uses thin archive,
where Kbuild uses $(AR) rcSTP instead of $(LD) -r
to combine built-in objects.

With this, the final link stage does the right thing to do
for --gc-sections.

Besides, thin archive is faster,
and saves disk spaces.

If you sync core Makefiles with Linux,
your problem will be solved.





--
Best Regards
Masahiro Yamada

_______________________________________________
barebox mailing list
barebox@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/barebox



[Index of Archives]     [Linux Embedded]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux