eclipse-score / eclipse-score/bazel_cpp_toolchains

GCC linking fails due to incorrect `libgcc` link order

Abierto
#53 0 comentarios 0 reacciones 1 asignado Reclamado por @nradakovic Ver en GitHub
bug feature p3 template wip
Lenguaje dominante
Starlark
Estrellas
2
Forks
11
Merge medio
2 d 8 h
PR fusionados (30 d)
10

Descripción

## Description

We are encountering linker failures on AArch64 builds caused by unresolved outlined atomic helper symbols such as:
```bash
__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 1** — **Late linkage**
Add at the end of the link command:
```bash
-lgcc
-lgcc_eh
```

**Option 2** — **Link group (more robust for large static graphs)**
```bash
-Wl,--start-group

-lgcc
-lgcc_eh
-Wl,--end-group
```

### Expected Changes ot work products

- [ ] Requirements
- [x] Architecture
- [ ] Safety Analysis
- [ ] Security Analysis
- [ ] Detailed Design
- [ ] Implementation and Testing
- [ ] all

### Impact analysis

NA

### Safety or Security relevance

- [x] none
- [ ] Safety relevant
- [ ] Security relevant

### Expected required ASIL classification

QM

### Expected Implementation Version (Release)

1.0

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.