[Buildroot] [PATCH 2/4] toolchain: check the SSP option is known

Arnout Vandecappelle arnout at mind.be
Tue Mar 12 08:53:41 UTC 2019



On 12/03/2019 07:18, yann.morin at orange.com wrote:
> Arnout, All,
> 
> On 2019-03-12 01:25 +0100, Arnout Vandecappelle spake thusly:
>> On 11/03/2019 07:48, yann.morin at orange.com wrote:
>>> From: "Yann E. MORIN" <yann.morin at orange.com>
>>> Extend the macro that currently checks for SSP in the toolchain, with
>>> a new test that the actual SSP option is recognised and accepted.
> [--SNIP--]
>>  I notice that in vlc.mk, we have
>>
>> ax_cv_check_cflags___fstack_protector_strong=$(if $(BR2_TOOLCHAIN_HAS_SSP),yes,no)
> 
> It should probably be changed to:   $(if $(BR2_SSP_STRONG),yes,no)
> 
> I'll check what vlc really wants it for (e.g. strong, all, regular?),
> fix and send a patch.
> 
>> without an actual check that stack-protector=strong really is available... Maybe
>> we need BR2_TOOLCHAIN_HAS_SSP_STRONG after all?
> 
> I really pondered doing it that way, but I decided against, because:
> 
>   - our internal toolchain infra only supports gcc >= 4.9, so it has SSP
>     strong
> 
>   - of the external pre-built toolchains, only the codesourcery-arm one
>     has a gcc-4.8 which lacks SSP strong (and I use that in the cover
>     letter to explain how to test my changes), all the others have a
>     gcc >= 4.9
> 
> So, we'd have to add this _HAS_SSP_STRONG for a single case.

 Hm, somehow I missed that in your commit message :-P

 Regards,
 Arnout

> 
> Now, the vlc case, fixed as I suggest above, would be covered by this
> configure-test.
> 
> Regards,
> Yann E. MORIN.
> 
>>> Signed-off-by: "Yann E. MORIN" <yann.morin at orange.com>
>>> Cc: Matt Weber <matthew.weber at rockwellcollins.com>
>>> Cc: Thomas Petazzoni <thomas.petazzoni at bootlin.com>
>>> Cc: Thomas De Schampheleire <thomas.de_schampheleire at nokia.com>
>>> ---
>>>  toolchain/helpers.mk                                   | 8 ++++++++
>>>  toolchain/toolchain-external/pkg-toolchain-external.mk | 2 +-
>>>  2 files changed, 9 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/toolchain/helpers.mk b/toolchain/helpers.mk
>>> index e5520c00c3..ba097e83cf 100644
>>> --- a/toolchain/helpers.mk
>>> +++ b/toolchain/helpers.mk
>>> @@ -415,6 +415,7 @@ check_unusable_toolchain = \
>>>  # Check if the toolchain has SSP (stack smashing protector) support
>>>  #
>>>  # $1: cross-gcc path
>>> +# $2: gcc ssp option
>>>  #
>>>  check_toolchain_ssp = \
>>>  	__CROSS_CC=$(strip $1) ; \
>>> @@ -427,6 +428,13 @@ check_toolchain_ssp = \
>>>  		echo "SSP support not available in this toolchain, please disable BR2_TOOLCHAIN_EXTERNAL_HAS_SSP" ; \
>>>  		exit 1 ; \
>>>  	fi ; \
>>> +	__SSP_OPTION=$(2); \
>>> +	if [ -n "$${__SSP_OPTION}" ] ; then \
>>> +		if ! echo 'void main(){}' | $${__CROSS_CC} -Werror $${__SSP_OPTION} -x c - -o $(BUILD_DIR)/.br-toolchain-test.tmp >/dev/null 2>&1 ; then \
>>> +			echo "SSP option $${__SSP_OPTION} not available in this toolchain, please select another SSP level" ; \
>>> +			exit 1 ; \
>>> +		fi; \
>>> +	fi; \
>>>  	rm -f $(BUILD_DIR)/.br-toolchain-test.tmp*
>>>  
>>>  #
>>> diff --git a/toolchain/toolchain-external/pkg-toolchain-external.mk b/toolchain/toolchain-external/pkg-toolchain-external.mk
>>> index db3570d96f..00cbd7b17a 100644
>>> --- a/toolchain/toolchain-external/pkg-toolchain-external.mk
>>> +++ b/toolchain/toolchain-external/pkg-toolchain-external.mk
>>> @@ -549,7 +549,7 @@ define $(2)_CONFIGURE_CMDS
>>>  	else \
>>>  		$$(call check_glibc,$$$${SYSROOT_DIR}) ; \
>>>  	fi
>>> -	$$(Q)$$(call check_toolchain_ssp,$$(TOOLCHAIN_EXTERNAL_CC))
>>> +	$$(Q)$$(call check_toolchain_ssp,$$(TOOLCHAIN_EXTERNAL_CC),$(BR2_SSP_OPTION))
>>>  endef
>>>  
>>>  $(2)_TOOLCHAIN_WRAPPER_ARGS += $$(TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS)
>>>
> 



More information about the buildroot mailing list