Arm64: Fix build error while switching from LE to BE
PATCH 1/1 Arm64: Fix build error while switching from LE to BE
Building a kernel with CPU_BIG_ENDIAN fails if there are stale objects from a !CPU_BIG_ENDIAN build. Due to a missing FORCE prerequisite on an if_changed rule in the VDSO Makefile, we attempt to link a stale LE object into the new BE kernel. According to Documentation/kbuild/makefiles.txt FORCE is required for if_changed rules, and forgetting it is a common mistake
So fix it by 'Forcing' the build of vdso. Fixes build errors like these:
arch/arm64/kernel/vdso/note.o: compiled for a little endian system and target is big endian failed to merge target specific data of file arch/arm64/kernel/vdso/note.o
arch/arm64/kernel/vdso/sigreturn.o: compiled for a little endian system and target is big endian failed to merge target specific data of file arch/arm64/kernel/vdso/sigreturn.o
--- arch/arm64/kernel/vdso/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm64/kernel/vdso/Makefile +1 -1
@@ -43,7 +43,7 @@ $(obj)/vdso-offsets.h: $(obj)/vdso.so.dbg FORCE $(call if_changed,vdsosym) # Assembly rules for the .S files -$(obj-vdso): %.o: %.S +$(obj-vdso): %.o: %.S FORCE $(call if_changed_dep,vdsoas) # Actual build commands
Signature · 1 line
1.7.9.5
PATCH 1/1 Arm64: Fix build error while switching from LE to BE
Quoted 34 lines · Arun Chandran
Building a kernel with
CPU_BIG_ENDIANfails if there are stale objects from a !CPU_BIG_ENDIAN build. Due to a missing FORCE prerequisite on anif_changedrule in the VDSOMakefile, we attempt to link a stale LE object into the new BE kernel. According toDocumentation/kbuild/makefiles.txtFORCE is required forif_changedrules, and forgetting it is a common mistakeSo fix it by 'Forcing' the build of vdso. Fixes build errors like these:
arch/arm64/kernel/vdso/note.o: compiled for a little endian system and target is big endian failed to merge target specific data of filearch/arm64/kernel/vdso/note.o
arch/arm64/kernel/vdso/sigreturn.o: compiled for a little endian system and target is big endian failed to merge target specific data of filearch/arm64/kernel/vdso/sigreturn.oSigned-off-by Arun Chandran <[email protected]>Tested-by Mark Rutland <[email protected]>--- arch/arm64/kernel/vdso/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)arch/arm64/kernel/vdso/Makefile +1
-2@@ -43,7 +43,7 @@ $(obj)/vdso-offsets.h: $(obj)/vdso.so.dbg FORCE $(call if_changed,vdsosym) # Assembly rules for the .S files -$(obj-vdso): %.o: %.S +$(obj-vdso): %.o: %.S FORCE $(call if_changed_dep,vdsoas) # Actual build commands --
Quoted 2 lines
1.7.9.5
Any update on this?
--Arun
PATCH 1/1 Arm64: Fix build error while switching from LE to BE
Quoted 33 lines · Arun Chandran
Quoted 32 lines · Arun Chandran
Building a kernel with
CPU_BIG_ENDIANfails if there are stale objects from a !CPU_BIG_ENDIAN build. Due to a missing FORCE prerequisite on anif_changedrule in the VDSOMakefile, we attempt to link a stale LE object into the new BE kernel. According toDocumentation/kbuild/makefiles.txtFORCE is required forif_changedrules, and forgetting it is a common mistakeSo fix it by 'Forcing' the build of vdso. Fixes build errors like these:
arch/arm64/kernel/vdso/note.o: compiled for a little endian system and target is big endian failed to merge target specific data of filearch/arm64/kernel/vdso/note.o
arch/arm64/kernel/vdso/sigreturn.o: compiled for a little endian system and target is big endian failed to merge target specific data of filearch/arm64/kernel/vdso/sigreturn.oSigned-off-by Arun Chandran <[email protected]>Tested-by Mark Rutland <[email protected]>--- arch/arm64/kernel/vdso/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)arch/arm64/kernel/vdso/Makefile +1
-1@@ -43,7 +43,7 @@ $(obj)/vdso-offsets.h: $(obj)/vdso.so.dbg FORCE $(call if_changed,vdsosym) # Assembly rules for the .S files -$(obj-vdso): %.o: %.S +$(obj-vdso): %.o: %.S FORCE $(call if_changed_dep,vdsoas)
Quoted 6 lines
Quoted 4 lines
arch/arm64/kernel/vdso/Makefile +0
-1# Actual build commands --1.7.9.5
Any update on this?
Sorry, this slipped through the cracks (neither myself or Catalin were on CC and we didn't spot it on the list).
I've applied it to our for-next branch targetting 3.17 and will push out after a bit of testing.
Will