From: Andrew Morton <akpm@linux-foundation.org>
To: Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
Cc: linux-kernel@vger.kernel.org, ltp-list@lists.sourceforge.net,
ltp-coverage@lists.sourceforge.net, sam@ravnborg.org
Subject: Re: [RFC PATCH 3/6] kbuild: convert include and source paths
Date: Mon, 5 May 2008 21:32:51 -0700 [thread overview]
Message-ID: <20080505213251.d2025dc8.akpm@linux-foundation.org> (raw)
In-Reply-To: <481F26AA.4050701@de.ibm.com>
On Mon, 05 May 2008 17:24:26 +0200 Peter Oberparleiter <peter.oberparleiter@de.ibm.com> wrote:
> From: Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
>
> Modify kbuild to convert relative include and source paths to absolute
> form. Also change the module versioning mechanism to alter object file
> names only after compiling.
>
> Required by the gcov profiling infrastructure: source paths are
> referenced by the compiled object files. Using relative paths or
> object file names which are different from the source name would
> prevent the gcov tool from finding the corresponding source files.
>
> Signed-off-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
> ---
> Makefile | 6 +++---
> scripts/Kbuild.include | 2 ++
> scripts/Makefile.build | 7 +++++--
> scripts/Makefile.lib | 2 +-
> 4 files changed, 11 insertions(+), 6 deletions(-)
>
> Index: linux-2.6.26-rc1/scripts/Makefile.build
> ===================================================================
> --- linux-2.6.26-rc1.orig/scripts/Makefile.build
> +++ linux-2.6.26-rc1/scripts/Makefile.build
> @@ -167,7 +167,8 @@ $(obj)/%.symtypes : $(src)/%.c FORCE
> quiet_cmd_cc_o_c = CC $(quiet_modtag) $@
>
> ifndef CONFIG_MODVERSIONS
> -cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $<
> +cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ \
> + $(if $(filter-out /%,$<),$(objtree)/$<,$<)
>
> else
> # When module versioning is enabled the following steps are executed:
> @@ -182,7 +183,9 @@ else
> # replace the unresolved symbols __crc_exported_symbol with
> # the actual value of the checksum generated by genksyms
>
> -cmd_cc_o_c = $(CC) $(c_flags) -c -o $(@D)/.tmp_$(@F) $<
> +cmd_cc_o_c = $(CC) $(c_flags) -c -o $(@D)/$(@F) \
> + $(if $(filter-out /%,$<),$(objtree)/$<,$<) ; \
> + mv -f $(@D)/$(@F) $(@D)/.tmp_$(@F)
> cmd_modversions = \
> if $(OBJDUMP) -h $(@D)/.tmp_$(@F) | grep -q __ksymtab; then \
> $(CPP) -D__GENKSYMS__ $(c_flags) $< \
> Index: linux-2.6.26-rc1/scripts/Makefile.lib
> ===================================================================
> --- linux-2.6.26-rc1.orig/scripts/Makefile.lib
> +++ linux-2.6.26-rc1/scripts/Makefile.lib
> @@ -113,7 +113,7 @@ else
> # $(call addtree,-I$(obj)) locates .h files in srctree, from generated .c files
> # and locates generated .h files
> # FIXME: Replace both with specific CFLAGS* statements in the makefiles
> -__c_flags = $(call addtree,-I$(obj)) $(call flags,_c_flags)
> +__c_flags = $(call addtree,-I$(obj)) $(call addtree2,-I$(obj)) $(call flags,_c_flags)
> __a_flags = $(call flags,_a_flags)
> __cpp_flags = $(call flags,_cpp_flags)
> endif
> Index: linux-2.6.26-rc1/scripts/Kbuild.include
> ===================================================================
> --- linux-2.6.26-rc1.orig/scripts/Kbuild.include
> +++ linux-2.6.26-rc1/scripts/Kbuild.include
> @@ -145,6 +145,8 @@ build := -f $(if $(KBUILD_SRC),$(srctree
>
> # Prefix -I with $(srctree) if it is not an absolute path.
> addtree = $(if $(filter-out -I/%,$(1)),$(patsubst -I%,-I$(srctree)/%,$(1)),$(1))
> +# Prefix -I with $(objtree) if it is not an absolute path.
> +addtree2 = $(if $(filter-out -I/%,$(1)),$(patsubst -I%,-I$(objtree)/%,$(1)),$(1))
>
> # Find all -I options and call addtree
> flags = $(foreach o,$($(1)),$(if $(filter -I%,$(o)),$(call addtree,$(o)),$(o)))
> Index: linux-2.6.26-rc1/Makefile
> ===================================================================
> --- linux-2.6.26-rc1.orig/Makefile
> +++ linux-2.6.26-rc1/Makefile
> @@ -324,9 +324,9 @@ AFLAGS_KERNEL =
>
> # Use LINUXINCLUDE when you must reference the include/ directory.
> # Needed to be compatible with the O= option
> -LINUXINCLUDE := -Iinclude \
> - $(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) \
> - -include include/linux/autoconf.h
> +LINUXINCLUDE := -I$(objtree)/include -I$(srctree) -I$(objtree) \
> + $(if $(KBUILD_SRC),-I$(objtree)/include2 \
> + -I$(srctree)/include) -include include/linux/autoconf.h
>
> KBUILD_CPPFLAGS := -D__KERNEL__ $(LINUXINCLUDE)
>
I hope Sam understands that line-noise ;)
It doesn't appear to affect __FILE__ in any way (which is good). But I'm
unsure what it _does_ affect. The changelog implies that it will convert
"liunx/foo.h" into /usr/src/linux/include/foo.h, only it doesn't.
ho hum.
next prev parent reply other threads:[~2008-05-06 4:34 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-05 15:24 [RFC PATCH 3/6] kbuild: convert include and source paths Peter Oberparleiter
2008-05-05 19:58 ` Sam Ravnborg
2008-05-06 17:03 ` Peter Oberparleiter
2008-05-06 4:32 ` Andrew Morton [this message]
2008-05-06 17:28 ` Peter Oberparleiter
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=20080505213251.d2025dc8.akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ltp-coverage@lists.sourceforge.net \
--cc=ltp-list@lists.sourceforge.net \
--cc=peter.oberparleiter@de.ibm.com \
--cc=sam@ravnborg.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox