[Buildroot] [PATCH] toochain/wrapper: fix potential bug in foreach loop

Arnout Vandecappelle arnout at mind.be
Thu Oct 22 20:27:54 UTC 2015


On 21-10-15 23:21, Yann E. MORIN wrote:
> In Makefile, the comma ',' is used to separate the arguments passed to
> functions, so we should not be allowed to use straight commas in strings
> we want to expand.
> 
> For the toolchain wrapper, we need to transform a list:
>     -mfoo -mbar -mbuz
> 
> into something acceptable for a C array assignment:
>     "-mfoo", "-mbar", "-mbuz",
> 
> So, we use a $(foreach ...) loop for that. However, we do have a
> straight comma in there.
> 
> It does not cause any issue in practice, since $(foreach) is a make
> builtin function that accepts three and only three parameters.
> 
> However, this is not sane.
> 
> Change the straight comma to the usual $(comma) expansion, like we sould
> do for a call to any other function.
> 
> At the same time, make the code a bit easier to read, by first creating
> the transformed list, and then creating the define.
> 
> Signed-off-by: "Yann E. MORIN" <yann.morin.1998 at free.fr>
> Cc: Arnout Vandecappelle <arnout at mind.be>

Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout at mind.be>
Tested-by: Arnout Vandecappelle (Essensium/Mind) <arnout at mind.be>
 (Build test with BR2_TARGET_OPTIMIZATION containing two elements)


 Regards,
 Arnout


> ---
>  toolchain/toolchain-wrapper.mk | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/toolchain/toolchain-wrapper.mk b/toolchain/toolchain-wrapper.mk
> index eba2b38..af39071 100644
> --- a/toolchain/toolchain-wrapper.mk
> +++ b/toolchain/toolchain-wrapper.mk
> @@ -14,7 +14,9 @@ TOOLCHAIN_WRAPPER_ARGS += -DBR_SYSROOT='"$(STAGING_SUBDIR)"'
>  
>  # We create a list like '"-mfoo", "-mbar", "-mbarfoo"' so that each flag is a
>  # separate argument when used in execv() by the toolchain wrapper.
> -TOOLCHAIN_WRAPPER_ARGS += -DBR_ADDITIONAL_CFLAGS='$(foreach f,$(call qstrip,$(BR2_TARGET_OPTIMIZATION)),"$(f)",)'
> +TOOLCHAIN_WRAPPER_OPTS = \
> +	$(foreach f,$(call qstrip,$(BR2_TARGET_OPTIMIZATION)),"$(f)"$(comma))
> +TOOLCHAIN_WRAPPER_ARGS += -DBR_ADDITIONAL_CFLAGS='$(TOOLCHAIN_WRAPPER_OPTS)'
>  
>  ifeq ($(BR2_CCACHE),y)
>  TOOLCHAIN_WRAPPER_ARGS += -DBR_CCACHE
> 


-- 
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF



More information about the buildroot mailing list