[PATCH-for-5.0 v2] roms/edk2-funcs: Force softfloat ARM toolchain prefix on Debian

Philippe Mathieu-Daudé posted 1 patch 4 years, 4 months ago
Test asan passed
Test checkpatch passed
Test FreeBSD passed
Test docker-mingw@fedora passed
Test docker-clang@ubuntu passed
Test docker-quick@centos7 passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20191205190006.19352-1-philmd@redhat.com
Maintainers: Laszlo Ersek <lersek@redhat.com>, "Philippe Mathieu-Daudé" <philmd@redhat.com>
roms/edk2-funcs.sh | 3 +++
1 file changed, 3 insertions(+)
[PATCH-for-5.0 v2] roms/edk2-funcs: Force softfloat ARM toolchain prefix on Debian
Posted by Philippe Mathieu-Daudé 4 years, 4 months ago
The Debian (based) distributions currently provides 2 ARM
toolchains, documented as [1]:

* The ARM EABI (armel) port targets a range of older 32-bit ARM
  devices, particularly those used in NAS hardware and a variety
  of *plug computers.
* The newer ARM hard-float (armhf) port supports newer, more
  powerful 32-bit devices using version 7 of the ARM architecture
  specification.

For various reasons documented in [2], the EDK2 project recommend
to use the softfloat toolchain (named 'armel' by Debian).

Force the softfloat cross toolchain prefix on Debian distributions.

[1] https://www.debian.org/ports/arm/#status
[2] https://github.com/tianocore/edk2/commit/41203b9a

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 roms/edk2-funcs.sh | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/roms/edk2-funcs.sh b/roms/edk2-funcs.sh
index 3f4485b201..abd6bbe1fd 100644
--- a/roms/edk2-funcs.sh
+++ b/roms/edk2-funcs.sh
@@ -112,6 +112,9 @@ qemu_edk2_get_cross_prefix()
      ( [ "$gcc_arch" == i686 ] && [ "$host_arch" == x86_64 ] ); then
     # no cross-compiler needed
     :
+  elif ( [ -e /etc/debian_version ] && [ "$gcc_arch" == arm ] ); then
+    # force hard-float cross-compiler on Debian
+    printf 'arm-linux-gnueabi-'
   else
     printf '%s-linux-gnu-\n' "$gcc_arch"
   fi
-- 
2.21.0


Re: [PATCH-for-5.0 v2] roms/edk2-funcs: Force softfloat ARM toolchain prefix on Debian
Posted by Laszlo Ersek 4 years, 4 months ago
On 12/05/19 20:00, Philippe Mathieu-Daudé wrote:
> The Debian (based) distributions currently provides 2 ARM
> toolchains, documented as [1]:
> 
> * The ARM EABI (armel) port targets a range of older 32-bit ARM
>   devices, particularly those used in NAS hardware and a variety
>   of *plug computers.
> * The newer ARM hard-float (armhf) port supports newer, more
>   powerful 32-bit devices using version 7 of the ARM architecture
>   specification.
> 
> For various reasons documented in [2], the EDK2 project recommend
> to use the softfloat toolchain (named 'armel' by Debian).
> 
> Force the softfloat cross toolchain prefix on Debian distributions.
> 
> [1] https://www.debian.org/ports/arm/#status
> [2] https://github.com/tianocore/edk2/commit/41203b9a

Ah cool, this answers my earlier question -- "the GCCx toolchain targets
can use either when building for ARM".

Still not sure if this is a "recommendation" for using soft-float, but
if it works, I'm OK with it.

> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
>  roms/edk2-funcs.sh | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/roms/edk2-funcs.sh b/roms/edk2-funcs.sh
> index 3f4485b201..abd6bbe1fd 100644
> --- a/roms/edk2-funcs.sh
> +++ b/roms/edk2-funcs.sh
> @@ -112,6 +112,9 @@ qemu_edk2_get_cross_prefix()
>       ( [ "$gcc_arch" == i686 ] && [ "$host_arch" == x86_64 ] ); then
>      # no cross-compiler needed
>      :
> +  elif ( [ -e /etc/debian_version ] && [ "$gcc_arch" == arm ] ); then
> +    # force hard-float cross-compiler on Debian

The comment has not been updated; it still says hard-float.

With the comment updated:

Reviewed-by: Laszlo Ersek <lersek@redhat.com>

Thanks,
Laszlo

> +    printf 'arm-linux-gnueabi-'
>    else
>      printf '%s-linux-gnu-\n' "$gcc_arch"
>    fi
> 


Re: [PATCH-for-5.0 v2] roms/edk2-funcs: Force softfloat ARM toolchain prefix on Debian
Posted by Philippe Mathieu-Daudé 4 years, 4 months ago
On 12/6/19 1:19 AM, Laszlo Ersek wrote:
> On 12/05/19 20:00, Philippe Mathieu-Daudé wrote:
>> The Debian (based) distributions currently provides 2 ARM
>> toolchains, documented as [1]:
>>
>> * The ARM EABI (armel) port targets a range of older 32-bit ARM
>>    devices, particularly those used in NAS hardware and a variety
>>    of *plug computers.
>> * The newer ARM hard-float (armhf) port supports newer, more
>>    powerful 32-bit devices using version 7 of the ARM architecture
>>    specification.
>>
>> For various reasons documented in [2], the EDK2 project recommend
>> to use the softfloat toolchain (named 'armel' by Debian).
>>
>> Force the softfloat cross toolchain prefix on Debian distributions.
>>
>> [1] https://www.debian.org/ports/arm/#status
>> [2] https://github.com/tianocore/edk2/commit/41203b9a
> 
> Ah cool, this answers my earlier question -- "the GCCx toolchain targets
> can use either when building for ARM".
> 
> Still not sure if this is a "recommendation" for using soft-float, but
> if it works, I'm OK with it.

I'll use "suggests" instead.

>>
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>> ---
>>   roms/edk2-funcs.sh | 3 +++
>>   1 file changed, 3 insertions(+)
>>
>> diff --git a/roms/edk2-funcs.sh b/roms/edk2-funcs.sh
>> index 3f4485b201..abd6bbe1fd 100644
>> --- a/roms/edk2-funcs.sh
>> +++ b/roms/edk2-funcs.sh
>> @@ -112,6 +112,9 @@ qemu_edk2_get_cross_prefix()
>>        ( [ "$gcc_arch" == i686 ] && [ "$host_arch" == x86_64 ] ); then
>>       # no cross-compiler needed
>>       :
>> +  elif ( [ -e /etc/debian_version ] && [ "$gcc_arch" == arm ] ); then
>> +    # force hard-float cross-compiler on Debian
> 
> The comment has not been updated; it still says hard-float.

Oops.

> With the comment updated:
> 
> Reviewed-by: Laszlo Ersek <lersek@redhat.com>

Thanks!

> 
> Thanks,
> Laszlo
> 
>> +    printf 'arm-linux-gnueabi-'
>>     else
>>       printf '%s-linux-gnu-\n' "$gcc_arch"
>>     fi
>>
>