On 2024-04-09, at 15:24:28 +0100, Jeremy Sowden wrote: > On 2024-03-30, at 02:03:57 +0500, Andrey Rakhmatullin wrote: > > Source: maildir-utils > > Version: 1.10.8-2 > > Severity: serious > > Tags: ftbfs > > > > https://buildd.debian.org/status/fetch.php?pkg=maildir-utils&arch=armel&ver=1.10.8-2%2Bb2&stamp=1711722478&raw=0 > > > > /usr/bin/ld: lib/index/libmu-index.a.p/mu-indexer.cc.o: in function > > `std::__atomic_base<long long>::store(long long, std::memory_order)': > > /usr/include/c++/13/bits/atomic_base.h:481:(.text+0xb14): undefined > > reference > > to `__atomic_store_8' > > /usr/bin/ld: lib/index/libmu-index.a.p/mu-indexer.cc.o: in function > > `std::__atomic_base<long long>::load(std::memory_order) const': > > /usr/include/c++/13/bits/atomic_base.h:505:(.text+0x1384): undefined > > reference > > to `__atomic_load_8' > > This is a 64-bit time_t bug. Will investigate.
gcc includes a library, libatomic.so, which supplies implementations of
atomic operations which cannot be implemented by native instructions.
On armel, this is required for 64 bit types:
$ cat test.cc
#include <atomic>
#include <iostream>
using namespace std;
int
main(void)
{
atomic_llong x(0);
long long y = 123;
x.store(y);
cout << x << endl;
}
$ g++ test.cc -o test
/usr/bin/ld: /tmp/ccVWAQDN.o: in function `main':
test.cc:(.text+0xe0): undefined reference to `__atomic_store_8'
/usr/bin/ld: /tmp/ccVWAQDN.o: in function `std::__atomic_base<long
long>::operator long long() const':
test.cc:(.text._ZNKSt13__atomic_baseIxEcvxEv[_ZNKSt13__atomic_baseIxEcvxEv]+0x98):
undefined reference to `__atomic_load_8'
collect2: error: ld returned 1 exit status
$ g++ test.cc -o test -latomic
$ ./test
123
Thus it is now required for 64-bit `time_t`.
This doesn't appear to be documented anywhere apart from other bug
reports. May be worth broaching with upstream.
J.
signature.asc
Description: PGP signature

