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
next prev parent 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: linkBe 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.