Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sync with the main repo #87

Merged
merged 187 commits into from
Dec 2, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
187 commits
Select commit Hold shift + click to select a range
d14395b
net, doc: provide context for UnserializeV1Array()
jonatack Sep 23, 2021
33c6a20
span, doc: provide span.h context and explain lifetimebound definition
jonatack Sep 23, 2021
dbde055
gui: Paste button in Open URI dialog
kristapsk May 5, 2021
a99ed89
psbt: sign without finalizing
achow101 Jul 21, 2021
25a5814
GUI/Options: Restore "S" accelerator for "Start on system login" option
luke-jr Oct 7, 2021
0b06e72
More detailed error checking for base58 addresses
meshcollider Sep 30, 2021
b62b67e
Add Bech32 error location function
meshcollider Sep 30, 2021
02a7bde
Add error_locations to validateaddress RPC
meshcollider Sep 30, 2021
c4979f7
Add boost tests for bech32 error detection
meshcollider Apr 20, 2021
42d6a02
Refactor and add more tests for validateaddress
meshcollider Oct 1, 2021
2eb5792
Add release notes for validateaddress Bech32 error detection
meshcollider Apr 20, 2021
5599813
Add lots of comments to Bech32
meshcollider Oct 6, 2021
88cc481
Modify copyright header on Bech32 code
meshcollider Oct 7, 2021
23f8561
test: add node.chain_path and node.debug_log_path
jamesob Oct 15, 2021
d9803f7
test: add stress tests for initialization
jamesob Oct 15, 2021
b9e105b
[net_processing] ignore all transactions during ibd
glozow Feb 26, 2021
6aed8b7
[test] tx processing before and after ibd
glozow Feb 26, 2021
3e4f069
wallet, refactor: Make GetOldestKeyPoolTime return type std::optional
hebasto Oct 30, 2021
ee03c78
wallet: Make GetOldestKeyPoolTime return nullopt for blank wallets
hebasto Oct 30, 2021
c43aa62
Avoid excessive lock contention in CCheckQueue::Add
hebasto Oct 30, 2021
459e208
Exit early for an empty vChecks in CCheckQueue::Add
hebasto Oct 30, 2021
fabe18d
Use value_type in CDataStream where possible
Nov 4, 2021
fa18038
refactor: Use ignore helper when unserializing an invalid pubkey
Nov 6, 2021
faa3ec2
span: Add std::byte helpers
Nov 4, 2021
e1d4a12
test: simplify and document NULLDUMMY-invalidation helper
theStack Nov 12, 2021
5ba9f1f
test: refactor: rename NULLDUMMY-invalidation helper
theStack Nov 12, 2021
f1ed304
test: refactor: simplify `block_submit` in feature_nulldummy.py
theStack Nov 12, 2021
d8ee8f3
refactor: Make CWalletTx sync state type-safe
ryanofsky Feb 17, 2021
9b575f1
Improve fs::PathToString documentation
ryanofsky Nov 11, 2021
dbfca4a
build: require glibc 2.18+ for release builds
fanquake Nov 10, 2021
5b93e65
build: remove D__STDC_FORMAT_MACROS from CPPFLAGS
fanquake Aug 16, 2021
68e5aaf
build: add `--enable-lto` configuration option
fanquake Oct 1, 2021
54b3699
Store pubkeys in TRDescriptor::MakeScripts
achow101 Jun 28, 2021
fa3e0da
policy: Treat taproot as always active
Nov 15, 2021
fa44237
doc: Fix typos in endif header comments
Nov 12, 2021
fa53e3a
scripted-diff: Move miner to src/node
Nov 15, 2021
fa0739a
style: Sort file list after rename
Nov 15, 2021
fa4e099
refactor: Replace validation.h include with forward-decl in miner.h
Nov 15, 2021
fa45922
ci: Rework ci task names
Nov 15, 2021
fa54a40
doc: Pick better named args for MutableTransactionSignatureCreator
Sep 21, 2021
8fb5784
Create a tr() descriptor bech32m DescriptorScriptPubKeyMan by default
achow101 Jun 23, 2021
d8abbe1
Mention bech32m in -addresstype and -changetype help
achow101 Jun 23, 2021
4868c9f
Extract Taproot internal keyid with GetKeyFromDestination
achow101 Jun 24, 2021
fa74d45
fuzz: Add minisketch fuzz test
Nov 12, 2021
4a7f6e0
Merge bitcoin/bitcoin#23524: doc: Fix typos in endif header comments
fanquake Nov 17, 2021
6bde42e
Merge bitcoin/bitcoin#23511: release: require glibc 2.18+
fanquake Nov 17, 2021
7be37ee
Merge bitcoin/bitcoin#23520: ci: Rework ci task names (take 3)
fanquake Nov 17, 2021
b869a78
Merge bitcoin/bitcoin#23522: Improve fs::PathToString documentation
fanquake Nov 17, 2021
cb2392c
Merge bitcoin/bitcoin#23496: fuzz: Add minisketch fuzz test
Nov 17, 2021
398fd63
Merge bitcoin/bitcoin#23525: doc: Pick better named args for MutableT…
Nov 17, 2021
0445e1a
build: use -fcf-protection=full when building Windows Boost in depends
fanquake Nov 17, 2021
f31d4bd
scripts: test for PE control flow instrumentation
fanquake May 17, 2021
fac4947
doc: Fix incorrect C++ named args
Sep 15, 2021
d94dc69
Merge bitcoin/bitcoin#23501: test: various feature_nulldummy.py impro…
laanwj Nov 17, 2021
21b58f4
util: ParseByteUnits - Parse a string with suffix unit [k|K|m|M|g|G|t|T]
dougEfresh Nov 17, 2021
ae9df4e
test: refactor: take use of `create_block` version parameter (or use …
theStack Nov 15, 2021
df5d783
test: refactor: take use of `create_block` txlist parameter
theStack Nov 15, 2021
e57c0eb
test: refactor: replace OP_1/OP_TRUE magic numbers by constants
theStack Nov 15, 2021
2ef186a
Merge bitcoin/bitcoin#22881: doc: provide context for CNetAddr::Unser…
laanwj Nov 17, 2021
0d43525
test: add logging to rpc_decodescript.py
theStack Nov 17, 2021
099c695
test: check for decodescript RPC 'type' results
theStack Nov 17, 2021
83f6c0f
test: add decodescript RPC test for P2TR output type
theStack Nov 17, 2021
606e306
Merge bitcoin/bitcoin#22981: doc: Fix incorrect C++ named args
fanquake Nov 17, 2021
fe03f7a
Merge bitcoin/bitcoin#23540: test: add decodescript RPC test for P2TR…
Nov 18, 2021
75e8bf5
net: dedup and RAII-fy the creation of a copy of CConnman::vNodes
vasild Apr 26, 2021
664ac22
net: keep reference to each node during socket wait
vasild Apr 28, 2021
c7eb19e
style: remove unnecessary braces
vasild Oct 25, 2021
f52b6b2
net: split CConnman::SocketHandler()
vasild Oct 25, 2021
988024f
test: add check_node_connections in util
brunoerg Oct 28, 2021
fa186eb
Remove strtol in torcontrol
Nov 17, 2021
fae5fec
test: Remove sanitizer suppression implicit-signed-integer-truncation…
Nov 19, 2021
fade4b3
util: Add missing fstatfs to syscall sandbox
Nov 19, 2021
cf72925
configure.ac: remove Bashism
whitslack Nov 19, 2021
80ae64d
Merge bitcoin/bitcoin#23553: test: Remove sanitizer suppression impli…
fanquake Nov 20, 2021
1e86ff7
test: run rpc-generateblock.py even with wallet disabled
DariusParvin Nov 19, 2021
cf06c9b
Merge bitcoin/bitcoin#23555: util: Add missing fstatfs to syscall san…
fanquake Nov 21, 2021
3688313
Merge bitcoin/bitcoin#23558: test: run rpc-generateblock.py even with…
Nov 21, 2021
d0fe9c2
build: don't check for deprecated berkeley-db4 package
fanquake Nov 21, 2021
4d83038
build: don't check for deprecated qt5 package
fanquake Nov 21, 2021
19815b0
Merge bitcoin/bitcoin#23535: PE: check for control flow instrumentation
fanquake Nov 21, 2021
06782cf
Merge bitcoin-core/gui#449: Restore "S" accelerator for "Start on sys…
hebasto Nov 21, 2021
79e64a0
Merge bitcoin-core/gui#319: Paste button in Open URI dialog
hebasto Nov 21, 2021
a42923c
Merge bitcoin/bitcoin#23348: rpc, wallet: Do not return "keypoololdes…
meshcollider Nov 22, 2021
a2ed33b
Merge bitcoin/bitcoin#23564: build: don't use deprecated brew package…
fanquake Nov 22, 2021
47fe744
Merge bitcoin/bitcoin#22364: wallet: Make a tr() descriptor by default
Nov 22, 2021
f13a22a
wallet: Call load handlers without cs_wallet locked
promag Sep 2, 2021
3a36ec8
Merge bitcoin/bitcoin#23521: test: refactor: dedup code by taking use…
Nov 22, 2021
ee7e061
Merge bitcoin/bitcoin#23557: configure.ac: remove Bashism
Nov 22, 2021
b9f0aff
qt: monospaced output in Console on macOS
RandyMcMillan Nov 21, 2021
95d19f8
Merge bitcoin/bitcoin#16807: Let validateaddress locate error in Bech…
laanwj Nov 22, 2021
ab22a71
refactor: cast bool to int to silence compiler warning
jonatack Nov 22, 2021
4018e23
Merge bitcoin/bitcoin#23573: refactor: cast bool operands to int to s…
fanquake Nov 23, 2021
7bb8eb0
script install_db4.sh added check for patch command
ngara Nov 23, 2021
8196b0a
build: patch qt to explicitly define previously implicit header include
kwvg Nov 24, 2021
73ac195
Merge bitcoin/bitcoin#23249: util: ParseByteUnits - Parse a string wi…
Nov 24, 2021
9394964
Merge bitcoin/bitcoin#23451: span: Add std::byte helpers
Nov 24, 2021
64059b7
Merge bitcoin/bitcoin#21943: Dedup and RAII-fy the creation of a copy…
laanwj Nov 24, 2021
574cc42
refactor: remove RecursiveMutex cs_totalBytesRecv, use std::atomic in…
theStack Aug 28, 2021
d51d2a3
scripted-diff: rename node vector/mutex members in CConnman
theStack Aug 28, 2021
7d52ff5
refactor: replace RecursiveMutex m_addr_fetches_mutex with Mutex
theStack Aug 28, 2021
3726a45
refactor: replace RecursiveMutex m_added_nodes_mutex with Mutex
theStack Aug 28, 2021
064c729
Merge bitcoin/bitcoin#23512: policy: Treat taproot as always active
Nov 25, 2021
4cc998c
Merge bitcoin/bitcoin#23580: build: patch qt to explicitly define pre…
fanquake Nov 25, 2021
667f068
build, qt, macOS: Don't hard-code x86_64 as the arch when using qmake
hebasto Nov 24, 2021
f6e2781
build, qt, macOS: Don't pass -device-option when building natively
hebasto Nov 24, 2021
d020419
Revert "doc: Install Rosetta on M1-macOS for qt in depends"
hebasto Nov 24, 2021
9facad0
Merge bitcoin-core/gui#477: Monospaced output in Console on macOS
hebasto Nov 25, 2021
791dd1f
Merge bitcoin/bitcoin#23538: Remove strtol in torcontrol
laanwj Nov 25, 2021
76392b0
Merge bitcoin/bitcoin#22829: refactor: various RecursiveMutex replace…
Nov 25, 2021
0d7ecd5
Merge bitcoin/bitcoin#23583: build, qt, macOS: Don't hard-code x86_64…
fanquake Nov 25, 2021
681b25e
Merge bitcoin/bitcoin#23152: build: add `--enable-lto` configuration …
fanquake Nov 25, 2021
05cdceb
build: don't set PORT=no in config.site
fanquake Nov 25, 2021
fa2c991
refactor: Use underlying type of isminetype for isminefilter
Nov 25, 2021
e988bc7
ci: Make macOS SDK cache independent, and update it timely
hebasto Nov 25, 2021
cf24152
Merge bitcoin/bitcoin#21206: refactor: Make CWalletTx sync state type…
laanwj Nov 25, 2021
3ad5ace
ci: Revamp Android SDK cache, and update it timely
hebasto Nov 25, 2021
6c7b883
ci: Always run merge_base_script first for consistency
hebasto Nov 25, 2021
14fe4db
Merge bitcoin/bitcoin#23579: script install_db4.sh check for `patch` …
laanwj Nov 25, 2021
655d52a
contrib: Specify wb mode when creating mac sdk
promag Nov 25, 2021
16d698c
Merge bitcoin/bitcoin#23517: scripted-diff: Move miner to src/node
Nov 26, 2021
2a492d4
Merge bitcoin/bitcoin#23598: contrib: Specify wb mode when creating m…
fanquake Nov 26, 2021
fa5a886
doc: Tidy up nMinDiskSpace comment
Mar 5, 2019
111c3e0
Merge bitcoin/bitcoin#23594: build: don't set PORT=no in config.site
fanquake Nov 26, 2021
fae2392
wallet: Split signmessage from rpcwallet
Nov 26, 2021
166f8ec
test: always rescan after importing private keys in `init_wallet` helper
theStack Nov 26, 2021
b79dbe8
test: add feature_rbf.py --descriptors to test_runner.py
theStack Nov 26, 2021
200d97f
Merge bitcoin/bitcoin#22868: wallet: Call load handlers without cs_wa…
meshcollider Nov 27, 2021
4aa06f9
Merge bitcoin/bitcoin#23600: doc: Tidy up nMinDiskSpace comment
fanquake Nov 28, 2021
4f8b1f8
Merge bitcoin/bitcoin#23608: test: fix `feature_rbf.py --descriptors`…
fanquake Nov 28, 2021
a26e8ee
[tracing] tracepoint for utxocache flushes
arnabsen1729 Sep 3, 2021
2bc51c5
[tracing] tracepoints to utxocache add, spent and uncache
arnabsen1729 Sep 3, 2021
a3f6167
test: Make more shell scripts verifiable by the `shellcheck` tool
hebasto Nov 13, 2021
83c08ba
doc: Fix typos in packages.md
hebasto Nov 28, 2021
855bd75
build, qt: Ditch `no_sdk_version_check.patch`
hebasto Nov 28, 2021
e521c55
Merge bitcoin/bitcoin#23617: doc: Fix typos in packages.md
fanquake Nov 29, 2021
b4f647f
Merge bitcoin/bitcoin#23397: Avoid excessive lock contention in CChec…
Nov 29, 2021
014cae2
Merge bitcoin/bitcoin#23591: refactor: Use underlying type of isminet…
laanwj Nov 29, 2021
a574f4a
Merge bitcoin/bitcoin#23392: test: move check_node_connections to util
laanwj Nov 29, 2021
913b714
Merge bitcoin/bitcoin#22902: tracing: utxocache tracepoints
laanwj Nov 29, 2021
383d350
Merge bitcoin/bitcoin#22513: rpc: Allow walletprocesspsbt to sign wit…
laanwj Nov 29, 2021
8b07145
Merge bitcoin/bitcoin#23597: ci: Revamp SDK caches
fanquake Nov 30, 2021
29074ba
Merge bitcoin/bitcoin#23618: build, qt: Ditch `no_sdk_version_check.p…
fanquake Nov 30, 2021
ffdf8ee
Merge bitcoin/bitcoin#23602: wallet: Split stuff from rpcwallet
Nov 30, 2021
63c0d0e
Merge bitcoin/bitcoin#21327: net_processing: ignore transactions whil…
laanwj Nov 30, 2021
c5712d1
Merge bitcoin/bitcoin#23506: test: Make more shell scripts verifiable…
laanwj Nov 30, 2021
5202bd1
test: Bump shellcheck version to 0.8.0
hebasto Nov 30, 2021
aef8c7c
Merge bitcoin/bitcoin#23289: test: add stress tests for initialization
laanwj Nov 30, 2021
ec59623
Revert "doc: Add a link to Android APK CI artifact to README and PR t…
jarolrod Nov 30, 2021
a74c1c5
Revert "ci: Add artifacts instruction to Android APK task"
jarolrod Nov 30, 2021
eb93d9a
Revert "ci: Set alias in tasks with artifacts in cirrus.yml"
jarolrod Nov 30, 2021
f7ab30c
Revert "qml: Demo ProgressIndicator control"
jarolrod Nov 30, 2021
6187849
Revert "doc: Drop unneeded runtime dependencies"
jarolrod Nov 30, 2021
e7f7985
Revert "Revert "build, qml: Add qtquickcontrols module""
jarolrod Nov 30, 2021
b2916ad
Revert "qml: Show ConnectionOptions"
jarolrod Nov 30, 2021
50d5f75
Revert "qml: Use ColumnLayout in application window"
jarolrod Nov 30, 2021
98a4d9d
Revert "qml: Drop import qualifier BitcoinCoreComponents"
jarolrod Nov 30, 2021
48f8758
Revert "qml: Set tab focus behavior"
jarolrod Nov 30, 2021
59b1e49
Revert "ci: Prefix artifacts names with insecure_ as CI cannot be tru…
jarolrod Nov 30, 2021
19d4b8f
Revert "multiprocess: add new bitcoin-qt init implementation to qml-gui"
jarolrod Nov 30, 2021
a2d5d9f
Revert "qml: Drop erroneous `#include <QStringLiteral>`"
jarolrod Nov 30, 2021
c4c57b7
Revert "qml, build, doc: Allow import QtQuick.Layouts"
jarolrod Dec 1, 2021
28ae857
Revert "qml: Add qInstallMessageHandler"
jarolrod Dec 1, 2021
794a1e3
Revert "build, qt: Apply workaround for Qt build system bug for riscv64"
jarolrod Dec 1, 2021
5123f22
Revert "build, qt: Add RISC-V detection"
jarolrod Dec 1, 2021
5f86979
Revert "build, qml: Add qtquickcontrols2 module"
jarolrod Dec 1, 2021
9837d0b
Revert "build, qml: Add qtquickcontrols module"
jarolrod Dec 1, 2021
b235dd5
Revert "build, qml: Add qtdeclarative module"
jarolrod Dec 1, 2021
c9d7d0a
Merge bitcoin/bitcoin#23635: test: Bump shellcheck version to 0.8.0
fanquake Dec 1, 2021
5d31c0b
Merge commit 'c9d7d0a653910fa3f2dc40e4355c638ec3f0fcb5'
jarolrod Dec 1, 2021
3e46c06
build, qml: Add qtdeclarative module
hebasto Aug 27, 2021
ccb193d
build, qml: Add qtquickcontrols2 module
hebasto Aug 27, 2021
7fd3c91
build, qt: Add RISC-V detection
hebasto Aug 28, 2021
c9be290
build, qt: Apply workaround for Qt build system bug for riscv64
hebasto Aug 28, 2021
e297bee
qml: Add qInstallMessageHandler
hebasto Oct 2, 2021
cdb9844
qml, build, doc: Allow import QtQuick.Layouts
hebasto Oct 3, 2021
6cae8b3
qml: Drop erroneous `#include <QStringLiteral>`
hebasto Oct 10, 2021
3273800
multiprocess: add new bitcoin-qt init implementation to qml-gui
jarolrod Oct 27, 2021
83348cc
ci: Prefix artifacts names with insecure_ as CI cannot be trusted
hebasto Oct 28, 2021
901184f
qml: Set tab focus behavior
promag Oct 21, 2021
4c5d834
qml: Drop import qualifier BitcoinCoreComponents
promag Oct 21, 2021
a33f314
qml: Use ColumnLayout in application window
promag Oct 22, 2021
1863ab4
qml: Show ConnectionOptions
promag Oct 22, 2021
0daccfd
doc: Drop unneeded runtime dependencies
hebasto Oct 30, 2021
7229b01
qml: Demo ProgressIndicator control
promag Oct 22, 2021
3bf5e3c
ci: Set alias in tasks with artifacts in cirrus.yml
promag Nov 3, 2021
9a43843
ci: Add artifacts instruction to Android APK task
hebasto Nov 6, 2021
ef99bc9
doc: Add a link to Android APK CI artifact to README and PR template
hebasto Nov 6, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 15 additions & 13 deletions .cirrus.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,6 @@ global_task_template: &GLOBAL_TASK_TEMPLATE
<< : *BASE_TEMPLATE
<< : *MAIN_TEMPLATE

depends_sdk_cache_template: &DEPENDS_SDK_CACHE_TEMPLATE
depends_sdk_cache:
folder: "depends/sdk-sources"

compute_credits_template: &CREDITS_TEMPLATE
# https://cirrus-ci.org/pricing/#compute-credits
# Only use credits for pull requests to the main repo
Expand Down Expand Up @@ -213,7 +209,7 @@ task:
FILE_ENV: "./ci/test/00_setup_env_native_qt5.sh"

task:
name: '[depends, sanitizers: thread (TSan), no gui] [jammy]'
name: '[TSan, depends, no gui] [jammy]'
<< : *GLOBAL_TASK_TEMPLATE
container:
image: ubuntu:jammy
Expand All @@ -225,7 +221,7 @@ task:
FILE_ENV: "./ci/test/00_setup_env_native_tsan.sh"

task:
name: '[depends, sanitizers: memory (MSan)] [focal]'
name: '[MSan, depends] [focal]'
<< : *GLOBAL_TASK_TEMPLATE
container:
image: ubuntu:focal
Expand All @@ -234,7 +230,7 @@ task:
FILE_ENV: "./ci/test/00_setup_env_native_msan.sh"

task:
name: '[no depends, sanitizers: address/leak (ASan + LSan) + undefined (UBSan) + integer] [jammy]'
name: '[ASan + LSan + UBSan + integer, no depends] [jammy]'
<< : *GLOBAL_TASK_TEMPLATE
container:
image: ubuntu:jammy
Expand All @@ -243,7 +239,7 @@ task:
FILE_ENV: "./ci/test/00_setup_env_native_asan.sh"

task:
name: '[no depends, sanitizers: fuzzer,address,undefined,integer] [focal]'
name: '[fuzzer,address,undefined,integer, no depends] [focal]'
only_if: $CIRRUS_BRANCH == $CIRRUS_DEFAULT_BRANCH || $CIRRUS_BASE_BRANCH == $CIRRUS_DEFAULT_BRANCH
<< : *GLOBAL_TASK_TEMPLATE
container:
Expand Down Expand Up @@ -278,12 +274,16 @@ task:

task:
name: 'macOS 10.15 [gui, no tests] [focal]'
<< : *DEPENDS_SDK_CACHE_TEMPLATE
<< : *GLOBAL_TASK_TEMPLATE
<< : *BASE_TEMPLATE
macos_sdk_cache:
folder: "depends/SDKs/$MACOS_SDK"
fingerprint_key: "$MACOS_SDK"
<< : *MAIN_TEMPLATE
alias: macos
container:
image: ubuntu:focal
env:
MACOS_SDK: "Xcode-12.1-12A7403-extracted-SDK-with-libcxx-headers"
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
FILE_ENV: "./ci/test/00_setup_env_mac.sh"
copy_artifacts_script:
Expand All @@ -296,7 +296,7 @@ task:
task:
name: 'macOS 11 native [gui] [no depends]'
brew_install_script:
- brew install boost libevent berkeley-db4 qt@5 miniupnpc libnatpmp ccache zeromq qrencode sqlite libtool automake pkg-config gnu-getopt
- brew install boost libevent berkeley-db@4 qt@5 miniupnpc libnatpmp ccache zeromq qrencode sqlite libtool automake pkg-config gnu-getopt
<< : *GLOBAL_TASK_TEMPLATE
osx_instance:
# Use latest image, but hardcode version to avoid silent upgrades (and breaks)
Expand All @@ -309,13 +309,15 @@ task:

task:
name: 'ARM64 Android APK [focal]'
<< : *DEPENDS_SDK_CACHE_TEMPLATE
<< : *BASE_TEMPLATE
alias: android
android_sdk_cache:
folder: "depends/SDKs/android"
fingerprint_key: "ANDROID_API_LEVEL=28 ANDROID_BUILD_TOOLS_VERSION=28.0.3 ANDROID_NDK_VERSION=22.1.7171670"
depends_sources_cache:
folder: "depends/sources"
fingerprint_script: git rev-list -1 HEAD ./depends
<< : *MAIN_TEMPLATE
alias: android
container:
image: ubuntu:focal
env:
Expand Down
2 changes: 1 addition & 1 deletion build_msvc/libsecp256k1_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,4 @@
#define ECMULT_GEN_PREC_BITS 4
#define ECMULT_WINDOW_SIZE 15

#endif /* BITCOIN_LIBSECP256K1_CONFIG_H */
#endif // BITCOIN_LIBSECP256K1_CONFIG_H
2 changes: 1 addition & 1 deletion ci/lint/04_install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,6 @@ ${CI_RETRY_EXE} pip3 install mypy==0.910
${CI_RETRY_EXE} pip3 install pyzmq==22.3.0
${CI_RETRY_EXE} pip3 install vulture==2.3

SHELLCHECK_VERSION=v0.7.2
SHELLCHECK_VERSION=v0.8.0
curl -sL "https://github.com/koalaman/shellcheck/releases/download/${SHELLCHECK_VERSION}/shellcheck-${SHELLCHECK_VERSION}.linux.x86_64.tar.xz" | tar --xz -xf - --directory /tmp/
export PATH="/tmp/shellcheck-${SHELLCHECK_VERSION}:${PATH}"
24 changes: 13 additions & 11 deletions ci/test/05_before_script.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,22 @@ fi

DOCKER_EXEC mkdir -p "${DEPENDS_DIR}/SDKs" "${DEPENDS_DIR}/sdk-sources"

OSX_SDK_BASENAME="Xcode-${XCODE_VERSION}-${XCODE_BUILD_ID}-extracted-SDK-with-libcxx-headers.tar.gz"
OSX_SDK_PATH="${DEPENDS_DIR}/sdk-sources/${OSX_SDK_BASENAME}"
OSX_SDK_BASENAME="Xcode-${XCODE_VERSION}-${XCODE_BUILD_ID}-extracted-SDK-with-libcxx-headers"

if [ -n "$XCODE_VERSION" ] && [ ! -f "$OSX_SDK_PATH" ]; then
DOCKER_EXEC curl --location --fail "${SDK_URL}/${OSX_SDK_BASENAME}" -o "$OSX_SDK_PATH"
if [ -n "$XCODE_VERSION" ] && [ ! -d "${DEPENDS_DIR}/SDKs/${OSX_SDK_BASENAME}" ]; then
OSX_SDK_FILENAME="${OSX_SDK_BASENAME}.tar.gz"
OSX_SDK_PATH="${DEPENDS_DIR}/sdk-sources/${OSX_SDK_FILENAME}"
if [ ! -f "$OSX_SDK_PATH" ]; then
DOCKER_EXEC curl --location --fail "${SDK_URL}/${OSX_SDK_FILENAME}" -o "$OSX_SDK_PATH"
fi
DOCKER_EXEC tar -C "${DEPENDS_DIR}/SDKs" -xf "$OSX_SDK_PATH"
fi

if [ -n "$ANDROID_TOOLS_URL" ]; then
ANDROID_TOOLS_PATH=$DEPENDS_DIR/sdk-sources/android-tools.zip

DOCKER_EXEC curl --location --fail "${ANDROID_TOOLS_URL}" -o "$ANDROID_TOOLS_PATH"
if [ -n "$ANDROID_HOME" ] && [ ! -d "$ANDROID_HOME" ]; then
ANDROID_TOOLS_PATH=${DEPENDS_DIR}/sdk-sources/android-tools.zip
if [ ! -f "$ANDROID_TOOLS_PATH" ]; then
DOCKER_EXEC curl --location --fail "${ANDROID_TOOLS_URL}" -o "$ANDROID_TOOLS_PATH"
fi
DOCKER_EXEC mkdir -p "${ANDROID_HOME}/cmdline-tools"
DOCKER_EXEC unzip -o "$ANDROID_TOOLS_PATH" -d "${ANDROID_HOME}/cmdline-tools"
DOCKER_EXEC "yes | ${ANDROID_HOME}/cmdline-tools/tools/bin/sdkmanager --install \"build-tools;${ANDROID_BUILD_TOOLS_VERSION}\" \"platform-tools\" \"platforms;android-${ANDROID_API_LEVEL}\" \"ndk;${ANDROID_NDK_VERSION}\""
Expand All @@ -38,9 +43,6 @@ if [[ ${USE_MEMORY_SANITIZER} == "true" ]]; then
DOCKER_EXEC "contrib/install_db4.sh \$(pwd) --enable-umrw CC=clang CXX=clang++ CFLAGS='${MSAN_FLAGS}' CXXFLAGS='${MSAN_AND_LIBCXX_FLAGS}'"
fi

if [ -n "$XCODE_VERSION" ] && [ -f "$OSX_SDK_PATH" ]; then
DOCKER_EXEC tar -C "${DEPENDS_DIR}/SDKs" -xf "$OSX_SDK_PATH"
fi
if [[ $HOST = *-mingw32 ]]; then
DOCKER_EXEC update-alternatives --set "${HOST}-g++" \$\(which "${HOST}-g++-posix"\)
fi
Expand Down
32 changes: 21 additions & 11 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,11 @@ AC_ARG_ENABLE([external-signer],
[use_external_signer=$enableval],
[use_external_signer=yes])

AC_ARG_ENABLE([lto],
[AS_HELP_STRING([--enable-lto],[build using LTO (default is no)])],
[enable_lto=$enableval],
[enable_lto=no])

AC_LANG_PUSH([C++])

dnl Check for a flag to turn compiler warnings into errors. This is helpful for checks which may
Expand Down Expand Up @@ -370,6 +375,11 @@ if test "x$enable_debug" = xyes; then
AX_CHECK_COMPILE_FLAG([-ftrapv], [DEBUG_CXXFLAGS="$DEBUG_CXXFLAGS -ftrapv"], [], [$CXXFLAG_WERROR])
fi

if test "x$enable_lto" = "xyes"; then
AX_CHECK_COMPILE_FLAG([-flto], [LTO_CXXFLAGS="$LTO_CXXFLAGS -flto"], [AC_MSG_ERROR([compile failed with -flto])], [$CXXFLAG_WERROR])
AX_CHECK_LINK_FLAG([-flto], [LTO_LDFLAGS="$LTO_LDFLAGS -flto"], [AC_MSG_ERROR([link failed with -flto])], [$CXXFLAG_WERROR])
fi

if test x$use_sanitizers != x; then
dnl First check if the compiler accepts flags. If an incompatible pair like
dnl -fsanitize=address,thread is used here, this check will fail. This will also
Expand Down Expand Up @@ -581,7 +591,7 @@ CXXFLAGS="$TEMP_CXXFLAGS"

fi

CPPFLAGS="$CPPFLAGS -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS"
CPPFLAGS="$CPPFLAGS -DHAVE_BUILD_INFO"

AC_ARG_WITH([utils],
[AS_HELP_STRING([--with-utils],
Expand Down Expand Up @@ -683,8 +693,8 @@ case $host in
dnl It's safe to add these paths even if the functionality is disabled by
dnl the user (--without-wallet or --without-gui for example).

if test "x$use_bdb" != xno && $BREW list --versions berkeley-db4 >/dev/null && test "x$BDB_CFLAGS" = "x" && test "x$BDB_LIBS" = "x"; then
bdb_prefix=$($BREW --prefix berkeley-db4 2>/dev/null)
if test "x$use_bdb" != xno && $BREW list --versions berkeley-db@4 >/dev/null && test "x$BDB_CFLAGS" = "x" && test "x$BDB_LIBS" = "x"; then
bdb_prefix=$($BREW --prefix berkeley-db@4 2>/dev/null)
dnl This must precede the call to BITCOIN_FIND_BDB48 below.
BDB_CFLAGS="-I$bdb_prefix/include"
BDB_LIBS="-L$bdb_prefix/lib -ldb_cxx-4.8"
Expand All @@ -694,8 +704,8 @@ case $host in
export PKG_CONFIG_PATH="$($BREW --prefix sqlite3 2>/dev/null)/lib/pkgconfig:$PKG_CONFIG_PATH"
fi

if $BREW list --versions qt5 >/dev/null; then
export PKG_CONFIG_PATH="$($BREW --prefix qt5 2>/dev/null)/lib/pkgconfig:$PKG_CONFIG_PATH"
if $BREW list --versions qt@5 >/dev/null; then
export PKG_CONFIG_PATH="$($BREW --prefix qt@5 2>/dev/null)/lib/pkgconfig:$PKG_CONFIG_PATH"
fi

case $host in
Expand Down Expand Up @@ -1044,9 +1054,6 @@ AC_COMPILE_IFELSE([AC_LANG_SOURCE([
[AC_MSG_RESULT([no])]
)

dnl thread_local is currently disabled when building with glibc back compat.
dnl Our minimum supported glibc is 2.17, however support for thread_local
dnl did not arrive in glibc until 2.18.
if test "x$use_thread_local" = xyes || test "x$use_thread_local" = xauto; then
TEMP_LDFLAGS="$LDFLAGS"
LDFLAGS="$TEMP_LDFLAGS $PTHREAD_CFLAGS"
Expand Down Expand Up @@ -1830,6 +1837,8 @@ AC_SUBST(GPROF_LDFLAGS)
AC_SUBST(HARDENED_CXXFLAGS)
AC_SUBST(HARDENED_CPPFLAGS)
AC_SUBST(HARDENED_LDFLAGS)
AC_SUBST(LTO_CXXFLAGS)
AC_SUBST(LTO_LDFLAGS)
AC_SUBST(PIC_FLAGS)
AC_SUBST(PIE_FLAGS)
AC_SUBST(SANITIZER_CXXFLAGS)
Expand Down Expand Up @@ -1931,7 +1940,7 @@ if test x$bitcoin_enable_qt != xno; then
echo " with qr = $use_qr"
fi
echo " with zmq = $use_zmq"
if test x$enable_fuzz == xno; then
if test x$enable_fuzz = xno; then
echo " with test = $use_tests"
else
echo " with test = not building test_bitcoin because fuzzing is enabled"
Expand All @@ -1946,6 +1955,7 @@ echo " sanitizers = $use_sanitizers"
echo " debug enabled = $enable_debug"
echo " gprof enabled = $enable_gprof"
echo " werror = $enable_werror"
echo " LTO = $enable_lto"
echo
echo " target os = $TARGET_OS"
echo " build os = $build_os"
Expand All @@ -1954,7 +1964,7 @@ echo " CC = $CC"
echo " CFLAGS = $PTHREAD_CFLAGS $CFLAGS"
echo " CPPFLAGS = $DEBUG_CPPFLAGS $HARDENED_CPPFLAGS $CPPFLAGS"
echo " CXX = $CXX"
echo " CXXFLAGS = $DEBUG_CXXFLAGS $HARDENED_CXXFLAGS $WARN_CXXFLAGS $NOWARN_CXXFLAGS $ERROR_CXXFLAGS $GPROF_CXXFLAGS $CXXFLAGS"
echo " LDFLAGS = $PTHREAD_LIBS $HARDENED_LDFLAGS $GPROF_LDFLAGS $LDFLAGS"
echo " CXXFLAGS = $LTO_CXXFLAGS $DEBUG_CXXFLAGS $HARDENED_CXXFLAGS $WARN_CXXFLAGS $NOWARN_CXXFLAGS $ERROR_CXXFLAGS $GPROF_CXXFLAGS $CXXFLAGS"
echo " LDFLAGS = $LTO_LDFLAGS $PTHREAD_LIBS $HARDENED_LDFLAGS $GPROF_LDFLAGS $LDFLAGS"
echo " ARFLAGS = $ARFLAGS"
echo
18 changes: 17 additions & 1 deletion contrib/devtools/security-check.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,21 @@ def check_PE_RELOC_SECTION(binary) -> bool:
'''Check for a reloc section. This is required for functional ASLR.'''
return binary.has_relocations

def check_PE_control_flow(binary) -> bool:
'''
Check for control flow instrumentation
'''
main = binary.get_symbol('main').value

section_addr = binary.section_from_rva(main).virtual_address
virtual_address = binary.optional_header.imagebase + section_addr + main

content = binary.get_content_from_virtual_address(virtual_address, 4, lief.Binary.VA_TYPES.VA)

if content == [243, 15, 30, 250]: # endbr64
return True
return False

def check_MACHO_NOUNDEFS(binary) -> bool:
'''
Check for no undefined references.
Expand Down Expand Up @@ -177,7 +192,8 @@ def check_control_flow(binary) -> bool:
('DYNAMIC_BASE', check_PE_DYNAMIC_BASE),
('HIGH_ENTROPY_VA', check_PE_HIGH_ENTROPY_VA),
('NX', check_NX),
('RELOC_SECTION', check_PE_RELOC_SECTION)
('RELOC_SECTION', check_PE_RELOC_SECTION),
('CONTROL_FLOW', check_PE_control_flow),
],
'MACHO': [
('PIE', check_PIE),
Expand Down
36 changes: 16 additions & 20 deletions contrib/devtools/symbol-check.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,35 +19,31 @@
# https://github.com/lief-project/LIEF/pull/562
LIEF_ELF_ARCH_RISCV = lief.ELF.ARCH(243)

# Debian 8 (Jessie) EOL: 2020. https://wiki.debian.org/DebianReleases#Production_Releases
# Debian 9 (Stretch) EOL: 2022. https://wiki.debian.org/DebianReleases#Production_Releases
#
# - g++ version 4.9.2 (https://packages.debian.org/search?suite=jessie&arch=any&searchon=names&keywords=g%2B%2B)
# - libc version 2.19 (https://packages.debian.org/search?suite=jessie&arch=any&searchon=names&keywords=libc6)
# - g++ version 6.3.0 (https://packages.debian.org/search?suite=stretch&arch=any&searchon=names&keywords=g%2B%2B)
# - libc version 2.24 (https://packages.debian.org/search?suite=stretch&arch=any&searchon=names&keywords=libc6)
#
# Ubuntu 16.04 (Xenial) EOL: 2024. https://wiki.ubuntu.com/Releases
# Ubuntu 16.04 (Xenial) EOL: 2026. https://wiki.ubuntu.com/Releases
#
# - g++ version 5.3.1 (https://packages.ubuntu.com/search?keywords=g%2B%2B&searchon=names&suite=xenial&section=all)
# - libc version 2.23.0 (https://packages.ubuntu.com/search?keywords=libc6&searchon=names&suite=xenial&section=all)
# - g++ version 5.3.1
# - libc version 2.23
#
# CentOS 7 EOL: 2024. https://wiki.centos.org/FAQ/General
# CentOS Stream 8 EOL: 2024. https://wiki.centos.org/About/Product
#
# - g++ version 4.8.5 (http://mirror.centos.org/centos/7/os/x86_64/Packages/)
# - libc version 2.17 (http://mirror.centos.org/centos/7/os/x86_64/Packages/)
#
# Taking the minimum of these as our target.
#
# According to GNU ABI document (https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html) this corresponds to:
# GCC 4.8.5: GCC_4.8.0
# (glibc) GLIBC_2_17
# - g++ version 8.5.0 (http://mirror.centos.org/centos/8-stream/AppStream/x86_64/os/Packages/)
# - libc version 2.28 (http://mirror.centos.org/centos/8-stream/AppStream/x86_64/os/Packages/)
#
# See https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html for more info.

MAX_VERSIONS = {
'GCC': (4,8,0),
'GLIBC': {
lief.ELF.ARCH.i386: (2,17),
lief.ELF.ARCH.x86_64: (2,17),
lief.ELF.ARCH.ARM: (2,17),
lief.ELF.ARCH.AARCH64:(2,17),
lief.ELF.ARCH.PPC64: (2,17),
lief.ELF.ARCH.i386: (2,18),
lief.ELF.ARCH.x86_64: (2,18),
lief.ELF.ARCH.ARM: (2,18),
lief.ELF.ARCH.AARCH64:(2,18),
lief.ELF.ARCH.PPC64: (2,18),
LIEF_ELF_ARCH_RISCV: (2,27),
},
'LIBATOMIC': (1,0),
Expand Down
12 changes: 7 additions & 5 deletions contrib/devtools/test-security-check.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,16 +70,18 @@ def test_PE(self):
write_testcode(source)

self.assertEqual(call_security_check(cc, source, executable, ['-Wl,--no-nxcompat','-Wl,--disable-reloc-section','-Wl,--no-dynamicbase','-Wl,--no-high-entropy-va','-no-pie','-fno-PIE']),
(1, executable+': failed PIE DYNAMIC_BASE HIGH_ENTROPY_VA NX RELOC_SECTION'))
(1, executable+': failed PIE DYNAMIC_BASE HIGH_ENTROPY_VA NX RELOC_SECTION CONTROL_FLOW'))
self.assertEqual(call_security_check(cc, source, executable, ['-Wl,--nxcompat','-Wl,--disable-reloc-section','-Wl,--no-dynamicbase','-Wl,--no-high-entropy-va','-no-pie','-fno-PIE']),
(1, executable+': failed PIE DYNAMIC_BASE HIGH_ENTROPY_VA RELOC_SECTION'))
(1, executable+': failed PIE DYNAMIC_BASE HIGH_ENTROPY_VA RELOC_SECTION CONTROL_FLOW'))
self.assertEqual(call_security_check(cc, source, executable, ['-Wl,--nxcompat','-Wl,--enable-reloc-section','-Wl,--no-dynamicbase','-Wl,--no-high-entropy-va','-no-pie','-fno-PIE']),
(1, executable+': failed PIE DYNAMIC_BASE HIGH_ENTROPY_VA'))
(1, executable+': failed PIE DYNAMIC_BASE HIGH_ENTROPY_VA CONTROL_FLOW'))
self.assertEqual(call_security_check(cc, source, executable, ['-Wl,--nxcompat','-Wl,--enable-reloc-section','-Wl,--no-dynamicbase','-Wl,--no-high-entropy-va','-pie','-fPIE']),
(1, executable+': failed PIE DYNAMIC_BASE HIGH_ENTROPY_VA')) # -pie -fPIE does nothing unless --dynamicbase is also supplied
(1, executable+': failed PIE DYNAMIC_BASE HIGH_ENTROPY_VA CONTROL_FLOW')) # -pie -fPIE does nothing unless --dynamicbase is also supplied
self.assertEqual(call_security_check(cc, source, executable, ['-Wl,--nxcompat','-Wl,--enable-reloc-section','-Wl,--dynamicbase','-Wl,--no-high-entropy-va','-pie','-fPIE']),
(1, executable+': failed HIGH_ENTROPY_VA'))
(1, executable+': failed HIGH_ENTROPY_VA CONTROL_FLOW'))
self.assertEqual(call_security_check(cc, source, executable, ['-Wl,--nxcompat','-Wl,--enable-reloc-section','-Wl,--dynamicbase','-Wl,--high-entropy-va','-pie','-fPIE']),
(1, executable+': failed CONTROL_FLOW'))
self.assertEqual(call_security_check(cc, source, executable, ['-Wl,--nxcompat','-Wl,--enable-reloc-section','-Wl,--dynamicbase','-Wl,--high-entropy-va','-pie','-fPIE', '-fcf-protection=full']),
(0, ''))

clean_files(source, executable)
Expand Down
2 changes: 1 addition & 1 deletion contrib/devtools/test-symbol-check.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ def test_ELF(self):
self.skipTest("test not available for RISC-V")

# nextup was introduced in GLIBC 2.24, so is newer than our supported
# glibc (2.17), and available in our release build environment (2.24).
# glibc (2.18), and available in our release build environment (2.24).
with open(source, 'w', encoding="utf8") as f:
f.write('''
#define _GNU_SOURCE
Expand Down
2 changes: 1 addition & 1 deletion contrib/guix/guix-clean
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ check_tools cat mkdir make git guix
#
under_dir() {
local path_residue
path_residue="${2##${1}}"
path_residue="${2##"${1}"}"
if [ -z "$path_residue" ] || [ "$path_residue" = "$2" ]; then
return 1
else
Expand Down
5 changes: 1 addition & 4 deletions contrib/guix/libexec/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -238,9 +238,6 @@ mkdir -p "$OUTDIR"

# CONFIGFLAGS
CONFIGFLAGS="--enable-reduce-exports --disable-bench --disable-gui-tests --disable-fuzz-binary"
case "$HOST" in
*linux*) CONFIGFLAGS+=" --disable-threadlocal" ;;
esac

# CFLAGS
HOST_CFLAGS="-O2 -g"
Expand All @@ -263,7 +260,7 @@ case "$HOST" in
*mingw*) HOST_LDFLAGS="-Wl,--no-insert-timestamp" ;;
esac

# Using --no-tls-get-addr-optimize retains compatibility with glibc 2.17, by
# Using --no-tls-get-addr-optimize retains compatibility with glibc 2.18, by
# avoiding a PowerPC64 optimisation available in glibc 2.22 and later.
# https://sourceware.org/binutils/docs-2.35/ld/PowerPC64-ELF64.html
case "$HOST" in
Expand Down
Loading