Re: [PATCH 3/7] cgcc: simpler handling of hard-float ARM

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 17/02/2019 15:31, Luc Van Oostenryck wrote:
> There is an ABI for ARM with hard floats and one for soft floats
> (as well as one for a sort of mix between hard & soft).
> For the hard fp, the preprocessor symbol '__ARM_PCS_VFP' needs to
> be defined. This is added as an additional check in the code
> returning the 'specs' for ARM.
> 
> To facilitate some incoming changes and code reuses here, create

s/incoming/upcoming/; s/reuses/reuse/

> a pseudo-arch 'arm+hf' for define the symbol.

s/for define the symbol/to represent the hard-float abi/ ?

ATB,
Ramsay Jones

> 
> Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@xxxxxxxxx>
> ---
>  cgcc | 15 +++++++--------
>  1 file changed, 7 insertions(+), 8 deletions(-)
> 
> diff --git a/cgcc b/cgcc
> index 7ae6e5c6d..5336ae3ce 100755
> --- a/cgcc
> +++ b/cgcc
> @@ -326,15 +326,10 @@ sub add_specs {
>  		&define_size_t ("long unsigned int") .
>  		' -D__SIZEOF_POINTER__=' . ($m64 ? '8' : '4'));
>      } elsif ($spec eq 'arm') {
> -	chomp (my $gccmachine = `$ccom -dumpmachine`);
> -	my $cppsymbols = ' -m32';
> -
> -	if ($gccmachine eq 'arm-linux-gnueabihf') {
> -	    $cppsymbols .= ' -mfloat-abi=hard';
> -	}
> -
> -	return ($cppsymbols .
> +	return (' -m32' .
>  		&float_types (1, 1, 36, [24,8], [53,11], [53, 11]));
> +    } elsif ($spec eq 'arm+hf') {
> +	return &add_specs ('arm') . ' -mfloat-abi=hard';
>      } elsif ($spec eq 'aarch64') {
>  	return (' -m64' .
>  		&float_types (1, 1, 36, [24,8], [53,11], [113,15]));
> @@ -362,6 +357,10 @@ sub add_specs {
>  	} elsif ($arch =~ /^(sparc64)$/i) {
>  	    return &add_specs ('sparc64');
>  	} elsif ($arch =~ /^arm(?:v[78]l)?$/i) {
> +	    chomp (my $gccmachine = `$ccom -dumpmachine`);
> +	    if ($gccmachine eq 'arm-linux-gnueabihf') {
> +		return &add_specs ('arm+hf');
> +	    }
>  	    return &add_specs ('arm');
>  	} elsif ($arch =~ /^(aarch64)$/i) {
>  	    return &add_specs ('aarch64');
> 



[Index of Archives]     [Newbies FAQ]     [LKML]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Trinity Fuzzer Tool]

  Powered by Linux