arm: Define with_float to hard when target name ends with hf

Message ID 20220817083512.53915-1-christophe.lyon@arm.com
State New, archived
Headers
Series arm: Define with_float to hard when target name ends with hf |

Commit Message

Christophe Lyon Aug. 17, 2022, 8:35 a.m. UTC
  On arm, the --with-float= configure option is used to define include
files search path (among other things).  However, when targeting
arm-linux-gnueabihf, one would expect to automatically default to the
hard-float ABI, but this is not the case. As a consequence, GCC
bootstrap fails on an arm-linux-gnueabihf target if --with-float=hard
is not used.

This patch checks if the target name ends with 'hf' and defines
with_float to hard if not already defined.  This is achieved in
gcc/config.gcc, just before selecting the default CPU depending on the
$with_float value.

2022-08-17  Christophe Lyon  <christophe.lyon@arm.com>

	gcc/
	* config.gcc (arm): Define with_float to hard if target name ends
	with 'hf'.
---
 gcc/config.gcc | 7 +++++++
 1 file changed, 7 insertions(+)
  

Comments

Richard Earnshaw Aug. 17, 2022, 11:46 a.m. UTC | #1
On 17/08/2022 09:35, Christophe Lyon via Gcc-patches wrote:
> On arm, the --with-float= configure option is used to define include
> files search path (among other things).  However, when targeting
> arm-linux-gnueabihf, one would expect to automatically default to the
> hard-float ABI, but this is not the case. As a consequence, GCC
> bootstrap fails on an arm-linux-gnueabihf target if --with-float=hard
> is not used.
> 
> This patch checks if the target name ends with 'hf' and defines
> with_float to hard if not already defined.  This is achieved in
> gcc/config.gcc, just before selecting the default CPU depending on the
> $with_float value.
> 
> 2022-08-17  Christophe Lyon  <christophe.lyon@arm.com>
> 
> 	gcc/
> 	* config.gcc (arm): Define with_float to hard if target name ends
> 	with 'hf'.
> ---
>   gcc/config.gcc | 7 +++++++
>   1 file changed, 7 insertions(+)
> 
> diff --git a/gcc/config.gcc b/gcc/config.gcc
> index 4e3b15bb5e9..02f58970db0 100644
> --- a/gcc/config.gcc
> +++ b/gcc/config.gcc
> @@ -1314,6 +1314,13 @@ arm*-*-linux-* | arm*-*-uclinuxfdpiceabi)
>   	    tm_file="$tm_file arm/uclinuxfdpiceabi.h"
>   	    ;;
>   	esac
> +	# Define with_float to "hard" if not already defined and
> +	# target name ends with "hf"
> +	case $target:$with_float in
> +	arm*-*-*hf:)
> +	    with_float=hard
> +	    ;;
> +	esac
>   	# Generation of floating-point instructions requires at least ARMv5te.
>   	if [ "$with_float" = "hard" -o "$with_float" = "softfp" ] ; then
>   	    target_cpu_cname="arm10e"

OK.

R.
  

Patch

diff --git a/gcc/config.gcc b/gcc/config.gcc
index 4e3b15bb5e9..02f58970db0 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -1314,6 +1314,13 @@  arm*-*-linux-* | arm*-*-uclinuxfdpiceabi)
 	    tm_file="$tm_file arm/uclinuxfdpiceabi.h"
 	    ;;
 	esac
+	# Define with_float to "hard" if not already defined and
+	# target name ends with "hf"
+	case $target:$with_float in
+	arm*-*-*hf:)
+	    with_float=hard
+	    ;;
+	esac
 	# Generation of floating-point instructions requires at least ARMv5te.
 	if [ "$with_float" = "hard" -o "$with_float" = "softfp" ] ; then
 	    target_cpu_cname="arm10e"