All of lore.kernel.org
 help / color / mirror / Atom feed
From: Catalin Marinas <catalin.marinas@arm.com>
To: Kevin Brodsky <kevin.brodsky@arm.com>
Cc: linux-arm-kernel@lists.infradead.org,
	Will Deacon <will.deacon@arm.com>, Michal Marek <mmarek@suse.com>,
	linux-kbuild@vger.kernel.org
Subject: Re: [PATCH RESEND] arm64: fix vdso-offsets.h dependency
Date: Wed, 6 Jul 2016 18:57:39 +0100	[thread overview]
Message-ID: <20160706175739.GB22615@e104818-lin.cambridge.arm.com> (raw)
In-Reply-To: <1463071155-7435-1-git-send-email-kevin.brodsky@arm.com>

On Thu, May 12, 2016 at 05:39:15PM +0100, Kevin Brodsky wrote:
> +# We need to generate vdso-offsets.h before compiling certain files in kernel/.
> +# In order to do that, we should use the archprepare target, but we can't since
> +# asm-offsets.h is included in some files used to generate vdso-offsets.h, and
> +# asm-offsets.h is built in prepare0, for which archprepare is a dependency.
> +# Therefore we need to generate the header after prepare0 has been made, hence
> +# this hack.
> +prepare: vdso_prepare
> +vdso_prepare: prepare0
> +	$(Q)$(MAKE) $(build)=arch/arm64/kernel/vdso include/generated/vdso-offsets.h

This indeed looks dodgy. I'm not sure about the makefile rules but would
the above override the "prepare" target in the top Makefile?

I think a dependency problem we have is that arch/arm64/kernel/signal.o
depends on include/generated/vdso-offsets.h. However, we don't have any
target for the latter, only for
$(objtree)arch/arm64/kernel/vdso/vdso-offsets.h which no-one is
including. Because of this, we have a fake dependency in
arch/arm64/kernel/Makefile.

It's been a long time since I wrote makefiles but I think a simpler
approach may be to just get the include/generated/vdso-offsets.h target
and remove the arch/arm64/kernel/vdso/vdso-offsets.h one entirely like
below. Otherwise, we give up on storing the generated file in
include/generated/ and move arch/arm64/include/asm/vdso.h to
arch/arm64/kernel/vdso/.

-----------8<-------------------------
diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile
index 7700c0c23962..9bdacbf59091 100644
--- a/arch/arm64/kernel/Makefile
+++ b/arch/arm64/kernel/Makefile
@@ -55,5 +55,4 @@ head-y					:= head.o
 extra-y					+= $(head-y) vmlinux.lds
 
 # vDSO - this must be built first to generate the symbol offsets
-$(call objectify,$(arm64-obj-y)): $(obj)/vdso/vdso-offsets.h
-$(obj)/vdso/vdso-offsets.h: $(obj)/vdso
+$(objtree)/include/generated/vdso-offsets.h: $(obj)/vdso
diff --git a/arch/arm64/kernel/vdso/Makefile b/arch/arm64/kernel/vdso/Makefile
index b467fd0a384b..44c20e3c9f43 100644
--- a/arch/arm64/kernel/vdso/Makefile
+++ b/arch/arm64/kernel/vdso/Makefile
@@ -23,7 +23,7 @@ GCOV_PROFILE := n
 ccflags-y += -Wl,-shared
 
 obj-y += vdso.o
-extra-y += vdso.lds vdso-offsets.h
+extra-y += vdso.lds ../../../../include/generated/vdso-offsets.h
 CPPFLAGS_vdso.lds += -P -C -U$(ARCH)
 
 # Force dependency (incbin is bad)
@@ -42,11 +42,10 @@ $(obj)/%.so: $(obj)/%.so.dbg FORCE
 gen-vdsosym := $(srctree)/$(src)/gen_vdso_offsets.sh
 quiet_cmd_vdsosym = VDSOSYM $@
 define cmd_vdsosym
-	$(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@ && \
-	cp $@ include/generated/
+	$(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@
 endef
 
-$(obj)/vdso-offsets.h: $(obj)/vdso.so.dbg FORCE
+$(obj)/../../../../include/generated/vdso-offsets.h: $(obj)/vdso.so.dbg FORCE
 	$(call if_changed,vdsosym)
 
 # Assembly rules for the .S files

WARNING: multiple messages have this Message-ID (diff)
From: catalin.marinas@arm.com (Catalin Marinas)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH RESEND] arm64: fix vdso-offsets.h dependency
Date: Wed, 6 Jul 2016 18:57:39 +0100	[thread overview]
Message-ID: <20160706175739.GB22615@e104818-lin.cambridge.arm.com> (raw)
In-Reply-To: <1463071155-7435-1-git-send-email-kevin.brodsky@arm.com>

On Thu, May 12, 2016 at 05:39:15PM +0100, Kevin Brodsky wrote:
> +# We need to generate vdso-offsets.h before compiling certain files in kernel/.
> +# In order to do that, we should use the archprepare target, but we can't since
> +# asm-offsets.h is included in some files used to generate vdso-offsets.h, and
> +# asm-offsets.h is built in prepare0, for which archprepare is a dependency.
> +# Therefore we need to generate the header after prepare0 has been made, hence
> +# this hack.
> +prepare: vdso_prepare
> +vdso_prepare: prepare0
> +	$(Q)$(MAKE) $(build)=arch/arm64/kernel/vdso include/generated/vdso-offsets.h

This indeed looks dodgy. I'm not sure about the makefile rules but would
the above override the "prepare" target in the top Makefile?

I think a dependency problem we have is that arch/arm64/kernel/signal.o
depends on include/generated/vdso-offsets.h. However, we don't have any
target for the latter, only for
$(objtree)arch/arm64/kernel/vdso/vdso-offsets.h which no-one is
including. Because of this, we have a fake dependency in
arch/arm64/kernel/Makefile.

It's been a long time since I wrote makefiles but I think a simpler
approach may be to just get the include/generated/vdso-offsets.h target
and remove the arch/arm64/kernel/vdso/vdso-offsets.h one entirely like
below. Otherwise, we give up on storing the generated file in
include/generated/ and move arch/arm64/include/asm/vdso.h to
arch/arm64/kernel/vdso/.

-----------8<-------------------------
diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile
index 7700c0c23962..9bdacbf59091 100644
--- a/arch/arm64/kernel/Makefile
+++ b/arch/arm64/kernel/Makefile
@@ -55,5 +55,4 @@ head-y					:= head.o
 extra-y					+= $(head-y) vmlinux.lds
 
 # vDSO - this must be built first to generate the symbol offsets
-$(call objectify,$(arm64-obj-y)): $(obj)/vdso/vdso-offsets.h
-$(obj)/vdso/vdso-offsets.h: $(obj)/vdso
+$(objtree)/include/generated/vdso-offsets.h: $(obj)/vdso
diff --git a/arch/arm64/kernel/vdso/Makefile b/arch/arm64/kernel/vdso/Makefile
index b467fd0a384b..44c20e3c9f43 100644
--- a/arch/arm64/kernel/vdso/Makefile
+++ b/arch/arm64/kernel/vdso/Makefile
@@ -23,7 +23,7 @@ GCOV_PROFILE := n
 ccflags-y += -Wl,-shared
 
 obj-y += vdso.o
-extra-y += vdso.lds vdso-offsets.h
+extra-y += vdso.lds ../../../../include/generated/vdso-offsets.h
 CPPFLAGS_vdso.lds += -P -C -U$(ARCH)
 
 # Force dependency (incbin is bad)
@@ -42,11 +42,10 @@ $(obj)/%.so: $(obj)/%.so.dbg FORCE
 gen-vdsosym := $(srctree)/$(src)/gen_vdso_offsets.sh
 quiet_cmd_vdsosym = VDSOSYM $@
 define cmd_vdsosym
-	$(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@ && \
-	cp $@ include/generated/
+	$(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@
 endef
 
-$(obj)/vdso-offsets.h: $(obj)/vdso.so.dbg FORCE
+$(obj)/../../../../include/generated/vdso-offsets.h: $(obj)/vdso.so.dbg FORCE
 	$(call if_changed,vdsosym)
 
 # Assembly rules for the .S files

  reply	other threads:[~2016-07-06 17:57 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-12 16:39 [PATCH RESEND] arm64: fix vdso-offsets.h dependency Kevin Brodsky
2016-05-12 16:39 ` Kevin Brodsky
2016-07-06 17:57 ` Catalin Marinas [this message]
2016-07-06 17:57   ` Catalin Marinas
2016-07-07 10:26   ` Catalin Marinas
2016-07-07 10:26     ` Catalin Marinas
2016-07-07 11:23     ` Catalin Marinas
2016-07-07 11:23       ` Catalin Marinas
2016-07-07 18:08       ` Catalin Marinas
2016-07-07 18:08         ` Catalin Marinas
2016-07-08 11:27 ` Catalin Marinas
2016-07-08 11:27   ` Catalin Marinas
2016-07-11 15:29   ` Kevin Brodsky
2016-07-11 15:29     ` Kevin Brodsky
2016-07-11 16:19     ` Catalin Marinas
2016-07-11 16:19       ` Catalin Marinas
2016-07-12  9:17       ` Kevin Brodsky
2016-07-12  9:17         ` Kevin Brodsky

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160706175739.GB22615@e104818-lin.cambridge.arm.com \
    --to=catalin.marinas@arm.com \
    --cc=kevin.brodsky@arm.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=mmarek@suse.com \
    --cc=will.deacon@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.