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]
Message-ID: <alpine.LFD.2.20.1612011238480.1715@knanqh.ubzr>
Date:   Thu, 1 Dec 2016 12:42:36 -0500 (EST)
From:   Nicolas Pitre <nicolas.pitre@...aro.org>
To:     Paul Bolle <pebolle@...cali.nl>
cc:     Jarod Wilson <jarod@...hat.com>, Tony Luck <tony.luck@...el.com>,
        Linus Torvalds <torvalds@...ux-foundation.org>,
        Prarit Bhargava <prarit@...hat.com>,
        linux-kernel@...r.kernel.org
Subject: Re: Odd build breakage in 4.9-rc7

On Thu, 1 Dec 2016, Paul Bolle wrote:

> On Thu, 2016-12-01 at 10:01 +0100, Paul Bolle wrote:
> > Perhaps this is all documented somewhere. But even then it would be nice if
> > the build would fail right at the start. Ie, the build probably should fail if
> > one does "make bzImage" while having a .config with
> >     CONFIG_TRIM_UNUSED_KSYMS=y
> >     CONFIG_MODULES=y
> >     # CONFIG_MODVERSIONS is not set
> > 
> > Because it seems in that case the subsequent "make modules" will then end in
> > this flood of ERRORs. 
> 
> Or, alternatively, we could use something like the following hack to keep a
> two step build (ie, "make bzImage" and "make modules") do the right thing even
> if CONFING_MODVERSIONS is not set.
> 
> The hack was cobbled together with a fair amount of cargo-cult coding so
> perhaps a hunk or two aren't really needed. We'll see.

OK I understand what the problem is.  However most of those hunks below 
are definitely wrong. ;-)

I'm trying to determine the best way to fix it. Stay tuned.


> Paul Bolle
> 
> diff --git a/Makefile b/Makefile
> index 694111b43cf8..5820f803ca64 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -321,7 +321,7 @@ KBUILD_BUILTIN := 1
>  # make sure the checksums are up to date before we record them.
>  
>  ifeq ($(MAKECMDGOALS),modules)
> -  KBUILD_BUILTIN := $(if $(CONFIG_MODVERSIONS),1)
> +  KBUILD_BUILTIN := $(if $(or $(CONFIG_MODVERSIONS),$(CONFIG_TRIM_UNUSED_KSYMS)),1)
>  endif
>  
>  # If we have "make <whatever> modules", compile modules
> diff --git a/scripts/Makefile b/scripts/Makefile
> index 1d80897a9644..f23e5c4f2496 100644
> --- a/scripts/Makefile
> +++ b/scripts/Makefile
> @@ -40,7 +40,9 @@ build_docproc: $(obj)/docproc
>  build_check-lc_ctype: $(obj)/check-lc_ctype
>  	@:
>  
> -subdir-$(CONFIG_MODVERSIONS) += genksyms
> +ifeq ($(or $(CONFIG_MODVERSIONS),$(CONFIG_TRIM_UNUSED_KSYMS)),y)
> +subdir-y                     += genksyms
> +endif
>  subdir-y                     += mod
>  subdir-$(CONFIG_SECURITY_SELINUX) += selinux
>  subdir-$(CONFIG_DTC)         += dtc
> diff --git a/scripts/Makefile.build b/scripts/Makefile.build
> index 7675d11ee65e..50ce2cf86b7c 100644
> --- a/scripts/Makefile.build
> +++ b/scripts/Makefile.build
> @@ -182,7 +182,7 @@ $(obj)/%.symtypes : $(src)/%.c FORCE
>  
>  quiet_cmd_cc_o_c = CC $(quiet_modtag)  $@
>  
> -ifndef CONFIG_MODVERSIONS
> +ifneq ($(if $(CONFIG_MODVERSIONS),1,$(if $(CONFIG_TRIM_UNUSED_KSYMS),1)),1)
>  cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $<
>  
>  else
> @@ -358,7 +358,7 @@ $(obj)/%.s: $(src)/%.S FORCE
>  
>  quiet_cmd_as_o_S = AS $(quiet_modtag)  $@
>  
> -ifndef CONFIG_MODVERSIONS
> +ifneq ($(if $(CONFIG_MODVERSIONS),1,$(if $(CONFIG_TRIM_UNUSED_KSYMS),1)),1)
>  cmd_as_o_S = $(CC) $(a_flags) -c -o $@ $<
>  
>  else
> diff --git a/scripts/adjust_autoksyms.sh b/scripts/adjust_autoksyms.sh
> index 8dc1918b6783..7525da1cc2f7 100755
> --- a/scripts/adjust_autoksyms.sh
> +++ b/scripts/adjust_autoksyms.sh
> @@ -68,7 +68,7 @@ while read sym; do
>  done >> "$new_ksyms_file"
>  
>  # Special case for modversions (see modpost.c)
> -if [ -n "$CONFIG_MODVERSIONS" ]; then
> +if [ -n "$CONFIG_MODVERSIONS" -o -n "$CONFIG_TRIM_UNUSED_KSYMS" ]; then
>  	echo "#define __KSYM_module_layout 1" >> "$new_ksyms_file"
>  fi
>  
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ