diff mbox series

ARM: decompressor: do not copy source files while building

Message ID 20211030175258.1716178-1-masahiroy@kernel.org (mailing list archive)
State New, archived
Headers show
Series ARM: decompressor: do not copy source files while building | expand

Commit Message

Masahiro Yamada Oct. 30, 2021, 5:52 p.m. UTC
As commit 7ae4a78daacf ("ARM: 8969/1: decompressor: simplify libfdt
builds") stated, copying source files during the build time may not
end up with as clean code as expected.

Do similar for the other library files for further cleanups of the
Makefile and .gitignore.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

KernelVersion: v5.15-rc1

 arch/arm/boot/compressed/.gitignore  |  5 -----
 arch/arm/boot/compressed/Makefile    | 33 +++-------------------------
 arch/arm/boot/compressed/ashldi3.S   |  3 +++
 arch/arm/boot/compressed/bswapsdi2.S |  3 +++
 arch/arm/boot/compressed/font.c      |  2 ++
 arch/arm/boot/compressed/hyp-stub.S  |  2 ++
 arch/arm/boot/compressed/lib1funcs.S |  3 +++
 scripts/remove-stale-files           |  2 +-
 8 files changed, 17 insertions(+), 36 deletions(-)
 create mode 100644 arch/arm/boot/compressed/ashldi3.S
 create mode 100644 arch/arm/boot/compressed/bswapsdi2.S
 create mode 100644 arch/arm/boot/compressed/font.c
 create mode 100644 arch/arm/boot/compressed/hyp-stub.S
 create mode 100644 arch/arm/boot/compressed/lib1funcs.S

Comments

Russell King (Oracle) March 11, 2022, 12:07 p.m. UTC | #1
On Sun, Oct 31, 2021 at 02:52:58AM +0900, Masahiro Yamada wrote:
> As commit 7ae4a78daacf ("ARM: 8969/1: decompressor: simplify libfdt
> builds") stated, copying source files during the build time may not
> end up with as clean code as expected.
> 
> Do similar for the other library files for further cleanups of the
> Makefile and .gitignore.
> 
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>

Hi,

I am now seeing the following every time I run a build:

  GEN     Makefile
  CALL    .../linux-rmk/scripts/atomic/check-atomics.sh
  CALL    .../linux-rmk/scripts/checksyscalls.sh
  CHK     include/generated/compile.h
  Kernel: arch/arm/boot/Image is ready
  AS      arch/arm/boot/compressed/lib1funcs.o
  AS      arch/arm/boot/compressed/ashldi3.o
  AS      arch/arm/boot/compressed/bswapsdi2.o
  LD      arch/arm/boot/compressed/vmlinux
  OBJCOPY arch/arm/boot/zImage
  Kernel: arch/arm/boot/zImage is ready

In other words, those three objects are always rebuilt even though
they haven't changed.

I've tried removing the arch/arm/boot/compressed directory in the
build tree, but that doesn't make any difference.

Running with V=2 shows:

  AS      arch/arm/boot/compressed/lib1funcs.o - due to lib1funcs.o not in $(tar
gets)
  AS      arch/arm/boot/compressed/ashldi3.o - due to ashldi3.o not in $(targets)
  AS      arch/arm/boot/compressed/bswapsdi2.o - due to bswapsdi2.o not in $(targets)

It looks to me like:
OBJS    += lib1funcs.o ashldi3.o bswapsdi2.o

in your patch should have been added before:

targets       := vmlinux vmlinux.lds piggy_data piggy.o \
                 head.o $(OBJS)

Please confirm.
Masahiro Yamada March 13, 2022, 4:35 p.m. UTC | #2
On Fri, Mar 11, 2022 at 9:07 PM Russell King (Oracle)
<linux@armlinux.org.uk> wrote:
>
> On Sun, Oct 31, 2021 at 02:52:58AM +0900, Masahiro Yamada wrote:
> > As commit 7ae4a78daacf ("ARM: 8969/1: decompressor: simplify libfdt
> > builds") stated, copying source files during the build time may not
> > end up with as clean code as expected.
> >
> > Do similar for the other library files for further cleanups of the
> > Makefile and .gitignore.
> >
> > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
>
> Hi,
>
> I am now seeing the following every time I run a build:
>
>   GEN     Makefile
>   CALL    .../linux-rmk/scripts/atomic/check-atomics.sh
>   CALL    .../linux-rmk/scripts/checksyscalls.sh
>   CHK     include/generated/compile.h
>   Kernel: arch/arm/boot/Image is ready
>   AS      arch/arm/boot/compressed/lib1funcs.o
>   AS      arch/arm/boot/compressed/ashldi3.o
>   AS      arch/arm/boot/compressed/bswapsdi2.o
>   LD      arch/arm/boot/compressed/vmlinux
>   OBJCOPY arch/arm/boot/zImage
>   Kernel: arch/arm/boot/zImage is ready
>
> In other words, those three objects are always rebuilt even though
> they haven't changed.
>
> I've tried removing the arch/arm/boot/compressed directory in the
> build tree, but that doesn't make any difference.
>
> Running with V=2 shows:
>
>   AS      arch/arm/boot/compressed/lib1funcs.o - due to lib1funcs.o not in $(tar
> gets)
>   AS      arch/arm/boot/compressed/ashldi3.o - due to ashldi3.o not in $(targets)
>   AS      arch/arm/boot/compressed/bswapsdi2.o - due to bswapsdi2.o not in $(targets)
>
> It looks to me like:
> OBJS    += lib1funcs.o ashldi3.o bswapsdi2.o
>
> in your patch should have been added before:
>
> targets       := vmlinux vmlinux.lds piggy_data piggy.o \
>                  head.o $(OBJS)
>
> Please confirm.


Sorry for my late reply.

Yes, you are right.

OBJS    += lib1funcs.o ashldi3.o bswapsdi2.o

should come before the 'targets' assignment.
Masahiro Yamada March 25, 2022, 2:54 a.m. UTC | #3
Hi Russell,


Was this issue fixed?
(I see nothing happened in linux-next yet)

I will not send a patch because I assume you will
fix this by yourself. If there is something you want
me, please let me know.

Thanks.
Masahiro Yamada






On Mon, Mar 14, 2022 at 1:35 AM Masahiro Yamada <masahiroy@kernel.org> wrote:
>
> On Fri, Mar 11, 2022 at 9:07 PM Russell King (Oracle)
> <linux@armlinux.org.uk> wrote:
> >
> > On Sun, Oct 31, 2021 at 02:52:58AM +0900, Masahiro Yamada wrote:
> > > As commit 7ae4a78daacf ("ARM: 8969/1: decompressor: simplify libfdt
> > > builds") stated, copying source files during the build time may not
> > > end up with as clean code as expected.
> > >
> > > Do similar for the other library files for further cleanups of the
> > > Makefile and .gitignore.
> > >
> > > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
> >
> > Hi,
> >
> > I am now seeing the following every time I run a build:
> >
> >   GEN     Makefile
> >   CALL    .../linux-rmk/scripts/atomic/check-atomics.sh
> >   CALL    .../linux-rmk/scripts/checksyscalls.sh
> >   CHK     include/generated/compile.h
> >   Kernel: arch/arm/boot/Image is ready
> >   AS      arch/arm/boot/compressed/lib1funcs.o
> >   AS      arch/arm/boot/compressed/ashldi3.o
> >   AS      arch/arm/boot/compressed/bswapsdi2.o
> >   LD      arch/arm/boot/compressed/vmlinux
> >   OBJCOPY arch/arm/boot/zImage
> >   Kernel: arch/arm/boot/zImage is ready
> >
> > In other words, those three objects are always rebuilt even though
> > they haven't changed.
> >
> > I've tried removing the arch/arm/boot/compressed directory in the
> > build tree, but that doesn't make any difference.
> >
> > Running with V=2 shows:
> >
> >   AS      arch/arm/boot/compressed/lib1funcs.o - due to lib1funcs.o not in $(tar
> > gets)
> >   AS      arch/arm/boot/compressed/ashldi3.o - due to ashldi3.o not in $(targets)
> >   AS      arch/arm/boot/compressed/bswapsdi2.o - due to bswapsdi2.o not in $(targets)
> >
> > It looks to me like:
> > OBJS    += lib1funcs.o ashldi3.o bswapsdi2.o
> >
> > in your patch should have been added before:
> >
> > targets       := vmlinux vmlinux.lds piggy_data piggy.o \
> >                  head.o $(OBJS)
> >
> > Please confirm.
>
>
> Sorry for my late reply.
>
> Yes, you are right.
>
> OBJS    += lib1funcs.o ashldi3.o bswapsdi2.o
>
> should come before the 'targets' assignment.
>
>
>
>
>
> --
> Best Regards
> Masahiro Yamada
Russell King (Oracle) March 30, 2022, 4:22 p.m. UTC | #4
Hi,

Your reply was too late for me, I've been away on vacation from 14th
March until now... and now I've got a whole truck-load of catch-up, so
it's likely I'll forget to sort this. Please send a patch to fix it,
thanks.

On Fri, Mar 25, 2022 at 11:54:07AM +0900, Masahiro Yamada wrote:
> Hi Russell,
> 
> 
> Was this issue fixed?
> (I see nothing happened in linux-next yet)
> 
> I will not send a patch because I assume you will
> fix this by yourself. If there is something you want
> me, please let me know.
> 
> Thanks.
> Masahiro Yamada
> 
> 
> 
> 
> 
> 
> On Mon, Mar 14, 2022 at 1:35 AM Masahiro Yamada <masahiroy@kernel.org> wrote:
> >
> > On Fri, Mar 11, 2022 at 9:07 PM Russell King (Oracle)
> > <linux@armlinux.org.uk> wrote:
> > >
> > > On Sun, Oct 31, 2021 at 02:52:58AM +0900, Masahiro Yamada wrote:
> > > > As commit 7ae4a78daacf ("ARM: 8969/1: decompressor: simplify libfdt
> > > > builds") stated, copying source files during the build time may not
> > > > end up with as clean code as expected.
> > > >
> > > > Do similar for the other library files for further cleanups of the
> > > > Makefile and .gitignore.
> > > >
> > > > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
> > >
> > > Hi,
> > >
> > > I am now seeing the following every time I run a build:
> > >
> > >   GEN     Makefile
> > >   CALL    .../linux-rmk/scripts/atomic/check-atomics.sh
> > >   CALL    .../linux-rmk/scripts/checksyscalls.sh
> > >   CHK     include/generated/compile.h
> > >   Kernel: arch/arm/boot/Image is ready
> > >   AS      arch/arm/boot/compressed/lib1funcs.o
> > >   AS      arch/arm/boot/compressed/ashldi3.o
> > >   AS      arch/arm/boot/compressed/bswapsdi2.o
> > >   LD      arch/arm/boot/compressed/vmlinux
> > >   OBJCOPY arch/arm/boot/zImage
> > >   Kernel: arch/arm/boot/zImage is ready
> > >
> > > In other words, those three objects are always rebuilt even though
> > > they haven't changed.
> > >
> > > I've tried removing the arch/arm/boot/compressed directory in the
> > > build tree, but that doesn't make any difference.
> > >
> > > Running with V=2 shows:
> > >
> > >   AS      arch/arm/boot/compressed/lib1funcs.o - due to lib1funcs.o not in $(tar
> > > gets)
> > >   AS      arch/arm/boot/compressed/ashldi3.o - due to ashldi3.o not in $(targets)
> > >   AS      arch/arm/boot/compressed/bswapsdi2.o - due to bswapsdi2.o not in $(targets)
> > >
> > > It looks to me like:
> > > OBJS    += lib1funcs.o ashldi3.o bswapsdi2.o
> > >
> > > in your patch should have been added before:
> > >
> > > targets       := vmlinux vmlinux.lds piggy_data piggy.o \
> > >                  head.o $(OBJS)
> > >
> > > Please confirm.
> >
> >
> > Sorry for my late reply.
> >
> > Yes, you are right.
> >
> > OBJS    += lib1funcs.o ashldi3.o bswapsdi2.o
> >
> > should come before the 'targets' assignment.
> >
> >
> >
> >
> >
> > --
> > Best Regards
> > Masahiro Yamada
> 
> 
> 
> -- 
> Best Regards
> Masahiro Yamada
>
Masahiro Yamada March 31, 2022, 9:19 a.m. UTC | #5
On Thu, Mar 31, 2022 at 1:22 AM Russell King (Oracle)
<linux@armlinux.org.uk> wrote:
>
> Hi,
>
> Your reply was too late for me, I've been away on vacation from 14th
> March until now... and now I've got a whole truck-load of catch-up, so
> it's likely I'll forget to sort this. Please send a patch to fix it,
> thanks.

Done.

https://www.armlinux.org.uk/developer/patches/viewpatch.php?id=9189/1


Thanks.




>
> On Fri, Mar 25, 2022 at 11:54:07AM +0900, Masahiro Yamada wrote:
> > Hi Russell,
> >
> >
> > Was this issue fixed?
> > (I see nothing happened in linux-next yet)
> >
> > I will not send a patch because I assume you will
> > fix this by yourself. If there is something you want
> > me, please let me know.
> >
> > Thanks.
> > Masahiro Yamada
> >
> >
> >
> >
> >
> >
> > On Mon, Mar 14, 2022 at 1:35 AM Masahiro Yamada <masahiroy@kernel.org> wrote:
> > >
> > > On Fri, Mar 11, 2022 at 9:07 PM Russell King (Oracle)
> > > <linux@armlinux.org.uk> wrote:
> > > >
> > > > On Sun, Oct 31, 2021 at 02:52:58AM +0900, Masahiro Yamada wrote:
> > > > > As commit 7ae4a78daacf ("ARM: 8969/1: decompressor: simplify libfdt
> > > > > builds") stated, copying source files during the build time may not
> > > > > end up with as clean code as expected.
> > > > >
> > > > > Do similar for the other library files for further cleanups of the
> > > > > Makefile and .gitignore.
> > > > >
> > > > > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
> > > >
> > > > Hi,
> > > >
> > > > I am now seeing the following every time I run a build:
> > > >
> > > >   GEN     Makefile
> > > >   CALL    .../linux-rmk/scripts/atomic/check-atomics.sh
> > > >   CALL    .../linux-rmk/scripts/checksyscalls.sh
> > > >   CHK     include/generated/compile.h
> > > >   Kernel: arch/arm/boot/Image is ready
> > > >   AS      arch/arm/boot/compressed/lib1funcs.o
> > > >   AS      arch/arm/boot/compressed/ashldi3.o
> > > >   AS      arch/arm/boot/compressed/bswapsdi2.o
> > > >   LD      arch/arm/boot/compressed/vmlinux
> > > >   OBJCOPY arch/arm/boot/zImage
> > > >   Kernel: arch/arm/boot/zImage is ready
> > > >
> > > > In other words, those three objects are always rebuilt even though
> > > > they haven't changed.
> > > >
> > > > I've tried removing the arch/arm/boot/compressed directory in the
> > > > build tree, but that doesn't make any difference.
> > > >
> > > > Running with V=2 shows:
> > > >
> > > >   AS      arch/arm/boot/compressed/lib1funcs.o - due to lib1funcs.o not in $(tar
> > > > gets)
> > > >   AS      arch/arm/boot/compressed/ashldi3.o - due to ashldi3.o not in $(targets)
> > > >   AS      arch/arm/boot/compressed/bswapsdi2.o - due to bswapsdi2.o not in $(targets)
> > > >
> > > > It looks to me like:
> > > > OBJS    += lib1funcs.o ashldi3.o bswapsdi2.o
> > > >
> > > > in your patch should have been added before:
> > > >
> > > > targets       := vmlinux vmlinux.lds piggy_data piggy.o \
> > > >                  head.o $(OBJS)
> > > >
> > > > Please confirm.
> > >
> > >
> > > Sorry for my late reply.
> > >
> > > Yes, you are right.
> > >
> > > OBJS    += lib1funcs.o ashldi3.o bswapsdi2.o
> > >
> > > should come before the 'targets' assignment.
> > >
> > >
> > >
> > >
> > >
> > > --
> > > Best Regards
> > > Masahiro Yamada
> >
> >
> >
> > --
> > Best Regards
> > Masahiro Yamada
> >
>
> --
> RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
> FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!
diff mbox series

Patch

diff --git a/arch/arm/boot/compressed/.gitignore b/arch/arm/boot/compressed/.gitignore
index 60606b0f378d..d32f41778437 100644
--- a/arch/arm/boot/compressed/.gitignore
+++ b/arch/arm/boot/compressed/.gitignore
@@ -1,9 +1,4 @@ 
 # SPDX-License-Identifier: GPL-2.0-only
-ashldi3.S
-bswapsdi2.S
-font.c
-lib1funcs.S
-hyp-stub.S
 piggy_data
 vmlinux
 vmlinux.lds
diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile
index 91265e7ff672..74d2f1401acb 100644
--- a/arch/arm/boot/compressed/Makefile
+++ b/arch/arm/boot/compressed/Makefile
@@ -13,7 +13,6 @@  ifeq ($(CONFIG_DEBUG_UNCOMPRESS),y)
 OBJS	+= debug.o
 AFLAGS_head.o += -DDEBUG
 endif
-FONTC	= $(srctree)/lib/fonts/font_acorn_8x8.c
 
 # string library code (-Os is enforced to keep it much smaller)
 OBJS		+= string.o
@@ -99,11 +98,8 @@  $(foreach o, $(libfdt_objs) atags_to_fdt.o fdt_check_mem_start.o, \
 	$(eval CFLAGS_$(o) := -I $(srctree)/scripts/dtc/libfdt -fno-stack-protector))
 
 targets       := vmlinux vmlinux.lds piggy_data piggy.o \
-		 lib1funcs.o ashldi3.o bswapsdi2.o \
 		 head.o $(OBJS)
 
-clean-files += lib1funcs.S ashldi3.S bswapsdi2.S hyp-stub.S
-
 KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING
 
 ccflags-y := -fpic $(call cc-option,-mno-single-pic-base,) -fno-builtin \
@@ -134,23 +130,7 @@  endif
 # Next argument is a linker script
 LDFLAGS_vmlinux += -T
 
-# For __aeabi_uidivmod
-lib1funcs = $(obj)/lib1funcs.o
-
-$(obj)/lib1funcs.S: $(srctree)/arch/$(SRCARCH)/lib/lib1funcs.S
-	$(call cmd,shipped)
-
-# For __aeabi_llsl
-ashldi3 = $(obj)/ashldi3.o
-
-$(obj)/ashldi3.S: $(srctree)/arch/$(SRCARCH)/lib/ashldi3.S
-	$(call cmd,shipped)
-
-# For __bswapsi2, __bswapdi2
-bswapsdi2 = $(obj)/bswapsdi2.o
-
-$(obj)/bswapsdi2.S: $(srctree)/arch/$(SRCARCH)/lib/bswapsdi2.S
-	$(call cmd,shipped)
+OBJS	+= lib1funcs.o ashldi3.o bswapsdi2.o
 
 # We need to prevent any GOTOFF relocs being used with references
 # to symbols in the .bss section since we cannot relocate them
@@ -175,8 +155,8 @@  fi
 efi-obj-$(CONFIG_EFI_STUB) := $(objtree)/drivers/firmware/efi/libstub/lib.a
 
 $(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.o \
-		$(addprefix $(obj)/, $(OBJS)) $(lib1funcs) $(ashldi3) \
-		$(bswapsdi2) $(efi-obj-y) FORCE
+		$(addprefix $(obj)/, $(OBJS)) \
+		$(efi-obj-y) FORCE
 	@$(check_for_multiple_zreladdr)
 	$(call if_changed,ld)
 	@$(check_for_bad_syms)
@@ -187,11 +167,4 @@  $(obj)/piggy_data: $(obj)/../Image FORCE
 $(obj)/piggy.o: $(obj)/piggy_data
 
 CFLAGS_font.o := -Dstatic=
-
-$(obj)/font.c: $(FONTC)
-	$(call cmd,shipped)
-
 AFLAGS_hyp-stub.o := -Wa,-march=armv7-a
-
-$(obj)/hyp-stub.S: $(srctree)/arch/$(SRCARCH)/kernel/hyp-stub.S
-	$(call cmd,shipped)
diff --git a/arch/arm/boot/compressed/ashldi3.S b/arch/arm/boot/compressed/ashldi3.S
new file mode 100644
index 000000000000..216f82eda609
--- /dev/null
+++ b/arch/arm/boot/compressed/ashldi3.S
@@ -0,0 +1,3 @@ 
+/* SPDX-License-Identifier: GPL-2.0-only */
+/* For __aeabi_llsl */
+#include "../../lib/ashldi3.S"
diff --git a/arch/arm/boot/compressed/bswapsdi2.S b/arch/arm/boot/compressed/bswapsdi2.S
new file mode 100644
index 000000000000..b2156b378c7b
--- /dev/null
+++ b/arch/arm/boot/compressed/bswapsdi2.S
@@ -0,0 +1,3 @@ 
+/* SPDX-License-Identifier: GPL-2.0-only */
+/* For __bswapsi2, __bswapdi2 */
+#include "../../lib/bswapsdi2.S"
diff --git a/arch/arm/boot/compressed/font.c b/arch/arm/boot/compressed/font.c
new file mode 100644
index 000000000000..46a677649db4
--- /dev/null
+++ b/arch/arm/boot/compressed/font.c
@@ -0,0 +1,2 @@ 
+// SPDX-License-Identifier: GPL-2.0-only
+#include "../../../../lib/fonts/font_acorn_8x8.c"
diff --git a/arch/arm/boot/compressed/hyp-stub.S b/arch/arm/boot/compressed/hyp-stub.S
new file mode 100644
index 000000000000..a703eaa86f10
--- /dev/null
+++ b/arch/arm/boot/compressed/hyp-stub.S
@@ -0,0 +1,2 @@ 
+/* SPDX-License-Identifier: GPL-2.0-only */
+#include "../../kernel/hyp-stub.S"
diff --git a/arch/arm/boot/compressed/lib1funcs.S b/arch/arm/boot/compressed/lib1funcs.S
new file mode 100644
index 000000000000..815dec73ba4d
--- /dev/null
+++ b/arch/arm/boot/compressed/lib1funcs.S
@@ -0,0 +1,3 @@ 
+/* SPDX-License-Identifier: GPL-2.0-only */
+/* For __aeabi_uidivmod */
+#include "../../lib/lib1funcs.S"
diff --git a/scripts/remove-stale-files b/scripts/remove-stale-files
index c3eb81c3f7de..eb630ee287c3 100755
--- a/scripts/remove-stale-files
+++ b/scripts/remove-stale-files
@@ -24,7 +24,7 @@  set -e
 # with O=, make sure to remove the stale files in the output tree. Otherwise,
 # the build system wrongly compiles the stale ones.
 if [ -n "${building_out_of_srctree}" ]; then
-	for f in fdt_rw.c fdt_ro.c fdt_wip.c fdt.c
+	for f in fdt_rw.c fdt_ro.c fdt_wip.c fdt.c ashldi3.S bswapsdi2.S font.c lib1funcs.S hyp-stub.S
 	do
 		rm -f arch/arm/boot/compressed/${f}
 	done