Reproduction steps as per libfuzzer:
$ brew install llvm lld
$ cmake --preset=libfuzzer \
-DCMAKE_C_COMPILER="$(brew --prefix llvm)/bin/clang" \
-DCMAKE_CXX_COMPILER="$(brew --prefix llvm)/bin/clang++" \
-DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld"
$ cmake --build build_fuzz
<details open> <summary> Getting the following error instead on the last step: </summary>
[ 99%] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/__/__/wallet/test/fuzz/spend.cpp.o
[100%] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/__/__/wallet/test/fuzz/scriptpubkeyman.cpp.o
[100%] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/__/__/wallet/test/fuzz/wallet_bdb_parser.cpp.o
[100%] Linking CXX executable ../../../bin/fuzz
ld64.lld: error: undefined symbol: std::__1::__hash_memory(void const*, unsigned long)
>>> referenced by /Users/rkrux/projects/rkrux/bitcoin/build_fuzz/src/util/./support/lockedpool.cpp
>>> ../../../lib/libbitcoin_util.a(lockedpool.cpp.o):(symbol std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<void*, std::__1::__map_const_iterator<std::__1::__tree_const_iterator<std::__1::__value_type<unsigned long, void*>, std::__1::__tree_node<std::__1::__value_type<unsigned long, void*>, void*>*, long>>>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<void*, std::__1::__map_const_iterator<std::__1::__tree_const_iterator<std::__1::__value_type<unsigned long, void*>, std::__1::__tree_node<std::__1::__value_type<unsigned long, void*>, void*>*, long>>>, std::__1::__unordered_map_hasher<void*, std::__1::pair<void* const, std::__1::__map_const_iterator<std::__1::__tree_const_iterator<std::__1::__value_type<unsigned long, void*>, std::__1::__tree_node<std::__1::__value_type<unsigned long, void*>, void*>*, long>>>, std::__1::hash<void*>, std::__1::equal_to<void*>, true>, std::__1::__unordered_map_equal<void*, std::__1::pair<void* const, std::__1::__map_const_iterator<std::__1::__tree_const_iterator<std::__1::__value_type<unsigned long, void*>, std::__1::__tree_node<std::__1::__value_type<unsigned long, void*>, void*>*, long>>>, std::__1::equal_to<void*>, std::__1::hash<void*>, true>, std::__1::allocator<std::__1::pair<void* const, std::__1::__map_const_iterator<std::__1::__tree_const_iterator<std::__1::__value_type<unsigned long, void*>, std::__1::__tree_node<std::__1::__value_type<unsigned long, void*>, void*>*, long>>>>>::__emplace_unique_key_args<void*, void*&, std::__1::__map_iterator<std::__1::__tree_iterator<std::__1::__value_type<unsigned long, void*>, std::__1::__tree_node<std::__1::__value_type<unsigned long, void*>, void*>*, long>>&>(void* const&, void*&, std::__1::__map_iterator<std::__1::__tree_iterator<std::__1::__value_type<unsigned long, void*>, std::__1::__tree_node<std::__1::__value_type<unsigned long, void*>, void*>*, long>>&)+0x100)
>>> referenced by /Users/rkrux/projects/rkrux/bitcoin/build_fuzz/src/util/./support/lockedpool.cpp
>>> ../../../lib/libbitcoin_util.a(lockedpool.cpp.o):(symbol std::__1::unique_ptr<std::__1::__hash_node<std::__1::__hash_value_type<void*, std::__1::__map_const_iterator<std::__1::__tree_const_iterator<std::__1::__value_type<unsigned long, void*>, std::__1::__tree_node<std::__1::__value_type<unsigned long, void*>, void*>*, long>>>, void*>, std::__1::__hash_node_destructor<std::__1::allocator<std::__1::__hash_node<std::__1::__hash_value_type<void*, std::__1::__map_const_iterator<std::__1::__tree_const_iterator<std::__1::__value_type<unsigned long, void*>, std::__1::__tree_node<std::__1::__value_type<unsigned long, void*>, void*>*, long>>>, void*>>>> std::__1::__hash_table<std::__1::__hash_value_type<void*, std::__1::__map_const_iterator<std::__1::__tree_const_iterator<std::__1::__value_type<unsigned long, void*>, std::__1::__tree_node<std::__1::__value_type<unsigned long, void*>, void*>*, long>>>, std::__1::__unordered_map_hasher<void*, std::__1::pair<void* const, std::__1::__map_const_iterator<std::__1::__tree_const_iterator<std::__1::__value_type<unsigned long, void*>, std::__1::__tree_node<std::__1::__value_type<unsigned long, void*>, void*>*, long>>>, std::__1::hash<void*>, std::__1::equal_to<void*>, true>, std::__1::__unordered_map_equal<void*, std::__1::pair<void* const, std::__1::__map_const_iterator<std::__1::__tree_const_iterator<std::__1::__value_type<unsigned long, void*>, std::__1::__tree_node<std::__1::__value_type<unsigned long, void*>, void*>*, long>>>, std::__1::equal_to<void*>, std::__1::hash<void*>, true>, std::__1::allocator<std::__1::pair<void* const, std::__1::__map_const_iterator<std::__1::__tree_const_iterator<std::__1::__value_type<unsigned long, void*>, std::__1::__tree_node<std::__1::__value_type<unsigned long, void*>, void*>*, long>>>>>::__construct_node<char*, std::__1::__map_iterator<std::__1::__tree_iterator<std::__1::__value_type<unsigned long, void*>, std::__1::__tree_node<std::__1::__value_type<unsigned long, void*>, void*>*, long>>&>(char*&&, std::__1::__map_iterator<std::__1::__tree_iterator<std::__1::__value_type<unsigned long, void*>, std::__1::__tree_node<std::__1::__value_type<unsigned long, void*>, void*>*, long>>&)+0x2d1)
>>> referenced by /Users/rkrux/projects/rkrux/bitcoin/build_fuzz/src/util/./support/lockedpool.cpp
>>> ../../../lib/libbitcoin_util.a(lockedpool.cpp.o):(symbol std::__1::__hash_table<std::__1::__hash_value_type<void*, std::__1::__map_const_iterator<std::__1::__tree_const_iterator<std::__1::__value_type<unsigned long, void*>, std::__1::__tree_node<std::__1::__value_type<unsigned long, void*>, void*>*, long>>>, std::__1::__unordered_map_hasher<void*, std::__1::pair<void* const, std::__1::__map_const_iterator<std::__1::__tree_const_iterator<std::__1::__value_type<unsigned long, void*>, std::__1::__tree_node<std::__1::__value_type<unsigned long, void*>, void*>*, long>>>, std::__1::hash<void*>, std::__1::equal_to<void*>, true>, std::__1::__unordered_map_equal<void*, std::__1::pair<void* const, std::__1::__map_const_iterator<std::__1::__tree_const_iterator<std::__1::__value_type<unsigned long, void*>, std::__1::__tree_node<std::__1::__value_type<unsigned long, void*>, void*>*, long>>>, std::__1::equal_to<void*>, std::__1::hash<void*>, true>, std::__1::allocator<std::__1::pair<void* const, std::__1::__map_const_iterator<std::__1::__tree_const_iterator<std::__1::__value_type<unsigned long, void*>, std::__1::__tree_node<std::__1::__value_type<unsigned long, void*>, void*>*, long>>>>>::__node_insert_unique(std::__1::__hash_node<std::__1::__hash_value_type<void*, std::__1::__map_const_iterator<std::__1::__tree_const_iterator<std::__1::__value_type<unsigned long, void*>, std::__1::__tree_node<std::__1::__value_type<unsigned long, void*>, void*>*, long>>>, void*>*)+0x116)
>>> referenced 19 more times
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [bin/fuzz] Error 1
make[1]: *** [src/test/fuzz/CMakeFiles/fuzz.dir/all] Error 2
make: *** [all] Error 2
</details>