aarch64: Fix bootstrap with old binutils [PR93053]
authorJakub Jelinek <jakub@redhat.com>
Wed, 15 Apr 2020 09:01:19 +0000 (11:01 +0200)
committerJakub Jelinek <jakub@redhat.com>
Wed, 15 Apr 2020 09:01:19 +0000 (11:01 +0200)
commit5b2f76e36d861c881c6770b4f47c1fae6c0c8965
tree563a3d7aff7d0c6e027f99e6502f92ff05b83257
parent2dc9294c3c7c81a6d5e1d4dedf58fea87bbadde6
aarch64: Fix bootstrap with old binutils [PR93053]

As reported in the PR, GCC 10 (and also 9.3.1 but not 9.3.0) fails to build
when using older binutils which lack LSE support, because those instructions
are used in libgcc.
Thanks to Kyrylo's hint, the following patches (hopefully) allow it to build
even with older binutils by using .inst directive if LSE support isn't
available in the assembler.

2020-04-15  Jakub Jelinek  <jakub@redhat.com>

PR target/93053
* configure.ac (LIBGCC_CHECK_AS_LSE): Add HAVE_AS_LSE checking.
* config/aarch64/lse.S: Include auto-target.h, if HAVE_AS_LSE
is not defined, use just .arch armv8-a.
(B, M, N, OPN): Define.
(COMMENT): New .macro.
(CAS, CASP, SWP, LDOP): Use .inst directive if HAVE_AS_LSE is not
defined.  Otherwise, move the operands right after the glue? and
comment out operands where the macros are used.
* configure: Regenerated.
* config.in: Regenerated.
libgcc/ChangeLog
libgcc/config.in
libgcc/config/aarch64/lse.S
libgcc/configure
libgcc/configure.ac