Merge bitcoin/bitcoin#34942: [31.x] Backports

ef10b2ec65 guix: Clean up module list in manifest (Hennadii Stepanov)
f0e1014c39 kernel: Remove NONNULL annotation from destroy method (Alexander Wiederin)
56cdeab8b5 depends, qt: Fix build on aarch64 macOS 26.4 (Hennadii Stepanov)
f3b64aa405 fuzz: Use CAmount for storing best_waste (Ava Chow)
98551a0efd fuzz: Remove unused g_setup pointers (MarcoFalke)

Pull request description:

  Backports:
  * #34918
  * #34939
  * #34944
  * #34956
  * #34982

ACKs for top commit:
  marcofleon:
    ACK ef10b2ec65
  w0xlt:
    ACK ef10b2ec65

Tree-SHA512: 2d763deff7fa154fd697630bdb61644d4908b02b4a583cb648aeb9493009417d6d02367300e6d16d1c3b7ef8296b2411e1e96f8e67ef54fcd2fca4a415b97170
This commit is contained in:
merge-script
2026-04-08 11:13:04 +08:00
9 changed files with 53 additions and 17 deletions

View File

@@ -22,17 +22,14 @@
((gnu packages python-xyz) #:select (python-pydantic-2))
((gnu packages tls) #:select (openssl))
((gnu packages version-control) #:select (git-minimal))
(guix build-system cmake)
(guix build-system gnu)
(guix build-system python)
(guix build-system pyproject)
(guix build-system trivial)
(guix download)
(guix gexp)
(guix git-download)
((guix licenses) #:prefix license:)
(guix packages)
((guix utils) #:select (cc-for-target substitute-keyword-arguments)))
((guix utils) #:select (substitute-keyword-arguments)))
(define-syntax-rule (search-our-patches file-name ...)
"Return the list of absolute file names corresponding to each

View File

@@ -9,6 +9,7 @@ $(package)_patches := dont_hardcode_pwd.patch
$(package)_patches += qtbase_skip_tools.patch
$(package)_patches += rcc_hardcode_timestamp.patch
$(package)_patches += qttools_skip_dependencies.patch
$(package)_patches += fix-macos26-qyield.patch
$(package)_qttranslations_file_name=$(qt_details_qttranslations_file_name)
$(package)_qttranslations_sha256_hash=$(qt_details_qttranslations_sha256_hash)
@@ -137,7 +138,8 @@ define $(package)_preprocess_cmds
patch -p1 -i $($(package)_patch_dir)/dont_hardcode_pwd.patch && \
patch -p1 -i $($(package)_patch_dir)/qtbase_skip_tools.patch && \
patch -p1 -i $($(package)_patch_dir)/rcc_hardcode_timestamp.patch && \
patch -p1 -i $($(package)_patch_dir)/qttools_skip_dependencies.patch
patch -p1 -i $($(package)_patch_dir)/qttools_skip_dependencies.patch && \
patch -p1 -i $($(package)_patch_dir)/fix-macos26-qyield.patch
endef
define $(package)_config_cmds

View File

@@ -24,6 +24,7 @@ $(package)_patches += fix-gcc16-sfinae-qregularexpression.patch
$(package)_patches += fix-gcc16-sfinae-qchar.patch
$(package)_patches += fix-gcc16-sfinae-qbitarray.patch
$(package)_patches += fix-gcc16-sfinae-qanystringview.patch
$(package)_patches += fix-macos26-qyield.patch
$(package)_patches += fix-qbytearray-include.patch
$(package)_qttranslations_file_name=$(qt_details_qttranslations_file_name)
@@ -281,6 +282,7 @@ define $(package)_preprocess_cmds
patch -p1 -i $($(package)_patch_dir)/fix-gcc16-sfinae-qchar.patch && \
patch -p1 -i $($(package)_patch_dir)/fix-gcc16-sfinae-qbitarray.patch && \
patch -p1 -i $($(package)_patch_dir)/fix-gcc16-sfinae-qanystringview.patch && \
patch -p1 -i $($(package)_patch_dir)/fix-macos26-qyield.patch && \
patch -p1 -i $($(package)_patch_dir)/fix-qbytearray-include.patch
endef
ifeq ($(host),$(build))

View File

@@ -0,0 +1,44 @@
commit a76004f16fdc43e1b7af83bfdf3f1a613491b234
Author: Paul Wicking <paul.wicking@qt.io>
Date: Thu Mar 26 07:09:43 2026 +0100
qyieldcpu: Fix compilation with macOS 26.4 SDK
After updating to the macOS 26.4 SDK, qtbase fails to compile on
Apple Silicon with an implicit function declaration error for
__yield() in qyieldcpu.h. It appears that the SDK's Clang now
reports __has_builtin(__yield) as true, but __yield() requires
<arm_acle.h> for its declaration.
The compiler's own __builtin_arm_yield intrinsic was already checked
further down in the cascade. Moving it above the __yield check resolves
the build failure, without unnecessarily pulling in the header.
Fixes: QTBUG-145239
Change-Id: I94b4d8f72385a4944c272ed7a66d249537a82e7d
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
--- a/qtbase/src/corelib/thread/qyieldcpu.h
+++ b/qtbase/src/corelib/thread/qyieldcpu.h
@@ -31,7 +31,9 @@ void qYieldCpu(void)
noexcept
#endif
{
-#if __has_builtin(__yield)
+#if __has_builtin(__builtin_arm_yield)
+ __builtin_arm_yield();
+#elif __has_builtin(__yield)
__yield(); // Generic
#elif defined(_YIELD_PROCESSOR) && defined(Q_CC_MSVC)
_YIELD_PROCESSOR(); // Generic; MSVC's <atomic>
@@ -45,9 +47,6 @@ void qYieldCpu(void)
_mm_pause();
#elif defined(Q_PROCESSOR_X86)
__asm__("pause"); // hopefully asm() works in this compiler
-
-#elif __has_builtin(__builtin_arm_yield)
- __builtin_arm_yield();
#elif defined(Q_PROCESSOR_ARM) && Q_PROCESSOR_ARM >= 7 && defined(Q_CC_GNU)
__asm__("yield"); // this works everywhere

View File

@@ -1333,7 +1333,7 @@ BITCOINKERNEL_API btck_BlockValidationState* BITCOINKERNEL_WARN_UNUSED_RESULT bt
* Destroy the btck_BlockValidationState.
*/
BITCOINKERNEL_API void btck_block_validation_state_destroy(
btck_BlockValidationState* block_validation_state) BITCOINKERNEL_ARG_NONNULL(1);
btck_BlockValidationState* block_validation_state);
///@}

View File

@@ -38,18 +38,13 @@
using kernel::CBlockFileInfo;
using node::SnapshotMetadata;
namespace {
const BasicTestingSetup* g_setup;
} // namespace
void initialize_deserialize()
{
static const auto testing_setup = MakeNoLogFileContext<>();
g_setup = testing_setup.get();
}
#define FUZZ_TARGET_DESERIALIZE(name, code) \
FUZZ_TARGET(name, .init = initialize_deserialize) \
FUZZ_TARGET(name, .init = initialize_deserialize) \
{ \
try { \
code \

View File

@@ -26,12 +26,10 @@
namespace {
const TestingSetup* g_setup;
std::deque<COutPoint> g_available_coins;
void initialize_miner()
{
static const auto testing_setup = MakeNoLogFileContext<const TestingSetup>();
g_setup = testing_setup.get();
for (uint32_t i = 0; i < uint32_t{100}; ++i) {
g_available_coins.emplace_back(Txid::FromUint256(uint256::ZERO), i);
}

View File

@@ -275,7 +275,7 @@ FUZZ_TARGET(bnb_finds_min_waste)
// Brute force optimal solution (lowest waste, but cannot be superset of another solution)
std::vector<uint32_t> solutions;
int best_waste{std::numeric_limits<int>::max()};
CAmount best_waste{std::numeric_limits<int64_t>::max()};
int best_weight{std::numeric_limits<int>::max()};
for (uint32_t pattern = 1; (pattern >> num_groups) == 0; ++pattern) {
// BnB does not permit adding more inputs to a solution, i.e. a superset of a solution cannot ever be a solution.

View File

@@ -11,11 +11,9 @@
namespace wallet {
namespace {
const TestingSetup* g_setup;
void initialize_crypter()
{
static const auto testing_setup = MakeNoLogFileContext<const TestingSetup>();
g_setup = testing_setup.get();
}
FUZZ_TARGET(crypter, .init = initialize_crypter)