GCC linking fails due to incorrect `libgcc` link order

Open
#53 0 comments 0 reactions 1 assignee View on GitHub

@nradakovic is already working on this.

Since Apr 29, 2026.

Assessment

This issue has not been assessed yet.

Description

bug feature p3 template wip

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)
  • -nodefaultlibs is enabled, so runtime libraries must be added explicitly
  • libgcc is 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 1Late linkage
Add at the end of the link command:

-lgcc
-lgcc_eh

Option 2Link 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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from eclipse-score/bazel_cpp_toolchains

All issues in eclipse-score/bazel_cpp_toolchains

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.