[Buildroot] [PATCHv2 2/4] toolchain: check ARM EABI vs. EABIhf for external toolchains
Yann E. MORIN
yann.morin.1998 at free.fr
Wed Jul 17 17:04:26 UTC 2013
Thomas, All,
On 2013-07-17 10:13 +0200, Thomas Petazzoni spake thusly:
> Following the introduction of the support of EABIhf as a second ARM
> ABI, it is important to check whether the external toolchain provided
> by the user actually uses the ABI that has been selected in the
> Buildroot configuration. This commit introduces such a check by
> looking at the 'Tag_ABI_VFP_args' tag of the architecture-specific
> section of the ELF headers. This assumes that ELF is the binary format
> used on ARM, which may not be the case on ARM noMMU systems (they use
> the FLAT binary format), but Buildroot doesn't have support for such
> systems at the moment.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
> ---
> toolchain/helpers.mk | 15 +++++++++++++++
> toolchain/toolchain-external/ext-tool.mk | 5 ++++-
> 2 files changed, 19 insertions(+), 1 deletion(-)
>
> diff --git a/toolchain/helpers.mk b/toolchain/helpers.mk
> index 94fe015..a8dab90 100644
> --- a/toolchain/helpers.mk
> +++ b/toolchain/helpers.mk
> @@ -279,10 +279,25 @@ check_uclibc = \
> #
> check_arm_abi = \
> __CROSS_CC=$(strip $1) ; \
> + __CROSS_READELF=$(strip $2) ; \
> EXT_TOOLCHAIN_TARGET=`LANG=C $${__CROSS_CC} -v 2>&1 | grep ^Target | cut -f2 -d ' '` ; \
> if ! echo $${EXT_TOOLCHAIN_TARGET} | grep -qE 'eabi(hf)?$$' ; then \
> echo "External toolchain uses the unsuported OABI" ; \
> exit 1 ; \
> + fi ; \
> + EXT_TOOLCHAIN_CRT1=`LANG=C $${__CROSS_CC} -print-file-name=crt1.o` ; \
> + if $${__CROSS_READELF} -A $${EXT_TOOLCHAIN_CRT1} | grep -q "Tag_ABI_VFP_args:" ; then \
> + EXT_TOOLCHAIN_ABI="eabihf" ; \
> + else \
> + EXT_TOOLCHAIN_ABI="eabi" ; \
> + fi ; \
> + if [ "$(BR2_ARM_EABI)" = "y" -a $${EXT_TOOLCHAIN_ABI} = "eabihf" ] ; then \
^^^^^^^^^^^^^^^^^^^^^
Obviously, EXT_TOOLCHAIN_ABI can't be empty, but for consistecy, it
would be better to quote it, too.
> + echo "Incorrect ABI setting: EABI selected, but toolchain uses EABIhf" ; \
> + exit 1 ; \
> + fi ; \
> + if [ "$(BR2_ARM_EABIHF)" = "y" -a $${EXT_TOOLCHAIN_ABI} = "eabi" ] ; then \
^^^^^^^^^^^^^^^^^^^^^
Ditto.
Otherwise:
Acked-by: "Yann E. MORIN" <yann.morin.1998 at free.fr>
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
More information about the buildroot
mailing list