On Mon, 26 Apr 2021 00:36:31 -0700 Josh Triplett wrote:
> Package: musl
> Version: 1.2.2-1
> Severity: normal
> X-Debbugs-Cc: j...@joshtriplett.org
>
> aarch64 gcc appears to default to -moutline-atomics, which causes gcc to
> emit references to function symbols for atomic operations rather than
> inlining the corresponding instruction sequences.
>
> However, musl doesn't appear to provide the corresponding function
> symbols. This results in errors like these (from compiling libgit2):
>
> attrcache.c:(.text.git_attr_cache__get+0x144): undefined reference to
> `__aarch64_swp8_acq_rel'
> attrcache.c:(.text.git_attr_cache__get+0x158): undefined reference to
> `__aarch64_ldadd4_acq_rel'
> attrcache.c:(.text.git_attr_cache__get+0x168): undefined reference to
> `__aarch64_swp8_acq_rel'
> attrcache.c:(.text.git_attr_cache__get+0x180): undefined reference to
> `__aarch64_swp8_acq_rel'
> attrcache.c:(.text.git_attr_cache__get+0x224): undefined reference to
> `__aarch64_cas8_acq_rel'
> attrcache.c:(.text.git_attr_cache__get+0x248): undefined reference to
> `__aarch64_swp8_acq_rel'
>
> Would it make sense for the aarch64 musl-gcc wrapper to pass
> -mno-outline-atomics, which resolves this problem and makes gcc no
> longer emit references to those symbols?
Following up on this: given the performance wins associated with
-moutline-atomics, it may also make sense for musl to provide those
symbols, or for the aarch64 musl-gcc to ensure that an appropriate
libgcc with those symbols is linked in.