Merge #17708: prevector: avoid misaligned member accesses
5f26855f109af53a336d5f98ed0ae584e7a31f84 test: Remove ubsan alignment suppressions (Wladimir J. van der Laan)
9d933ef9191417b4b7d29eaa3c3a571f814acc8e prevector: avoid misaligned member accesses (Anthony Towns)
Pull request description:
Ensure prevector data is appropriately aligned. Earlier discussion in #17530.
**Edit laanwj**: In contrast to #17530, it does this without increase in size of any of the coin cache data structures (x86_64, clang)
| Struct | (size,align) before | (size,align) after |
| ------------- | ------------- | ------- |
| Coin | 48, 8 | 48, 8 |
| CCoinsCacheEntry | 56, 8 | 56, 8 |
| CScript | 32, 1 | 32, 8 |
ACKs for top commit:
laanwj:
ACK 5f26855f109af53a336d5f98ed0ae584e7a31f84
practicalswift:
ACK 5f26855f109af53a336d5f98ed0ae584e7a31f84
jonatack:
ACK 5f26855f109af53a336d5f98ed0ae584e7a31f84
Tree-SHA512: 98d112d6856f683d5b212410b73f3071d2994f1efb046a2418a35890aa1cf1aa7c96a960fc2e963fa15241e861093c1ea41951cf5b4b5431f88345eb1dd0a98a
2020-02-12 17:48:22 +01:00
|
|
|
# -fsanitize=undefined suppressions
|
|
|
|
# =================================
|
2018-11-05 20:49:38 +01:00
|
|
|
float-divide-by-zero:validation.cpp
|
|
|
|
float-divide-by-zero:wallet/wallet.cpp
|
2019-10-22 19:19:09 +02:00
|
|
|
|
|
|
|
# -fsanitize=integer suppressions
|
|
|
|
# ===============================
|
|
|
|
# Unsigned integer overflow occurs when the result of an unsigned integer
|
|
|
|
# computation cannot be represented in its type. Unlike signed integer overflow,
|
|
|
|
# this is not undefined behavior, but it is often unintentional. The list below
|
|
|
|
# contains files in which we expect unsigned integer overflows to occur. The
|
|
|
|
# list is used to suppress -fsanitize=integer warnings when running our CI UBSan
|
|
|
|
# job.
|
2020-11-20 10:55:52 +01:00
|
|
|
unsigned-integer-overflow:*/include/c++/*/bits/basic_string.tcc
|
2018-11-06 23:25:30 +01:00
|
|
|
unsigned-integer-overflow:arith_uint256.h
|
2018-11-05 20:49:38 +01:00
|
|
|
unsigned-integer-overflow:basic_string.h
|
|
|
|
unsigned-integer-overflow:bench/bench.h
|
2022-07-08 10:40:53 +02:00
|
|
|
unsigned-integer-overflow:bitcoin-tx.cpp
|
2018-11-05 20:49:38 +01:00
|
|
|
unsigned-integer-overflow:bloom.cpp
|
2018-11-06 23:25:30 +01:00
|
|
|
unsigned-integer-overflow:chain.cpp
|
2018-11-05 20:49:38 +01:00
|
|
|
unsigned-integer-overflow:chain.h
|
2018-11-06 23:25:30 +01:00
|
|
|
unsigned-integer-overflow:coded_stream.h
|
|
|
|
unsigned-integer-overflow:core_write.cpp
|
2018-11-05 20:49:38 +01:00
|
|
|
unsigned-integer-overflow:crypto/chacha20.cpp
|
|
|
|
unsigned-integer-overflow:crypto/ctaes/ctaes.c
|
|
|
|
unsigned-integer-overflow:crypto/ripemd160.cpp
|
|
|
|
unsigned-integer-overflow:crypto/sha1.cpp
|
|
|
|
unsigned-integer-overflow:crypto/sha256.cpp
|
|
|
|
unsigned-integer-overflow:crypto/sha512.cpp
|
|
|
|
unsigned-integer-overflow:hash.cpp
|
|
|
|
unsigned-integer-overflow:leveldb/db/log_reader.cc
|
|
|
|
unsigned-integer-overflow:leveldb/util/bloom.cc
|
|
|
|
unsigned-integer-overflow:leveldb/util/crc32c.h
|
|
|
|
unsigned-integer-overflow:leveldb/util/hash.cc
|
|
|
|
unsigned-integer-overflow:policy/fees.cpp
|
2018-11-06 23:25:30 +01:00
|
|
|
unsigned-integer-overflow:prevector.h
|
2018-11-05 20:49:38 +01:00
|
|
|
unsigned-integer-overflow:script/interpreter.cpp
|
|
|
|
unsigned-integer-overflow:stl_bvector.h
|
|
|
|
unsigned-integer-overflow:txmempool.cpp
|
2018-11-06 23:25:30 +01:00
|
|
|
unsigned-integer-overflow:util/strencodings.cpp
|
2018-11-05 20:49:38 +01:00
|
|
|
unsigned-integer-overflow:validation.cpp
|
2021-01-01 15:02:49 +01:00
|
|
|
# std::variant warning fixed in https://github.com/gcc-mirror/gcc/commit/074436cf8cdd2a9ce75cadd36deb8301f00e55b9
|
|
|
|
implicit-unsigned-integer-truncation:std::__detail::__variant::_Variant_storage
|
2022-03-17 14:53:37 +01:00
|
|
|
vptr:bls/bls.h
|
2019-12-04 19:22:23 +01:00
|
|
|
|
|
|
|
implicit-integer-sign-change:*/include/c++/*/bits/*.h
|
|
|
|
implicit-integer-sign-change:*/new_allocator.h
|
|
|
|
implicit-integer-sign-change:/usr/include/boost/date_time/format_date_parser.hpp
|
|
|
|
implicit-integer-sign-change:arith_uint256.cpp
|
|
|
|
implicit-integer-sign-change:bech32.cpp
|
|
|
|
implicit-integer-sign-change:bloom.cpp
|
|
|
|
implicit-integer-sign-change:chain.*
|
|
|
|
implicit-integer-sign-change:coins.h
|
|
|
|
implicit-integer-sign-change:compat/stdin.cpp
|
|
|
|
implicit-integer-sign-change:compressor.h
|
|
|
|
implicit-integer-sign-change:crypto/*
|
|
|
|
implicit-integer-sign-change:key.cpp
|
|
|
|
implicit-integer-sign-change:noui.cpp
|
|
|
|
implicit-integer-sign-change:prevector.h
|
|
|
|
implicit-integer-sign-change:protocol.cpp
|
|
|
|
implicit-integer-sign-change:script/bitcoinconsensus.cpp
|
|
|
|
implicit-integer-sign-change:script/interpreter.cpp
|
|
|
|
implicit-integer-sign-change:serialize.h
|
|
|
|
implicit-integer-sign-change:test/arith_uint256_tests.cpp
|
|
|
|
implicit-integer-sign-change:test/coins_tests.cpp
|
|
|
|
implicit-integer-sign-change:test/pow_tests.cpp
|
|
|
|
implicit-integer-sign-change:test/prevector_tests.cpp
|
|
|
|
implicit-integer-sign-change:test/sighash_tests.cpp
|
|
|
|
implicit-integer-sign-change:test/streams_tests.cpp
|
|
|
|
implicit-integer-sign-change:test/transaction_tests.cpp
|
|
|
|
implicit-integer-sign-change:txmempool.cpp
|
|
|
|
implicit-integer-sign-change:util/strencodings.*
|
|
|
|
implicit-integer-sign-change:validation.cpp
|
|
|
|
implicit-integer-sign-change:zmq/zmqpublishnotifier.cpp
|
|
|
|
implicit-signed-integer-truncation,implicit-integer-sign-change:chain.h
|
|
|
|
implicit-signed-integer-truncation,implicit-integer-sign-change:test/skiplist_tests.cpp
|
|
|
|
implicit-signed-integer-truncation:chain.h
|
|
|
|
implicit-signed-integer-truncation:crypto/*
|
|
|
|
implicit-signed-integer-truncation:cuckoocache.h
|
|
|
|
implicit-signed-integer-truncation:leveldb/*
|
|
|
|
implicit-signed-integer-truncation:streams.h
|
|
|
|
implicit-signed-integer-truncation:test/arith_uint256_tests.cpp
|
|
|
|
implicit-signed-integer-truncation:test/skiplist_tests.cpp
|
|
|
|
implicit-signed-integer-truncation:torcontrol.cpp
|
|
|
|
implicit-unsigned-integer-truncation:crypto/*
|
|
|
|
implicit-unsigned-integer-truncation:leveldb/*
|