[Buildroot] [PATCH 3/4] toolchain: allow for stupid toolchains

Romain Naour romain.naour at openwide.fr
Mon Feb 2 16:18:25 UTC 2015


Hi Ezequiel,

Le 22/01/2015 19:33, Ezequiel Garcia a écrit :
> From: Guido Martínez <guido at vanguardiasur.com.ar>
> 
> check_arm_abi builds a test C file to check that the toolchain is
> working correctly, with the output redirected to /dev/null.
> 
> However, some toolchains (OSELAS 2013.12.2, for instance) foolishly
> append ".gdb" to the output filename for an intermediate file, causing
> an attempt to write to /dev/null.gdb, which obviously fails.
> 
> Fix this by adding an option to skip this check, so it can be selected
> in the OSELAS toolchain.
> 
> Signed-off-by: Guido Martínez <guido at vanguardiasur.com.ar>
> ---
>  toolchain/helpers.mk                   | 6 +++++-
>  toolchain/toolchain-external/Config.in | 4 ++++
>  2 files changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/toolchain/helpers.mk b/toolchain/helpers.mk
> index 3121da4..d008a4f 100644
> --- a/toolchain/helpers.mk
> +++ b/toolchain/helpers.mk
> @@ -297,13 +297,17 @@ check_arm_abi = \
>  	if ! echo $${EXT_TOOLCHAIN_TARGET} | grep -qE 'eabi(hf)?$$' ; then \
>  		echo "External toolchain uses the unsuported OABI" ; \
>  		exit 1 ; \
> -	fi ; \
> +	fi
> +
> +ifneq ($(BR2_ARM_TOOLCHAIN_SKIP_CHECK),y)
> +check_arm_abi += ; \
>  	if ! echo 'int main(void) {}' | $${__CROSS_CC} -x c -o /dev/null - ; then \
>  		abistr_$(BR2_ARM_EABI)='EABI'; \
>  		abistr_$(BR2_ARM_EABIHF)='EABIhf'; \
>  		echo "Incorrect ABI setting: $${abistr_y} selected, but toolchain is incompatible"; \
>  		exit 1 ; \
>  	fi
> +endif
>  

I looked at this issue and tried to avoid the use of /dev/null.gdb ...
In the Cortex-M toolchain, it seems to have a wrapper around the linker like
this one [1] which append the .gdb suffix.

However, there is no error if "-Wl,-r" (Generate relocatable output) is added in
the gcc's command line but it's not really nice solution because this option
will be there for other toolchains.

Yann proposed to use $BUILD_DIR/br-foo instead of /dev/null and add a comment
why we do that.

What do you think ?

I'm Cc Yann.

[1] https://github.com/m-labs/elf2flt-lm32/blob/master/ld-elf2flt.in

Best regards,
Romain Naour


More information about the buildroot mailing list