[PATCH v2 1/2] Kbuild: include arch/ Makefile before test/ directory

Ahmad Fatoum a.fatoum at pengutronix.de
Wed Jun 28 23:53:55 PDT 2023

Unless overridden by SORT*, LD will place sections matched by wildcards
in the order they were seen in the link. So far, this meant that
arch/ initcalls and device trees compiled into barebox proper, were
always last.

For platforms with PBL or with only one device tree in barebox proper,
this didn't matter much, but when enabling the of_manipulation selftest,
a second device tree would be built into barebox on kvx, openrisc and
some MIPS.

Because all directories appear before arch/, this had the effect that
on kvx, openrisc and some MIPS, __dtb_start would end up pointing at the
test's device tree instead of the board device tree breaking the build.

Switching the affected platforms to use PBL would be one fix for the
issue, but there's a simple one: let's just move test/ after arch/.

My preferred solution would've been to move arch/ at the first
beginning, but this may cause fallout for code that depended on specific
ordering of initcalls or other linker-defined lists.

Signed-off-by: Ahmad Fatoum <a.fatoum at pengutronix.de>
v1 -> v2:
  - move only test/ after arch/ to reduce chance of breakage
 Makefile | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index 1d986ec9cb13..d6e65974458e 100644
--- a/Makefile
+++ b/Makefile
@@ -594,10 +594,12 @@ endif
 include $(srctree)/scripts/Makefile.lib
 # Objects we will link into barebox / subdirs we need to visit
-common-y		:= common/ drivers/ commands/ lib/ crypto/ net/ fs/ firmware/ test/
+common-y		:= common/ drivers/ commands/ lib/ crypto/ net/ fs/ firmware/
 include $(srctree)/arch/$(SRCARCH)/Makefile
+common-y		+= test/
 ifdef need-config
 ifdef may-sync-config
 # Read in dependencies to all Kconfig* files, make sure to run syncconfig if

More information about the barebox mailing list