GCC linking fails due to incorrect `libgcc` link order
@nradakovic is already working on this.
Since Apr 29, 2026.
Assessment
This issue has not been assessed yet.
Description
Description
We are encountering linker failures on AArch64 builds caused by unresolved outlined atomic helper symbols such as:
__aarch64_ldadd4_acq_rel
__aarch64_cas2_acq_rel
__aarch64_swp4_acq_rel
These symbols are emitted by GCC when compiling with outlined atomics (default on AArch64) and are expected to be resolved from libgcc.
We verified that the toolchain-provided libgcc.a does contain these symbols, so the issue is not missing runtime support.
Root Cause
Root Cause
The problem appears to be link order / link grouping when using static libraries:
- The link uses a large number of static archives (
-Wl,-Bstatic) -nodefaultlibsis enabled, so runtime libraries must be added explicitlylibgccis either:- added too early, or
- not grouped with dependent static libraries
Because of this, the linker does not pull in the required objects from libgcc.a when resolving references originating from later static libraries.
This is a standard static linking behavior: archives are only searched once, left-to-right.
Proposed Fix
Ensure that libgcc (and related runtime libs) are linked after all static libraries that may reference them.
Two valid approaches:
Option 1 — Late linkage
Add at the end of the link command:
-lgcc
-lgcc_eh
Option 2 — Link group (more robust for large static graphs)
-Wl,--start-group
<all static libraries>
-lgcc
-lgcc_eh
-Wl,--end-group
Expected Changes ot work products
- Requirements
- Architecture
- Safety Analysis
- Security Analysis
- Detailed Design
- Implementation and Testing
- all
Impact analysis
NA
Safety or Security relevance
- none
- Safety relevant
- Security relevant
Expected required ASIL classification
QM
Expected Implementation Version (Release)
1.0
- Dominant language
- Starlark
- Stars
- 2
- Forks
- 11
- Avg merge
- 1d 14h
- Merged PRs (30d)
- 10
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from eclipse-score/bazel_cpp_toolchains
-
eclipse-score/bazel_cpp_toolchains#147 · 1 assignee ·
-
improvements p3
eclipse-score/bazel_cpp_toolchains#140 · 1 assignee ·
-
action config documentation feature improvements p3 template
eclipse-score/bazel_cpp_toolchains#138 · 1 comment · 1 assignee ·
-
eclipse-score/bazel_cpp_toolchains#129 · 1 assignee ·
-
blocked bug p2 toolchain pkg
eclipse-score/bazel_cpp_toolchains#68 · 27 comments · 1 assignee ·