aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-05-15build: Bump RC to rc2v0.20.0rc2Wladimir J. van der Laan
Tree-SHA512: c1bb2b3fb772704ab0266a30011869cb326608b731b1c7feaea107e1cbd0e67f7cf500ca4be36c705d8a3e6d7fcf324c52c062164d6ba315fbf0b99eed362b76
2020-05-15qt: Pre-rc2 translations updateWladimir J. van der Laan
Tree-SHA512: 50d0605712273d661f22d0ded2f8010d69fd8baa94537419d3d0ff82bf5f407e6d7bce0e8cf8ff32a2d8e40feb224124f30e22c52b0f132c3a56128335a2593a
2020-05-15Merge #18973: [0.20] Final backports for rc2MarcoFalke
245c862cfd4883ea91b53d766abb00a9c3c1ea5c test: disable script fuzz tests (fanquake) 9a8fb4cf4ba472a5c3e1b9b71d31673f881a4896 fuzz: Remove enumeration of expected deserialization exceptions in ProcessMessage(...) fuzzer (practicalswift) 6161c94a6108ebddafe4e95c14bde4cdc3f8c01c [net processing] Only send a getheaders for one block in an INV (John Newbery) cf2a6e2a390ad18a616d7f2718688375f2576577 test: Remove const to work around compiler error on xenial (Wladimir J. van der Laan) cc7d34465bbb0195d8bcd9143097840a2e9765f2 miner: Avoid stack-use-after-return in validationinterface (MarcoFalke) 37a620748bd3578eda1c74daad8df8451d13b989 test: Add unregister_validation_interface_race test (MarcoFalke) ff4dc2075031e9a49220cc27a270aeabe8954989 gui: Fix manual coin control with multiple wallets loaded (João Barbosa) ed0afe8c1ff37926cc5bdcb0e8e4983e194e6d61 test: Add test for conflicted wallet tx notifications (Russell Yanofsky) 251e321ad7d9ddb938e8a07ddfbe90739f0bafdd rpc: Relock wallet only if most recent callback (João Barbosa) ca4dac48c5675af3fc53db6740a0b70fef622b0a rpc: Add mutex to guard deadlineTimers (João Barbosa) a3fe458a1e477cacd19e7e0edb8e7bb965067115 [docs] Improve commenting in ProcessGetData() (John Newbery) 011532e380bb1a42eac9e79a17b35531f768becf [test] test that an invalid GETDATA doesn't prevent processing of future messages (Amiti Uttarwar) 1e73d7248a10863dc99a93f1db36d035c17f29d7 [net processing] ignore unknown INV types in GETDATA messages (Amiti Uttarwar) fb821731eb12906996bffdf4b3633d7fe47c85a7 [net processing] ignore tx GETDATA from blocks-only peers (Amiti Uttarwar) 315ae14f3f5c98ae4c4476e4bb260b9086c773a4 gui: Fix itemWalletAddress leak when not tree mode (João Barbosa) Pull request description: Backports the following PRs to the 0.20 branch: * https://github.com/bitcoin/bitcoin/pull/18578: gui: Fix leak in CoinControlDialog::updateView * https://github.com/bitcoin/bitcoin/pull/18808: [net processing] Drop unknown types in getdata * https://github.com/bitcoin/bitcoin/pull/18814: rpc: Relock wallet only if most recent callback * https://github.com/bitcoin/bitcoin/pull/18878: test: Add test for conflicted wallet tx notifications * https://github.com/bitcoin/bitcoin/pull/18894: gui: Fix manual coin control with multiple wallets loaded * https://github.com/bitcoin/bitcoin/pull/18742: miner: Avoid stack-use-after-return in validationinterface * https://github.com/bitcoin/bitcoin/pull/18962: net processing: Only send a getheaders for one block in an INV * https://github.com/bitcoin/bitcoin/pull/18975: test: Remove const to work around compiler error on xenial ACKs for top commit: promag: Tested ACK 245c862cfd4883ea91b53d766abb00a9c3c1ea5c coin control with multiple wallets. laanwj: ACK 245c862cfd4883ea91b53d766abb00a9c3c1ea5c MarcoFalke: ACK 245c862cfd solved the conflicts myself as a sanity check. Did not re-review 🍷 Tree-SHA512: 285e5a5fad5bbeba6032742c65dc68836e8eccfcceda9e69fec4ddd162a3f61679a96f9bbe3d434267835af67c21ac4c05accf6f63e827c2eb47203c6daafe31
2020-05-15test: disable script fuzz testsfanquake
Given that #18413 has not been backported.
2020-05-15fuzz: Remove enumeration of expected deserialization exceptions in ↵practicalswift
ProcessMessage(...) fuzzer Github-Pull: #18757 Rebased-From: fdceb6328382ac0f9d643f9d42ba0509062d7d48
2020-05-15[net processing] Only send a getheaders for one block in an INVJohn Newbery
Headers-first is the primary method of announcement on the network. If a node fell back sending blocks by inv, it's probably for a re-org. The final block hash provided should be the highest, so send a getheaders and then fetch the blocks we need to catch up. Github-Pull: #18962 Rebased-From: 746736639e6d05acdb85c866d4c605c947d4c500
2020-05-15test: Remove const to work around compiler error on xenialWladimir J. van der Laan
Fix the following error in travis: test/validationinterface_tests.cpp:26:36: error: default initialization of an object of const type 'const BlockValidationState' without a user-provided default constructor const BlockValidationState state_dummy; Github-Pull: #18975 Rebased-From: 050e2ee6f28e7b31c167013be7313726e34084e9
2020-05-15miner: Avoid stack-use-after-return in validationinterfaceMarcoFalke
This is achieved by switching to a shared_ptr. Also, switch the validationinterfaces in the tests to use shared_ptrs for the same reason. Github-Pull: #18742 Rebased-From: 7777f2a4bb1f9d843bc50a4e35085cfbb2808780
2020-05-15test: Add unregister_validation_interface_race testMarcoFalke
This commit is (intentionally) adding a broken test. The test is broken because it registering a subscriber object that can go out of scope while events are still being sent. To run the broken test and reproduce the bug: - Remove comment /** and */ - ./configure --with-sanitizers=address - export ASAN_OPTIONS=detect_leaks=0 - make - while ./src/test/test_bitcoin -t validationinterface_tests/unregister_validation_interface_race --catch_system_errors=no ; do true; done Github-Pull: #18742 Rebased-From: fab6d060ce5f580db538070beec1c5518c8c777c
2020-05-15gui: Fix manual coin control with multiple wallets loadedJoão Barbosa
Github-Pull: #18894 Rebased-From: a8b5f1b133d4f23975a3fbfb7a415b17261466ee
2020-05-15test: Add test for conflicted wallet tx notificationsRussell Yanofsky
Add test coverage for conflicted wallet transaction notifications so we improve current behavior and avoid future regressions https://github.com/bitcoin/bitcoin/pull/9240 - accidental break https://github.com/bitcoin/bitcoin/issues/9479 - bug report https://github.com/bitcoin/bitcoin/pull/9371 - fix https://github.com/bitcoin/bitcoin/pull/16624 - accidental break https://github.com/bitcoin/bitcoin/issues/18325 - bug report https://github.com/bitcoin/bitcoin/pull/18600 - potential fix Github-Pull: #18878 Rebased-From: f963a680515eda66429b3d1537a7baf281ab9283
2020-05-15rpc: Relock wallet only if most recent callbackJoão Barbosa
Github-Pull: #18814 Rebased-From: 9f59dde9740d065118bdddde75ef9f4e4603a7b1
2020-05-15rpc: Add mutex to guard deadlineTimersJoão Barbosa
Github-Pull: #18814 Rebased-From: a2e6db5c4f1bb52a8814102b628e51652493d06a
2020-05-15[docs] Improve commenting in ProcessGetData()John Newbery
Github-Pull: #18808 Rebased-From: 9847e205bf7edcac4c30ce4b6d62f482aa7bc1b7
2020-05-15[test] test that an invalid GETDATA doesn't prevent processing of future ↵Amiti Uttarwar
messages Co-Authored-By: John Newbery <john@johnnewbery.com> Github-Pull: #18808 Rebased-From: 2f032556e08a04807c71eb02104ca9589eaadf1b
2020-05-15[net processing] ignore unknown INV types in GETDATA messagesAmiti Uttarwar
Co-Authored-By: John Newbery <john@johnnewbery.com> Github-Pull: #18808 Rebased-From: e257cf71c851e25e1a533bf1d4296f6b55c81332
2020-05-15[net processing] ignore tx GETDATA from blocks-only peersAmiti Uttarwar
Co-Authored-By: John Newbery <john@johnnewbery.com> Github-Pull: #18808 Rebased-From: 047ceac142246b5d51056a51dbf4645b31802be4
2020-05-15gui: Fix itemWalletAddress leak when not tree modeJoão Barbosa
Github-Pull: #18578 Rebased-From: e8123eae40eb264bbb71007d0eb074901f0e2fe5
2020-05-14travis: Remove s390xMarcoFalke
Github-Pull: #18905 Rebased-From: 8c705ff1291ef7876ab1a939e2c7312aacc3dc37 Tree-SHA512: b45e091f00237b96263a967a52ce35bb4782b41a9c69314b30337ca46e9b9a1ed9a9415a30ea5195625e3cc3b231f194a5e097f78cf7159f8090c1e7c826b221
2020-05-14travis: Remove valgrindMarcoFalke
Github-Pull: #18899 Rebased-From: fa082d0a57afedca9122fac4aecd6a3070f06b04 Tree-SHA512: 29b26d3e2cf76fa9762035c2b1444323460c5a6a8d742addd2ec143f2b028d40d5d7992623a41718e550d287f82d4c4781aa82b4cb41504e66567afad7b9215f
2020-05-12Merge #18945: build: Ensure source tarball has leading directory name (0.20)Wladimir J. van der Laan
59d57f6c103100b3fdef59298d57ee8cf4c0b181 build: Ensure source tarball has leading directory name (Luke Dashjr) Pull request description: In the interest of moving 0.20.0 forward and being able to do rc2, extract and backport the non-controversial part from #18818.: ensure that the source tarball has leading directory name. ACKs for top commit: Sjors: tACK 59d57f6c103100b3fdef59298d57ee8cf4c0b181 hebasto: ACK 59d57f6c103100b3fdef59298d57ee8cf4c0b181. Tree-SHA512: 6562f4cd631d2ca3c331a05d028a3c46289a7e146319b8718f96b766f952e3b831d05e249ebcc1b27f5b91a6f318a5fdd86d07b2a80ce792d4b1b032e982ed6a
2020-05-11build: Ensure source tarball has leading directory nameLuke Dashjr
2020-05-11Merge #18748: [0.20] rc2 BackportsWladimir J. van der Laan
7f7548d822549579c57685c691e737f862b29e93 rpc: Do not advertise dumptxoutset as a way to flush the chainstate (MarcoFalke) a9ca65bd29d5da63ade1e7995ec121a581ca7b17 Fix naming of macOS SDK and clarify version (Andrew Chow) 54d2063d1a395851d9ab9031d8600b983c1523b8 Do not expose and consider -logthreadnames when it does not work (Hennadii Stepanov) 6986b26346f8d86128eb55bfa67c023afb7a236f build: fix ASLR for bitcoin-cli on Windows (fanquake) 1d1e3585fee91c5c445fb6e836a79c3ee223f7cf build: Set libevent minimum version to 2.0.21 (Hennadii Stepanov) 842b13a5f44846e21d8a0a0eafb4be7234866a26 Avoid non-trivial global constants in SHA-NI code (Pieter Wuille) ade4185e63557aca9c60f75e4d6fa111f2c46fd4 gitian: Add missing automake package to gitian-win-signer.yml (Andrew Chow) Pull request description: Currently backports the following to the 0.20 branch: * #18598 - gitian: Add missing automake package to gitian-win-signer.yml * #18702 - build: fix ASLR for bitcoin-cli on Windows * #18676 - build: Check libevent minimum version in configure script * #18665 - Do not expose and consider -logthreadnames when it does not work * #18553 - Avoid non-trivial global constants in SHA-NI code * #18589 - Fix naming of macOS SDK and clarify version ACKs for top commit: laanwj: ACK 7f7548d822549579c57685c691e737f862b29e93 Tree-SHA512: 2cba748414a440e3fb901940085a7ae059e8b926c9187fbbbdeb7846a32e7374f318cc21e499c911ff803c42aef2c844b04af10b87f9c5a2b3edf6deb03ebb04
2020-05-05rpc: Do not advertise dumptxoutset as a way to flush the chainstateMarcoFalke
Github-Pull: #18809 Rebased-From: fac0cf6e5513df1402068df113d496b4e03a4bdc
2020-04-24Fix naming of macOS SDK and clarify versionAndrew Chow
Github-Pull: #18589 Rebased-From: eb37275a6f972c81caef010b4ee9c5dc88edc759
2020-04-23Do not expose and consider -logthreadnames when it does not workHennadii Stepanov
Github-Pull: #18665 Rebased-From: b91e4ae0d8ab2ae6b77585c97c52d825f56ed539
2020-04-23build: fix ASLR for bitcoin-cli on Windowsfanquake
ASLR is not currently working for the bitcoin-cli.exe binary. This is due to it not having a .reloc section, which is stripped by default by the mingw-w64 ld we use for gitian builds. A good summary of issues with ld and mingw-w64 is available in this thread: https://sourceware.org/bugzilla/show_bug.cgi?id=19011. All other Windows binaries that we distribute (bitcoind, bitcoin-qt, bitcoin-wallet, bitcoin-tx and test_bitcoin) do not suffer this issue, and currently having working ASLR. This is due to them exporting (inadvertent or not) libsecp256k1 symbols, and, as a result, the .reloc section is not stripped by ld. This change is a temporary workaround, also the same one described here: https://www.kb.cert.org/vuls/id/307144/, that causes main() to be exported. Exporting a symbol will mean that the .reloc section is not stripped, and ASLR will function correctly. Github-Pull: #18702 Rebased-From: 315a4d36f716341a38bc4e4de8630b3246d27dbc
2020-04-23build: Set libevent minimum version to 2.0.21Hennadii Stepanov
Github-Pull: #18676 Rebased-From: b68e71796792a9da9daa0a4e759d284d15595230
2020-04-23Avoid non-trivial global constants in SHA-NI codePieter Wuille
Github-Pull: #18553 Rebased-From: 850847309458f43fc7ce6c13fa08c86e1cae042a
2020-04-23gitian: Add missing automake package to gitian-win-signer.ymlAndrew Chow
automake is needed to build osslsigncode otherwise autogen.sh fails. Github-Pull: #18598 Rebased-From: e44aeefaaed8d698d1b9004b66f85384397b1a75
2020-04-10qt: Update translations pre-rc1v0.20.0rc1Wladimir J. van der Laan
Tree-SHA512: 6c695a4a8adc51b72660f012f27548380d44e7b11e10cfa656ef70b0c5412981036a2694f7103821c8eb0148c50b94c69ce5271ed467ae6783a591192a76abdd
2020-04-10doc: Update manpages pre-rc1Wladimir J. van der Laan
Tree-SHA512: 2db55d73d5e4531e8e0699b5572c5f10040054e5955aab67992c9bbd764c910124ab9d09125f69dd25699501a2fc514c274619d1bedf08e0363e21e19241b7f2
2020-04-10build: Bump version to 0.20.0Wladimir J. van der Laan
Bump version to 0.20.0, enable release and set rc1. Tree-SHA512: aea19b8f7c069dd8798718af392eea89032aa04fa8644a3f115200c662b1dbfb4a5bfca87fe48bb2e77c977b99e1195ccc9752c46ff3f7bf706f2a980b3dd92e
2020-04-10Merge #18541: rpc: Make verifychain default values static, not depend on ↵MarcoFalke
global args fad691cafe083743a26f434488990f060ae4ac45 rpc: Make verifychain default values static, not depend on global args (MarcoFalke) Pull request description: This fixes several issues: * The documentation is not compile-time static and depends on run-time arguments, making it impossible to host it on a static resource like a website or pdf. See also a similar change in the wallet rpc code: #18499 * The same call (relying on default values) will run different code on different machines, depending on the command line args that were used to start the server. This might lead to hard-to-debug-remote issues. This is a small behaviour change, and I will add release notes. ACKs for top commit: theStack: ACK https://github.com/bitcoin/bitcoin/pull/18541/commits/fad691cafe083743a26f434488990f060ae4ac45 promag: Code review ACK fad691cafe083743a26f434488990f060ae4ac45. Tree-SHA512: 1c7a253ff0ec13a973b10d3777b71c70954ded5805b65a3ab06317327014de4cd0601d71d30c6ce89a581722c150cb5567acc1bd3e0c789cb51bab6ef0dcfc4a
2020-04-10Merge #18526: Remove PID file at the very endMarcoFalke
7fcdec0f326f7fb547ec9c651871842cf518ea38 Remove PID file at the very end (Hennadii Stepanov) Pull request description: While reproducing the bug from #18517, I've noticed that the `bitcoind.pid` file has already been removed when the `bitcoind` hangs. This PR makes `Shutdown()` keep the `bitcoind.pid` file available until the end. ACKs for top commit: MarcoFalke: ACK 7fcdec0f326f7fb547ec9c651871842cf518ea38 emilengler: utACK 7fcdec0f326f7fb547ec9c651871842cf518ea38 promag: Code review ACK 7fcdec0f326f7fb547ec9c651871842cf518ea38. theStack: Code review ACK 7fcdec0f326f7fb547ec9c651871842cf518ea38 Tree-SHA512: 9732ef34e137dbee70a06d922b316b8ea7b9a1c959cf8861b6940cd789336dc19ee468a4c3a28d95d1458076a48270c676b0ff27fec30cf57eced6ddab0a2a9b
2020-04-10Merge #18454: net: Make addr relay mockable, add testMarcoFalke
fa1da3d4bfc0511a89f5b19d5a4d89e55ff7ccde test: Add basic addr relay test (MarcoFalke) fa1793c1c44a3f75a09f9c636467b8274c541bdd net: Pass connman const when relaying address (MarcoFalke) fa47a0b003f53708b6d5df1ed4e7f8a7c68aa3ac net: Make addr relay mockable (MarcoFalke) Pull request description: As usual: * Switch to std::chrono time to be type-safe and mockable * Add basic test that relies on mocktime to add code coverage ACKs for top commit: naumenkogs: utACK fa1da3d promag: ACK fa1da3d4bfc0511a89f5b19d5a4d89e55ff7ccde (fabe56e44b6f683e24e37246a7a8851190947cb3 before https://github.com/bitcoin/bitcoin/pull/18454#issuecomment-607866453), fa5bf23d527a450e72c2bf13d013e5393b664ca3 was dropped since last review. Tree-SHA512: 0552bf8fcbe375baa3cab62acd8c23b2994efa47daff818ad1116d0ffaa0b9e520dc1bca2bbc68369b25584e85e54861fe6fd0968de4f503b95439c099df9bd7
2020-04-10Merge #18577: doc: Correct scripted-diff example linkfanquake
478c11dde326e2ff0480c14f76f9f6b52a7bdfd0 Correct scripted-diff example link (Yahia Chiheb) Pull request description: ACKs for top commit: fanquake: ACK 478c11dde326e2ff0480c14f76f9f6b52a7bdfd0 Tree-SHA512: 3bc741a79db9bd7abb17ef11f697b768565ec01303a5823ee6a7d8dfa6e888a99a15e9eda69f97a912abc3fd56a54f698f9a580596511bc9bcf62a6870b273f6
2020-04-10Merge #18295: scripts: add MACHO lazy bindings check to security-check.pyfanquake
5ca90f8b598978437340bb8467f527b9edfb2bbf scripts: add MACHO lazy bindings check to security-check.py (fanquake) Pull request description: This is a slightly belated follow up to #17686 and some discussion with Cory. It's not entirely clear if we should make this change due to the way the macOS dynamic loader appears to work. However I'm opening this for some discussion. Also related to #17768. #### Issue: [`LD64`](https://opensource.apple.com/source/ld64/) doesn't set the [MH_BINDATLOAD](https://opensource.apple.com/source/xnu/xnu-6153.11.26/EXTERNAL_HEADERS/mach-o/loader.h.auto.html) bit in the header of MACHO executables, when building with `-bind_at_load`. This is in contradiction to the [documentation](https://opensource.apple.com/source/ld64/ld64-450.3/doc/man/man1/ld.1.auto.html): ```bash -bind_at_load Sets a bit in the mach header of the resulting binary which tells dyld to bind all symbols when the binary is loaded, rather than lazily. ``` The [`ld` in Apples cctools](https://opensource.apple.com/source/cctools/cctools-927.0.2/ld/layout.c.auto.html) does set the bit, however the [cctools-port](https://github.com/tpoechtrager/cctools-port/) that we use for release builds, bundles `LD64`. However; even if the linker hasn't set that bit, the dynamic loader ([`dyld`](https://opensource.apple.com/source/dyld/)) doesn't seem to ever check for it, and from what I understand, it looks at a different part of the header when determining whether to lazily load symbols. Note that our release binaries are currently working as expected, and no lazy loading occurs. #### Example: Using a small program, we can observe the behaviour of the dynamic loader. Conducted using: ```bash clang++ --version Apple clang version 11.0.0 (clang-1100.0.33.17) Target: x86_64-apple-darwin18.7.0 ld -v @(#)PROGRAM:ld PROJECT:ld64-530 BUILD 18:57:17 Dec 13 2019 LTO support using: LLVM version 11.0.0, (clang-1100.0.33.17) (static support for 23, runtime is 23) TAPI support using: Apple TAPI version 11.0.0 (tapi-1100.0.11) ``` ```cpp #include <iostream> int main() { std::cout << "Hello World!\n"; return 0; } ``` Compile and check the MACHO header: ```bash clang++ test.cpp -o test otool -vh test ... Mach header magic cputype cpusubtype caps filetype ncmds sizeofcmds flags MH_MAGIC_64 X86_64 ALL LIB64 EXECUTE 16 1424 NOUNDEFS DYLDLINK TWOLEVEL WEAK_DEFINES BINDS_TO_WEAK PIE # Run and dump dynamic loader bindings: DYLD_PRINT_BINDINGS=1 DYLD_PRINT_TO_FILE=no_bind.txt ./test Hello World! ``` Recompile with `-bind_at_load`. Note still no `BINDATLOAD` flag: ```bash clang++ test.cpp -o test -Wl,-bind_at_load otool -vh test Mach header magic cputype cpusubtype caps filetype ncmds sizeofcmds flags MH_MAGIC_64 X86_64 ALL LIB64 EXECUTE 16 1424 NOUNDEFS DYLDLINK TWOLEVEL WEAK_DEFINES BINDS_TO_WEAK PIE ... DYLD_PRINT_BINDINGS=1 DYLD_PRINT_TO_FILE=bind.txt ./test Hello World! ``` If we diff the outputs, you can see that `dyld` doesn't perform any lazy bindings when the binary is compiled with `-bind_at_load`, even if the `BINDATLOAD` flag is not set: ```diff @@ -1,11 +1,27 @@ +dyld: bind: test:0x103EDF030 = libc++.1.dylib:__ZNKSt3__16locale9use_facetERNS0_2idE, *0x103EDF030 = 0x7FFF70C9FA58 +dyld: bind: test:0x103EDF038 = libc++.1.dylib:__ZNKSt3__18ios_base6getlocEv, *0x103EDF038 = 0x7FFF70CA12C2 +dyld: bind: test:0x103EDF068 = libc++.1.dylib:__ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryC1ERS3_, *0x103EDF068 = 0x7FFF70CA12B6 +dyld: bind: test:0x103EDF070 = libc++.1.dylib:__ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryD1Ev, *0x103EDF070 = 0x7FFF70CA1528 +dyld: bind: test:0x103EDF080 = libc++.1.dylib:__ZNSt3__16localeD1Ev, *0x103EDF080 = 0x7FFF70C9FAE6 <trim> -dyld: lazy bind: test:0x10D4AC0C8 = libsystem_platform.dylib:_strlen, *0x10D4AC0C8 = 0x7FFF73C5C6E0 -dyld: lazy bind: test:0x10D4AC068 = libc++.1.dylib:__ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryC1ERS3_, *0x10D4AC068 = 0x7FFF70CA12B6 -dyld: lazy bind: test:0x10D4AC038 = libc++.1.dylib:__ZNKSt3__18ios_base6getlocEv, *0x10D4AC038 = 0x7FFF70CA12C2 -dyld: lazy bind: test:0x10D4AC030 = libc++.1.dylib:__ZNKSt3__16locale9use_facetERNS0_2idE, *0x10D4AC030 = 0x7FFF70C9FA58 -dyld: lazy bind: test:0x10D4AC080 = libc++.1.dylib:__ZNSt3__16localeD1Ev, *0x10D4AC080 = 0x7FFF70C9FAE6 -dyld: lazy bind: test:0x10D4AC070 = libc++.1.dylib:__ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryD1Ev, *0x10D4AC070 = 0x7FFF70CA1528 ``` Note: `dyld` also has a `DYLD_BIND_AT_LAUNCH=1` environment variable, that when set, will force any lazy bindings to be non-lazy: ```bash dyld: forced lazy bind: test:0x10BEC8068 = libc++.1.dylib:__ZNSt3__113basic_ostream ``` #### Thoughts: After looking at the dyld source, I can't find any checks for `MH_BINDATLOAD`. You can see the flags it does check for, such as MH_PIE or MH_BIND_TO_WEAK [here](https://opensource.apple.com/source/dyld/dyld-732.8/src/ImageLoaderMachO.cpp.auto.html). It seems that the lazy binding of any symbols depends on whether or not [lazy_bind_size](https://opensource.apple.com/source/xnu/xnu-6153.11.26/EXTERNAL_HEADERS/mach-o/loader.h.auto.html) from the `LC_DYLD_INFO_ONLY` load command is > 0. Which was mentioned in [#17686](https://github.com/bitcoin/bitcoin/pull/17686#issue-350216254). #### Changes: This PR is one of [Corys commits](https://github.com/theuni/bitcoin/commit/7b6ba26178d2754568a1308d3d44e038e9ebf450), that I've rebased and modified to make build. I've also included an addition to the `security-check.py` script to check for the flag. However, given the above, I'm not entirely sure this patch is the correct approach. If the linker no-longer inserts it, and the dynamic loader doesn't look for it, there might be little benefit to setting it. Or, maybe this is an oversight from Apple and needs some upstream discussion. Looking for some thoughts / Concept ACK/NACK. One alternate approach we could take is to drop the patch and modify security-check.py to look for `lazy_bind_size` == 0 in the `LC_DYLD_INFO_ONLY` load command, using `otool -l`. ACKs for top commit: theuni: ACK 5ca90f8b598978437340bb8467f527b9edfb2bbf Tree-SHA512: 444022ea9d19ed74dd06dc2ab3857a9c23fbc2f6475364e8552d761b712d684b3a7114d144f20de42328d1a99403b48667ba96885121392affb2e05b834b6e1c
2020-04-09Merge #18529: Add fuzzer version of randomized prevector testMarcoFalke
b1d24d1d031a2b2ce67bf846bafa1c3a499b7553 Reorder the test instructions by number (Pieter Wuille) c2ccadc26a04358b11539097c1aadb8d11b85c21 Merge and generalize case 3 and case 6 (Pieter Wuille) 402ad5aaca9509d45d861d77eb6431d6e1944f91 Only run sanity check once at the end (Pieter Wuille) eda8309bfc6a8c94f0b7c076d1cccc86c1011cbc Assert immediately rather than caching failure (Pieter Wuille) 55608455cbed4234f26f62ed9ff500fe5dbc21c4 Make a fuzzer-based copy of the prevector randomized test (Pieter Wuille) Pull request description: The current prevector test effectively randomly generates a number of operations to perform on a prevector and a normal vector, and checks consistency between the two. By converting this into a fuzzer the operations can be targetted rather than random. ACKs for top commit: MarcoFalke: ACK b1d24d1d031a2b2ce67bf846bafa1c3a499b7553 🍬 Tree-SHA512: 2b5c62abcd5fee94f42db03400531484d98c59e7f4308e0e683c61aabcd9ce42f85c5d058d2d5e7f8221124f71d2112b6a5f3c80e5d0fdae265a70647747e92f
2020-04-09Correct scripted-diff example linkYahia Chiheb
2020-04-09Merge #18561: test: Properly raise FailedToStartError when rpc shutdown ↵MarcoFalke
before warmup finished faede1b293354560317b67f0b4e6874dcac6ef41 test: Properly raise FailedToStartError when rpc shutdown before warmup finished (MarcoFalke) Pull request description: Should fix issues such as https://travis-ci.org/github/bitcoin/bitcoin/jobs/671910152#L7034 Top commit has no ACKs. Tree-SHA512: ac659f29c5ec91985c916b734e24911cbf4e2c5c4b1f1891a7e6c2d2511ec285167550fb03848eee4a7a3cbc9f8cdb0c766f4e881d9e44368c7415d007006368
2020-04-09Merge #18569: ci: Add big endian native s390x buildMarcoFalke
6136a96cdf631f824fb89cf2720422787439acc9 ci: Rename RUN_CI_ON_HOST to DANGER_RUN_CI_ON_HOST (Hennadii Stepanov) 97ba77aa8e58c3c7ff767e6ca804d0e46370e5dc ci: Add native s390x (Hennadii Stepanov) Pull request description: Unlike the Docker wrapped solution (#17591) this PR suggests running on host system directly. This approach makes builds quick and stable (see: #18106). The excerpt from the Travis log: ``` ... Running on host system without docker wrapper ... Byte Order: Big Endian ... ``` ACKs for top commit: MarcoFalke: ACK 6136a96cdf631f824fb89cf2720422787439acc9 Tree-SHA512: 1b591de13e38d10a35217e1de11cbd648a359d18d16eed166fac18ea5788b58cc9fc6d407086ed342b99e57e479efd951a0ea693710177e500eb116316b9a788
2020-04-09Merge #18566: test: Set -use_value_profile=1 when merging fuzz inputsMarcoFalke
fa5e973b4470246d517175b8ef05a2d13df157c3 test: Set -use_value_profile=1 when merging fuzz inputs (MarcoFalke) Pull request description: ACKs for top commit: practicalswift: ACK fa5e973b4470246d517175b8ef05a2d13df157c3 Tree-SHA512: 4fdf92c137a5f771240ceb35c5a0c0033b1c334455cff83af333eedffe6a636e88c358ec7b7b9141b230b50f03de7c894fae406494a85bd7f6a9147a6d57dd7f
2020-04-09Merge #18562: ci: Run unit tests sequential onceMarcoFalke
fa7af33b4cb12315de86315c163393bdb50fad75 ci: Run unit tests sequential once (MarcoFalke) fa68a3e7640fc00c47f03fa565357679bdafb4b2 appveyor: Enable minimal unit test logging to aid debugging (MarcoFalke) Pull request description: Fixes #16976 Top commit has no ACKs. Tree-SHA512: 1f1ee8776a67afa8c1c5a16ef170c9975b6a486c087c8eba12e97d23382befd1c2801622ec70ca8e4cd1fbedce1dec46be67677ceaf07f35f1d3f3bead0200f0
2020-04-09ci: Rename RUN_CI_ON_HOST to DANGER_RUN_CI_ON_HOSTHennadii Stepanov
2020-04-09ci: Add native s390xHennadii Stepanov
2020-04-09Merge #18363: tests: Add fuzzing harness for HTTPRequest, libevent's evhttp ↵MarcoFalke
and related functions cdfb8e7afa7648405dd6b957f47b1c7ab566a076 tests: Add fuzzing harness for HTTPRequest, libevent's evhttp and related functions (practicalswift) Pull request description: Add fuzzing harness for `HTTPRequest`, `libevent`'s `evhttp` and related functions. ACKs for top commit: laanwj: ACK cdfb8e7afa7648405dd6b957f47b1c7ab566a076 Tree-SHA512: da481afed5eb3232d3f3d0583094e56050e6234223dfcb356d8567fe0616336eb1b78c5e6821325fc9767e385e5dfaf3c96f0d35ffdb67f18d74f9a9a9464e24
2020-04-09test: Set -use_value_profile=1 when merging fuzz inputsMarcoFalke
2020-04-09Merge #18521: fuzz: Add process_messages harnessMarcoFalke
fa6a00843447d53a5708ea3a629b9150cfe58be2 fuzz: Add process_messages harness (MarcoFalke) Pull request description: ACKs for top commit: practicalswift: Tested ACK fa6a00843447d53a5708ea3a629b9150cfe58be2 Tree-SHA512: 2d8788308c7f45c97ca003378f58a9d51f51265958557a65e5e505b1666b4cb928f0d010622870175090a0ad25e2d10b41f26f4eef14b6ff334a024baa250f8c
2020-04-09Merge #18533: scripted-diff: Replace strCommand with msg_typeMarcoFalke
7777e3624fabe4718675b2be8b088697b7ad4d0d scripted-diff: Replace strCommand with msg_type (MarcoFalke) Pull request description: Receiving a message is not a command, but simply a message of some type ACKs for top commit: promag: ACK 7777e3624fabe4718675b2be8b088697b7ad4d0d. naumenkogs: ACK 7777e36 practicalswift: ACK 7777e3624fabe4718675b2be8b088697b7ad4d0d -- I've always thought the `strCommand` name is confusing :) theStack: ACK 7777e36 Tree-SHA512: 662bac579064c621191916274314b85111cfb4df488f00893ceb16def1c47af4b2a0f34cd7349722099b5a9d23160edb8eb999841f1d64af3e0da02e4870b4bf