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