This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Enable building of libatomic on AArch64
- From: Michael Hudson-Doyle <michael dot hudson at canonical dot com>
- To: Marcus Shawcroft <marcus dot shawcroft at gmail dot com>
- Cc: "gcc-patches\ at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>, Richard Earnshaw <richard dot earnshaw at arm dot com>, Marcus Shawcroft <marcus dot shawcroft at arm dot com>
- Date: Thu, 17 Oct 2013 20:02:59 +1300
- Subject: Re: Enable building of libatomic on AArch64
- Authentication-results: sourceware.org; auth=none
- References: <87vc1ej7qt dot fsf at canonical dot com> <CAFqB+PxoumBd+hSBSWW9D7jjuND6KSPVd_0CYzhttAc730REfg at mail dot gmail dot com> <8738ocwzvo dot fsf at canonical dot com>
Ping?
Michael Hudson-Doyle <michael.hudson@linaro.org> writes:
> Marcus Shawcroft <marcus.shawcroft@gmail.com> writes:
>
>> On 3 October 2013 23:43, Michael Hudson-Doyle <michael.hudson@linaro.org> wrote:
>>> Hi,
>>>
>>> As libatomic builds for and the tests pass on AArch64 (built on x86_64
>>> but tested on a foundation model, logs and summary:
>>>
>>> http://people.linaro.org/~mwhudson/libatomic.sum.txt
>>> http://people.linaro.org/~mwhudson/runtest-log-v-2.txt
>>>
>>> ) this patch enables the build.
>>>
>>> Cheers,
>>> mwh
>>> (first time posting to this list, let me know if I'm doing it wrong)
>>>
>>> 2013-10-04 Michael Hudson-Doyle <michael.hudson@linaro.org>
>>>
>>> * configure.tgt: Add AArch64 support.
>>>
>>
>> Hi,
>> The patch looks fine to me.
>
> Thanks for looking!
>
>> The ChangeLog entry should reflect the code that was removed rather
>> than the functionality added. Perhaps:
>>
>> * configure.tgt (aarch64*): Remove.
>
> There are few too many negatives going on to make a pithy explanation
> easy...
>
>> Did you investigate whether or not the 10 UNSUPPORTED results in the
>> testsuite are sane?
>
> I did not, but have now.
>
>> I think that 5 look legitimate since they require 128 bit sync ops.
>> The other 5 look superficially like they should be supported on
>> aarch64. We may just be missing aarch64 target supports wiring in
>> check_effective_target_sync_long_long_runtime?
>
> Yes, that was it, with appropriate changes the -4 tests all pass.
>
> However, just out of a sense of curiosity, I added wiring to claim
> aarch64* supports 128 bit sync ops and all the -5 tests pass too. Is
> that just luck or because the reservation granule on the foundation
> model is big enough or something else?
>
> In any case, I'll attach a patch that just claims support for long long
> sync ops for now...
>
> Cheers,
> mwh
>
>> /Marcus
>
> 2013-10-04 Michael Hudson-Doyle <michael.hudson@linaro.org>
>
> * libatomic/configure.tgt (aarch64*): Remove code preventing
> build.
>
> * gcc/testsuite/lib/target-supports.exp
> (check_effective_target_sync_long_long): AArch64 supports
> atomic operations on "long long".
> (check_effective_target_sync_long_long_runtime): AArch64 can
> execute atomic operations on "long long".
>
> diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
> index 7eb4dfe..5557c06 100644
> --- a/gcc/testsuite/lib/target-supports.exp
> +++ b/gcc/testsuite/lib/target-supports.exp
> @@ -4508,6 +4508,7 @@ proc check_effective_target_sync_int_128_runtime { } {
> proc check_effective_target_sync_long_long { } {
> if { [istarget x86_64-*-*]
> || [istarget i?86-*-*])
> + || [istarget aarch64*-*-*]
> || [istarget arm*-*-*]
> || [istarget alpha*-*-*]
> || ([istarget sparc*-*-*] && [check_effective_target_lp64]) } {
> @@ -4537,6 +4538,8 @@ proc check_effective_target_sync_long_long_runtime { } {
> }
> } ""
> }]
> + } elseif { [istarget aarch64*-*-*] } {
> + return 1
> } elseif { [istarget arm*-*-linux-*] } {
> return [check_runtime sync_longlong_runtime {
> #include <stdlib.h>
> diff --git a/libatomic/configure.tgt b/libatomic/configure.tgt
> index b9e5d6c..7eaab38 100644
> --- a/libatomic/configure.tgt
> +++ b/libatomic/configure.tgt
> @@ -95,11 +95,6 @@ fi
>
> # Other system configury
> case "${target}" in
> - aarch64*)
> - # This is currently not supported in AArch64.
> - UNSUPPORTED=1
> - ;;
> -
> arm*-*-linux*)
> # OS support for atomic primitives.
> config_path="${config_path} linux/arm posix"