On Mon, 05 May 2008 17:24:26 +0200 Peter Oberparleiter <[EMAIL PROTECTED]> wrote:
> From: Peter Oberparleiter <[EMAIL PROTECTED]> > > 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 <[EMAIL PROTECTED]> > --- > 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. ------------------------------------------------------------------------- This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Don't miss this year's exciting event. There's still time to save $100. Use priority code J8TL2D2. http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone _______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
