Reproduction steps as per libfuzzer:
0$ brew install llvm lld
1$ cmake --preset=libfuzzer \
2   -DCMAKE_C_COMPILER="$(brew --prefix llvm)/bin/clang" \
3   -DCMAKE_CXX_COMPILER="$(brew --prefix llvm)/bin/clang++" \
4   -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld"
5$ cmake --build build_fuzz
 0[ 99%] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/__/__/wallet/test/fuzz/spend.cpp.o
 1[100%] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/__/__/wallet/test/fuzz/scriptpubkeyman.cpp.o
 2[100%] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/__/__/wallet/test/fuzz/wallet_bdb_parser.cpp.o
 3[100%] Linking CXX executable ../../../bin/fuzz
 4ld64.lld: error: undefined symbol: std::__1::__hash_memory(void const*, unsigned long)
 5>>> referenced by /Users/rkrux/projects/rkrux/bitcoin/build_fuzz/src/util/./support/lockedpool.cpp
 6>>>               ../../../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)
 7>>> referenced by /Users/rkrux/projects/rkrux/bitcoin/build_fuzz/src/util/./support/lockedpool.cpp
 8>>>               ../../../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)
 9>>> referenced by /Users/rkrux/projects/rkrux/bitcoin/build_fuzz/src/util/./support/lockedpool.cpp
10>>>               ../../../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)
11>>> referenced 19 more times
12clang++: error: linker command failed with exit code 1 (use -v to see invocation)
13make[2]: *** [bin/fuzz] Error 1
14make[1]: *** [src/test/fuzz/CMakeFiles/fuzz.dir/all] Error 2
15make: *** [all] Error 2