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

Arnaud Lacombe
2011-08-18T22:38:33Z

Hi,

On Thu, Aug 18, 2011 at 6:25 PM, Troy Kisky
<troy.kisky@boundarydevices.com> wrote:
> 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@fluxnic.net>  wrote:
>>>>
>>>> On Fri, 12 Aug 2011, Arnaud Lacombe wrote:
>>>>>
>>>>> On Fri, Aug 12, 2011 at 4:48 PM, Arnaud Lacombe<lacombar@gmail.com>
>>>>>  wrote:
>>>>>>
>>>>>> On Fri, Aug 12, 2011 at 3:00 PM, Stephen Boyd<sboyd@codeaurora.org>
>>>>>>  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?
>
<personal opinion>
Sorry, but it'd taste awfully disgusting, and broken.
<personal opinion/>

- Arnaud