`libatomic` linking needed for some archs (arm, ppc)
- Lingua principale
- C++
- Stelle
- 2.2k
- Fork
- 1.2k
- Merge medio
- 4g 11h
- PR unite (30g)
- 13
Descrizione
### Describe the bug
Some archs require linking to `libatomic`, otherwise build fails to link with undefined `___atomic_fetch_add_8` etc.
### Regression Issue
- [ ] Select this option if this issue appears to be a regression.
### Expected Behavior
On platforms without hardware support for 8-byte atomics, `libatomic` should be used.
### Current Behavior
```
[ 7%] Linking CXX shared library libaws-cpp-sdk-core.dylib
cd /opt/local/var/macports/build/aws-sdk-cpp-14f15bf3/work/build/src/aws-cpp-sdk-core && /opt/local/bin/cmake -E cmake_link_script CMakeFiles/aws-cpp-sdk-core.dir/link.txt --verbose=ON
Undefined symbols for architecture ppc:
"___atomic_fetch_add_8", referenced from:
Aws::Utils::Threading::ReaderWriterLock::UnlockWriter() in ub_core.cpp.o
Aws::Utils::Threading::ReaderWriterLock::LockReader() in ub_core.cpp.o
Aws::Utils::Threading::ReaderWriterLock::LockWriter() in ub_core.cpp.o
"___atomic_fetch_sub_8", referenced from:
Aws::Utils::Threading::ReaderWriterLock::UnlockReader() in ub_core.cpp.o
Aws::Utils::Threading::ReaderWriterLock::LockWriter() in ub_core.cpp.o
"___atomic_load_8", referenced from:
Aws::Client::AWSAuthSigner::GetClockSkewOffset() const in ub_core.cpp.o
"___atomic_store_8", referenced from:
Aws::Client::AWSAuthSigner::SetClockSkew(std::chrono::duration > const&) in ub_core.cpp.o
__ZN3Aws6Client13AWSAuthSignerC4Ev in ub_core.cpp.o
ld: symbol(s) not found for architecture ppc
collect2: error: ld returned 1 exit status
```
### Reproduction Steps
Run the build on an affected platform.
### Possible Solution
Add a configure test to CMakeLists for support of 8-byte atomics.
### Additional Information/Context
Relevant for some 32-bit archs: arm, ppc, possibly mips.
### AWS CPP SDK version used
1.11.649
### Compiler and Version used
gcc 14.3.0
### Operating System and version
macOS 10.6.8
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia dalla configurazione CMakeLists pertinente e riproduci l’errore di linking su una piattaforma arm o ppc 32-bit interessata utilizzando la configurazione di build riportata. Verifica che la logica di configurazione rilevi il supporto mancante per le operazioni atomiche a 8 byte e che il build risultante venga collegato correttamente con libatomic senza compromettere le piattaforme che non ne hanno bisogno.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- cmake, cpp
- Ambito
- build-system
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100