Re: [PATCH] ARM: zImage: Skip relinking if nothing changes

From: Troy Kisky
Date: Thu Aug 18 2011 - 18:26:21 EST


On 8/18/2011 12:31 PM, Russell King - ARM Linux wrote:
On Thu, Aug 18, 2011 at 02:03:43PM -0400, Arnaud Lacombe wrote:
Hi,

On Wed, Aug 17, 2011 at 11:44 PM, Nicolas Pitre<nico@xxxxxxxxxxx> wrote:
On Fri, 12 Aug 2011, Arnaud Lacombe wrote:
On Fri, Aug 12, 2011 at 4:48 PM, Arnaud Lacombe<lacombar@xxxxxxxxx> wrote:
On Fri, Aug 12, 2011 at 3:00 PM, Stephen Boyd<sboyd@xxxxxxxxxxxxxx> wrote:
diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile
index 0c74a6f..937fd26 100644
--- a/arch/arm/boot/compressed/Makefile
+++ b/arch/arm/boot/compressed/Makefile
@@ -91,7 +91,7 @@ suffix_$(CONFIG_KERNEL_LZMA) = lzma

targets := vmlinux vmlinux.lds \
piggy.$(suffix_y) piggy.$(suffix_y).o \
- font.o font.c head.o misc.o $(OBJS)
+ font.o font.c head.o misc.o lib1funcs.o lib1funcs.S $(OBJS)

# Make sure files are removed during clean
extra-y += piggy.gzip piggy.lzo piggy.lzma lib1funcs.S
@@ -121,9 +121,7 @@ LDFLAGS_vmlinux += -X
LDFLAGS_vmlinux += -T

# For __aeabi_uidivmod
-lib1funcs = $(obj)/lib1funcs.o
-
-$(obj)/lib1funcs.S: $(srctree)/arch/$(SRCARCH)/lib/lib1funcs.S FORCE
+$(obj)/lib1funcs.S: $(srctree)/arch/$(SRCARCH)/lib/lib1funcs.S
$(call cmd,shipped)

You should be able to avoid the extra copy altogether by doing something ala:

$(obj)/lib1funcs.o: $(srctree)/arch/arm/lib/lib1funcs.S
$(call cmd,as_o_S)

note that I also remove the $(SRCARCH), as there is no other
`arch/*/lib/lib1funcs.S' than `arch/arm/lib/lib1funcs.S'

I withdraw this proposal and will hack around this to find a proper
solution from within kbuild, and eventually come back on these uses
:-)
Any progress on this?

I have a patch doing multiple similar $(call cmd,shipped) at the moment
and this is far from looking nice.
What is your use-case ? Is it re-use of code in a different
subdirectory (use-case presented in this thread), or aliasing of the
same source under different object name in the same directory (as used
in the alpha tree) ?
It is to be able to reuse the same file source file in both the main
kernel and the decompressor, sometimes rebuilding it with differing
options from the main kernel build.

As the two environments are entirely separate, it is not always
appropriate to clone the previously built object file.

Hence, we copy the source file and re-build it.

The alternative is that we could keep two copies of the same source
in two different locations, but that's just plain idiotic just to
satisfy some silly kbuild restriction.

Can the second file just contain a "#include " of the 1st?

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/