Re: BUG #18610: llvm error: __aarch64_swp4_acq_rel which could not be resolved - Mailing list pgsql-bugs

From Thomas Munro
Subject Re: BUG #18610: llvm error: __aarch64_swp4_acq_rel which could not be resolved
Date
Msg-id CA+hUKGKwzv9bbDD2c=Ugv62PVinVUopxRgL8pKxyiBPHsrgWog@mail.gmail.com
Whole thread Raw
In response to BUG #18610: llvm error: __aarch64_swp4_acq_rel which could not be resolved  (PG Bug reporting form <noreply@postgresql.org>)
Responses Re: BUG #18610: llvm error: __aarch64_swp4_acq_rel which could not be resolved
List pgsql-bugs
On Wed, Sep 11, 2024 at 7:58 PM PG Bug reporting form
<noreply@postgresql.org> wrote:
> FATAL:  fatal llvm error: Program used external function
> '__aarch64_swp4_acq_rel' which could not be resolved!

Hmm, I think it is inlining spinlock code from
pg_last_wal_receive_lsn()'s call to GetWalRcvFlushRecPtr(), and then
failing to find fallbacks for pre-ARMv8.1 systems that didn't have the
LSE atomic instructions.  I wonder if there could be some mismatch in
the default -march for parts of your toolchain, so that it doesn't
link the library that has that stuff, but then the clang that built
walreceiverfuncs.bc expects it to be found.  I wonder if it goes away
if you add "-mno-outline-atomics" or "-march=armv8.1-a" or
"-march=armv8-a+lse" to BITCODE_CXXFLAGS (not saying that's a fix,
just trying to understand what's happening...).  Assuming you're using
GCC, maybe "gcc -Q --help=target | grep march" could show what Ubuntu
24 has set as the baseline, and "clang -### -c -x c /dev/null" might
show what clang is selecting... just ideas, I'm not sure, I don't have
such a system, I just noticed a few distros cranking up the baseline
instruction sets recently...



pgsql-bugs by date:

Previous
From: Daniel Gustafsson
Date:
Subject: Re: BUG #18609: Repeated installcheck failure in test_pg_dump due to existing role
Next
From: Andrew Dunstan
Date:
Subject: Re: pl/perl extension fails on Windows