Bug#987591: aarch64 gcc defaults to -moutline-atomics but musl doesn't provide the corresponding functions

2021-04-29 Thread Josh Triplett
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.



Bug#987591: aarch64 gcc defaults to -moutline-atomics but musl doesn't provide the corresponding functions

2021-04-26 Thread Josh Triplett
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?