linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] powerpc: rebuild vdsos correctly
@ 2016-08-08  9:35 Nicholas Piggin
  2016-08-09  4:49 ` Michael Ellerman
  2016-08-11 11:16 ` Michael Ellerman
  0 siblings, 2 replies; 5+ messages in thread
From: Nicholas Piggin @ 2016-08-08  9:35 UTC (permalink / raw)
  To: linuxppc-dev; +Cc: Nicholas Piggin, Michael Ellerman

When using if_changed, we need to add FORCE to dependencies, otherwise
we don't get command line change checking amongst other things. This
has resulted in vdsos not being rebuilt when switching between big and
little endian.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---

There look to be some other cases in arch/powerpc/ of if_changed
being used without FORCE too, which should also be investigated.
Also, why are we using if_changed_deps?
---
 arch/powerpc/kernel/vdso32/Makefile | 8 ++++----
 arch/powerpc/kernel/vdso64/Makefile | 8 ++++----
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/arch/powerpc/kernel/vdso32/Makefile b/arch/powerpc/kernel/vdso32/Makefile
index cbabd14..ae1f245 100644
--- a/arch/powerpc/kernel/vdso32/Makefile
+++ b/arch/powerpc/kernel/vdso32/Makefile
@@ -30,7 +30,7 @@ CPPFLAGS_vdso32.lds += -P -C -Upowerpc
 $(obj)/vdso32_wrapper.o : $(obj)/vdso32.so
 
 # link rule for the .so file, .lds has to be first
-$(obj)/vdso32.so.dbg: $(src)/vdso32.lds $(obj-vdso32)
+$(obj)/vdso32.so.dbg: $(src)/vdso32.lds $(obj-vdso32) FORCE
 	$(call if_changed,vdso32ld)
 
 # strip rule for the .so file
@@ -39,14 +39,14 @@ $(obj)/%.so: $(obj)/%.so.dbg FORCE
 	$(call if_changed,objcopy)
 
 # assembly rules for the .S files
-$(obj-vdso32): %.o: %.S
+$(obj-vdso32): %.o: %.S FORCE
 	$(call if_changed_dep,vdso32as)
 
 # actual build commands
 quiet_cmd_vdso32ld = VDSO32L $@
-      cmd_vdso32ld = $(CROSS32CC) $(c_flags) -Wl,-T $^ -o $@
+      cmd_vdso32ld = $(CROSS32CC) $(c_flags) -o $@ -Wl,-T$(filter %.lds,$^) $(filter %.o,$^)
 quiet_cmd_vdso32as = VDSO32A $@
-      cmd_vdso32as = $(CROSS32CC) $(a_flags) -c -o $@ $<
+      cmd_vdso32as = $(CROSS32CC) $(a_flags) -o $@ -c $<
 
 # install commands for the unstripped file
 quiet_cmd_vdso_install = INSTALL $@
diff --git a/arch/powerpc/kernel/vdso64/Makefile b/arch/powerpc/kernel/vdso64/Makefile
index c710802..0d5f04a 100644
--- a/arch/powerpc/kernel/vdso64/Makefile
+++ b/arch/powerpc/kernel/vdso64/Makefile
@@ -23,7 +23,7 @@ CPPFLAGS_vdso64.lds += -P -C -U$(ARCH)
 $(obj)/vdso64_wrapper.o : $(obj)/vdso64.so
 
 # link rule for the .so file, .lds has to be first
-$(obj)/vdso64.so.dbg: $(src)/vdso64.lds $(obj-vdso64)
+$(obj)/vdso64.so.dbg: $(src)/vdso64.lds $(obj-vdso64) FORCE
 	$(call if_changed,vdso64ld)
 
 # strip rule for the .so file
@@ -32,14 +32,14 @@ $(obj)/%.so: $(obj)/%.so.dbg FORCE
 	$(call if_changed,objcopy)
 
 # assembly rules for the .S files
-$(obj-vdso64): %.o: %.S
+$(obj-vdso64): %.o: %.S FORCE
 	$(call if_changed_dep,vdso64as)
 
 # actual build commands
 quiet_cmd_vdso64ld = VDSO64L $@
-      cmd_vdso64ld = $(CC) $(c_flags) -Wl,-T $^ -o $@
+      cmd_vdso64ld = $(CC) $(c_flags) -o $@ -Wl,-T$(filter %.lds,$^) $(filter %.o,$^)
 quiet_cmd_vdso64as = VDSO64A $@
-      cmd_vdso64as = $(CC) $(a_flags) -c -o $@ $<
+      cmd_vdso64as = $(CC) $(a_flags) -o $@ -c $<
 
 # install commands for the unstripped file
 quiet_cmd_vdso_install = INSTALL $@
-- 
2.8.1

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] powerpc: rebuild vdsos correctly
  2016-08-08  9:35 [PATCH] powerpc: rebuild vdsos correctly Nicholas Piggin
@ 2016-08-09  4:49 ` Michael Ellerman
  2016-08-09  5:53   ` Nicholas Piggin
  2016-08-11 11:16 ` Michael Ellerman
  1 sibling, 1 reply; 5+ messages in thread
From: Michael Ellerman @ 2016-08-09  4:49 UTC (permalink / raw)
  To: Nicholas Piggin, linuxppc-dev; +Cc: Nicholas Piggin

Nicholas Piggin <npiggin@gmail.com> writes:

> diff --git a/arch/powerpc/kernel/vdso32/Makefile b/arch/powerpc/kernel/vdso32/Makefile
> index cbabd14..ae1f245 100644
> --- a/arch/powerpc/kernel/vdso32/Makefile
> +++ b/arch/powerpc/kernel/vdso32/Makefile
> @@ -39,14 +39,14 @@ $(obj)/%.so: $(obj)/%.so.dbg FORCE
>  	$(call if_changed,objcopy)
>  
>  # assembly rules for the .S files
> -$(obj-vdso32): %.o: %.S
> +$(obj-vdso32): %.o: %.S FORCE
>  	$(call if_changed_dep,vdso32as)
>  
>  # actual build commands
>  quiet_cmd_vdso32ld = VDSO32L $@
> -      cmd_vdso32ld = $(CROSS32CC) $(c_flags) -Wl,-T $^ -o $@
> +      cmd_vdso32ld = $(CROSS32CC) $(c_flags) -o $@ -Wl,-T$(filter %.lds,$^) $(filter %.o,$^)
>  quiet_cmd_vdso32as = VDSO32A $@
> -      cmd_vdso32as = $(CROSS32CC) $(a_flags) -c -o $@ $<
> +      cmd_vdso32as = $(CROSS32CC) $(a_flags) -o $@ -c $<

Are the two changes above required, they aren't obviously related.

cheers

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] powerpc: rebuild vdsos correctly
  2016-08-09  4:49 ` Michael Ellerman
@ 2016-08-09  5:53   ` Nicholas Piggin
  2016-08-09 10:52     ` Michael Ellerman
  0 siblings, 1 reply; 5+ messages in thread
From: Nicholas Piggin @ 2016-08-09  5:53 UTC (permalink / raw)
  To: Michael Ellerman; +Cc: linuxppc-dev

On Tue, 09 Aug 2016 14:49:25 +1000
Michael Ellerman <mpe@ellerman.id.au> wrote:

> Nicholas Piggin <npiggin@gmail.com> writes:
> 
> > diff --git a/arch/powerpc/kernel/vdso32/Makefile b/arch/powerpc/kernel/vdso32/Makefile
> > index cbabd14..ae1f245 100644
> > --- a/arch/powerpc/kernel/vdso32/Makefile
> > +++ b/arch/powerpc/kernel/vdso32/Makefile
> > @@ -39,14 +39,14 @@ $(obj)/%.so: $(obj)/%.so.dbg FORCE
> >  	$(call if_changed,objcopy)
> >  
> >  # assembly rules for the .S files
> > -$(obj-vdso32): %.o: %.S
> > +$(obj-vdso32): %.o: %.S FORCE
> >  	$(call if_changed_dep,vdso32as)
> >  
> >  # actual build commands
> >  quiet_cmd_vdso32ld = VDSO32L $@
> > -      cmd_vdso32ld = $(CROSS32CC) $(c_flags) -Wl,-T $^ -o $@
> > +      cmd_vdso32ld = $(CROSS32CC) $(c_flags) -o $@ -Wl,-T$(filter %.lds,$^) $(filter %.o,$^)
> >  quiet_cmd_vdso32as = VDSO32A $@
> > -      cmd_vdso32as = $(CROSS32CC) $(a_flags) -c -o $@ $<
> > +      cmd_vdso32as = $(CROSS32CC) $(a_flags) -o $@ -c $<  
> 
> Are the two changes above required, they aren't obviously related.

The vdso32ld change is required because otherwise "FORCE" gets put on
the end of the command line. vdso32as... I think is not required. Want
a new version without it?

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] powerpc: rebuild vdsos correctly
  2016-08-09  5:53   ` Nicholas Piggin
@ 2016-08-09 10:52     ` Michael Ellerman
  0 siblings, 0 replies; 5+ messages in thread
From: Michael Ellerman @ 2016-08-09 10:52 UTC (permalink / raw)
  To: Nicholas Piggin; +Cc: linuxppc-dev

Nicholas Piggin <npiggin@gmail.com> writes:

> On Tue, 09 Aug 2016 14:49:25 +1000
> Michael Ellerman <mpe@ellerman.id.au> wrote:
>
>> Nicholas Piggin <npiggin@gmail.com> writes:
>> 
>> > diff --git a/arch/powerpc/kernel/vdso32/Makefile b/arch/powerpc/kernel/vdso32/Makefile
>> > index cbabd14..ae1f245 100644
>> > --- a/arch/powerpc/kernel/vdso32/Makefile
>> > +++ b/arch/powerpc/kernel/vdso32/Makefile
>> > @@ -39,14 +39,14 @@ $(obj)/%.so: $(obj)/%.so.dbg FORCE
>> >  	$(call if_changed,objcopy)
>> >  
>> >  # assembly rules for the .S files
>> > -$(obj-vdso32): %.o: %.S
>> > +$(obj-vdso32): %.o: %.S FORCE
>> >  	$(call if_changed_dep,vdso32as)
>> >  
>> >  # actual build commands
>> >  quiet_cmd_vdso32ld = VDSO32L $@
>> > -      cmd_vdso32ld = $(CROSS32CC) $(c_flags) -Wl,-T $^ -o $@
>> > +      cmd_vdso32ld = $(CROSS32CC) $(c_flags) -o $@ -Wl,-T$(filter %.lds,$^) $(filter %.o,$^)
>> >  quiet_cmd_vdso32as = VDSO32A $@
>> > -      cmd_vdso32as = $(CROSS32CC) $(a_flags) -c -o $@ $<
>> > +      cmd_vdso32as = $(CROSS32CC) $(a_flags) -o $@ -c $<  
>> 
>> Are the two changes above required, they aren't obviously related.
>
> The vdso32ld change is required because otherwise "FORCE" gets put on
> the end of the command line. vdso32as... I think is not required. Want
> a new version without it?

Yeah either without it or just explaining why it's needed in the change log.

cheers

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: powerpc: rebuild vdsos correctly
  2016-08-08  9:35 [PATCH] powerpc: rebuild vdsos correctly Nicholas Piggin
  2016-08-09  4:49 ` Michael Ellerman
@ 2016-08-11 11:16 ` Michael Ellerman
  1 sibling, 0 replies; 5+ messages in thread
From: Michael Ellerman @ 2016-08-11 11:16 UTC (permalink / raw)
  To: Nicholas Piggin, linuxppc-dev; +Cc: Nicholas Piggin

On Mon, 2016-08-08 at 09:35:43 UTC, Nicholas Piggin wrote:
> When using if_changed, we need to add FORCE to dependencies, otherwise
> we don't get command line change checking amongst other things. This
> has resulted in vdsos not being rebuilt when switching between big and
> little endian.
> 
> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>

Applied to powerpc fixes, thanks.

https://git.kernel.org/powerpc/c/b9a4a0d02c5b8d9a1397c11d74

cheers

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2016-08-11 11:16 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-08-08  9:35 [PATCH] powerpc: rebuild vdsos correctly Nicholas Piggin
2016-08-09  4:49 ` Michael Ellerman
2016-08-09  5:53   ` Nicholas Piggin
2016-08-09 10:52     ` Michael Ellerman
2016-08-11 11:16 ` Michael Ellerman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).