lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Mon, 5 May 2008 21:32:51 -0700
From:	Andrew Morton <akpm@...ux-foundation.org>
To:	Peter Oberparleiter <peter.oberparleiter@...ibm.com>
Cc:	linux-kernel@...r.kernel.org, ltp-list@...ts.sourceforge.net,
	ltp-coverage@...ts.sourceforge.net, sam@...nborg.org
Subject: Re: [RFC PATCH 3/6] kbuild: convert include and source paths

On Mon, 05 May 2008 17:24:26 +0200 Peter Oberparleiter <peter.oberparleiter@...ibm.com> wrote:

> From: Peter Oberparleiter <peter.oberparleiter@...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@...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.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ