I don't know when thread-local support was added. or whether disabling it is still necessary after the minimum glibc bump to 2.17 (see #18652).
This is a test for doing gitian builds with thread-local support enabled.
<!--e57a25ab6845829454e8d69fc972939a-->
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.
<!--174a7506f384e20aa4161008e828411d-->
Reviewers, this pull request conflicts with the following ones:
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.
<!--a722867cd34abeea1fadc8d60700f111-->
| File | commit c2e53ff064dfec1eb5d9c3e481cbf03ca997c6ad<br>(master) | commit a83cdcb73a088da011c4d15139af03852d932ac2<br>(master and this pull) |
|---|---|---|
| bitcoin-0.20.99-aarch64-linux-gnu-debug.tar.gz | 7e8881788dd40fbb... |
|
| bitcoin-0.20.99-aarch64-linux-gnu.tar.gz | 51df4c51c4a726af... |
|
| bitcoin-0.20.99-arm-linux-gnueabihf-debug.tar.gz | f8a56a57d7c567ca... |
|
| bitcoin-0.20.99-arm-linux-gnueabihf.tar.gz | 8c1d038a0c07f40c... |
|
| bitcoin-0.20.99-osx-unsigned.dmg | 7ada30b64aaa9c6f... |
5038037186745bbe... |
| bitcoin-0.20.99-osx64.tar.gz | 3373d52afd20b76d... |
09cbdba84c9d3430... |
| bitcoin-0.20.99-riscv64-linux-gnu-debug.tar.gz | ae41b2e01991e619... |
|
| bitcoin-0.20.99-riscv64-linux-gnu.tar.gz | 70dfa5a74b1fc779... |
|
| bitcoin-0.20.99-win64-debug.zip | b4de2916ea75f9ee... |
ba6d06b31e5912c6... |
| bitcoin-0.20.99-win64-setup-unsigned.exe | af075f5240977ffe... |
fc98a0a71e017642... |
| bitcoin-0.20.99-win64.zip | 35feb2529263920a... |
f56db9af4dfdf88b... |
| bitcoin-0.20.99-x86_64-linux-gnu-debug.tar.gz | d6f98a8696627c0f... |
|
| bitcoin-0.20.99-x86_64-linux-gnu.tar.gz | 5428a5e26da59e5e... |
|
| bitcoin-0.20.99.tar.gz | 24e8f3df67529c5a... |
f67c4288a5b393da... |
| bitcoin-core-linux-0.21-res.yml | 3cd8116f82e2a9a4... |
|
| bitcoin-core-osx-0.21-res.yml | 768a445721472ed9... |
7acc6ec9ab0b3184... |
| bitcoin-core-win-0.21-res.yml | 96bc6fbdf4461da9... |
9840fd66541d2fea... |
| linux-build.log | 2e522d991af68fca... |
8896f8a4a13802de... |
| osx-build.log | fbf6d92c2d446f8f... |
0a7a47e3b87de4e0... |
| win-build.log | f5a0a7d1b498c402... |
6969e44ba260a38b... |
| bitcoin-core-osx-0.21-res.yml.diff | c57c5c1b46579d7e... |
|
| bitcoin-core-win-0.21-res.yml.diff | ffa9a6bae50534b2... |
|
| linux-build.log.diff | fc1da407005ecafe... |
|
| osx-build.log.diff | 83f590abc8178f9f... |
|
| win-build.log.diff | 515e72b59f84b4ce... |
Looking at the Linux build log, this has failed with:
Checking glibc back compat...
bitcoind: symbol __cxa_thread_atexit_impl from unsupported version GLIBC_2.18
bitcoind: failed IMPORTED_SYMBOLS
bitcoin-cli: symbol __cxa_thread_atexit_impl from unsupported version GLIBC_2.18
bitcoin-cli: failed IMPORTED_SYMBOLS
bitcoin-tx: symbol __cxa_thread_atexit_impl from unsupported version GLIBC_2.18
bitcoin-tx: failed IMPORTED_SYMBOLS
bitcoin-wallet: symbol __cxa_thread_atexit_impl from unsupported version GLIBC_2.18
bitcoin-wallet: failed IMPORTED_SYMBOLS
test/test_bitcoin: symbol __cxa_thread_atexit_impl from unsupported version GLIBC_2.18
test/test_bitcoin: failed IMPORTED_SYMBOLS
bench/bench_bitcoin: symbol __cxa_thread_atexit_impl from unsupported version GLIBC_2.18
bench/bench_bitcoin: failed IMPORTED_SYMBOLS
qt/bitcoin-qt: symbol __cxa_thread_atexit_impl from unsupported version GLIBC_2.18
__cxa_thread_atexit_impl is used for thread_local variable destruction:
To implement this support, glibc defines __cxa_thread_atexit_impl exclusively for use by libstdc++ (which has the __cxa_thread_atexit to wrap around it), that registers destructors for thread_local variables in a list. Upon thread or process exit, the destructors are called in reverse order in which they were added.
As suggested, this only became available in glibc 2.18. From the 2.18 release notes:
- Add support for calling C++11 thread_local object destructors on thread and program exit. This needs compiler support for offloading C++11 destructor calls to glibc.
Oh that's too bad. Well, good to know, thanks for diving into the output.