Re: [PATCH v8 00/21] Compile-time stack validation

From: Chris J Arges
Date: Thu Aug 13 2015 - 10:43:08 EST


On Thu, Aug 13, 2015 at 06:22:20AM -0500, Josh Poimboeuf wrote:
> On Wed, Aug 12, 2015 at 04:24:49PM -0500, Chris J Arges wrote:
> > I still get build failures and I've pared it down to x86_64 defconfig plus:
> > CONFIG_MODVERSIONS=y
> > CONFIG_STACK_VALIDATION=y
> >
> > And it seems like some modules may get the .tmp_foo.o treatment while
> > others end up foo.o so something like the following will not work:
> >
> > cmd_stackvalidate = $(if $(patsubst n%,, \
> > $(STACKVALIDATE_$(basetarget).o)$(STACKVALIDATE)y), \
> > $(__stackvalidate) $(nofp) "$(@D)/.tmp_$(@F)";)
>
> Does this fix it?
>
> diff --git a/scripts/Makefile.build b/scripts/Makefile.build
> index ec96c51..0181915 100644
> --- a/scripts/Makefile.build
> +++ b/scripts/Makefile.build
> @@ -263,8 +263,8 @@ endif # CONFIG_STACK_VALIDATION
> define rule_cc_o_c
> $(call echo-cmd,checksrc) $(cmd_checksrc) \
> $(call echo-cmd,cc_o_c) $(cmd_cc_o_c); \
> - $(cmd_stackvalidate) \
> $(cmd_modversions) \
> + $(cmd_stackvalidate) \
> $(call echo-cmd,record_mcount) \
> $(cmd_record_mcount) \
> scripts/basic/fixdep $(depfile) $@ '$(call make-cmd,cc_o_c)' > \
>

Josh,

Yes, this fixes my build. For completeness this is my current diff:

diff --git a/scripts/Makefile.build b/scripts/Makefile.build
index a1270d3..0181915 100644
--- a/scripts/Makefile.build
+++ b/scripts/Makefile.build
@@ -243,7 +243,7 @@ endif

ifdef CONFIG_STACK_VALIDATION

-stackvalidate = $(objtree)/scripts/stackvalidate/stackvalidate
+__stackvalidate = $(objtree)/scripts/stackvalidate/stackvalidate

ifndef CONFIG_FRAME_POINTER
nofp = --no-frame-pointer
@@ -251,17 +251,20 @@ endif

# Set STACKVALIDATE_foo.o=n to skip stack validation for a file.
# Set STACKVALIDATE=n to skip stack validation for a directory.
+stackvalidate = $(if $(patsubst n%,, \
+ $(STACKVALIDATE_$(basetarget).o)$(STACKVALIDATE)y), \
+ $(__stackvalidate))
cmd_stackvalidate = $(if $(patsubst n%,, \
$(STACKVALIDATE_$(basetarget).o)$(STACKVALIDATE)y), \
- $(stackvalidate) $(nofp) "$(@)";)
+ $(__stackvalidate) $(nofp) "$(@)";)

endif # CONFIG_STACK_VALIDATION

define rule_cc_o_c
$(call echo-cmd,checksrc) $(cmd_checksrc) \
$(call echo-cmd,cc_o_c) $(cmd_cc_o_c); \
- $(cmd_stackvalidate) \
$(cmd_modversions) \
+ $(cmd_stackvalidate) \
$(call echo-cmd,record_mcount) \
$(cmd_record_mcount) \
scripts/basic/fixdep $(depfile) $@ '$(call make-cmd,cc_o_c)' > \
diff --git a/scripts/mod/Makefile b/scripts/mod/Makefile
index c11212f..374c413 100644
--- a/scripts/mod/Makefile
+++ b/scripts/mod/Makefile
@@ -1,3 +1,5 @@
+STACKVALIDATE := n
+
hostprogs-y := modpost mk_elfconfig
always := $(hostprogs-y) empty.o

Thanks,
--chris

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