llvm/compiler-rt/test/msan
Evgenii Stepanov c5ea8e9138 Use-after-dtor detection for trivial base classes.
-fsanitize-memory-use-after-dtor detects memory access after a
subobject is destroyed but its memory is not yet deallocated.
This is done by poisoning each object memory near the end of its destructor.

Subobjects (members and base classes) do this in their respective
destructors, and the parent class does the same for its members with
trivial destructors.

Inexplicably, base classes with trivial destructors are not handled at
all. This change fixes this oversight by adding the base class poisoning logic
to the parent class destructor.

Reviewed By: vitalybuka

Differential Revision: https://reviews.llvm.org/D119300
2022-03-16 18:20:27 -07:00
..
Linux [msan] Guard FP_XSTATE_MAGIC1 usage with SANITIZER_GLIBC 2022-02-04 10:15:11 -08:00
scandir_test_root
Unit
__strxfrm_l.cpp
alloca.cpp
allocator_mapping.cpp
backtrace.cpp
bsearch.cpp [msan] Add bsearch interceptor 2021-08-03 18:39:14 -07:00
c-strdup.c
chained_origin.cpp
chained_origin_empty_stack.cpp
chained_origin_limits.cpp
chained_origin_memcpy.cpp
chained_origin_memmove.cpp
chained_origin_with_signals.cpp
check-handler.cpp sanitizer_common: deduplicate CheckFailed 2021-05-12 08:50:53 +02:00
check_mem_is_initialized.cpp
CMakeLists.txt
coverage-levels.cpp
ctermid.cpp
cxa_atexit.cpp
death-callback.cpp
default_ignorelist.cpp
dlerror.cpp
dlopen_executable.cpp
dso-origin.cpp
dtls_test.c
dtor-base-access.cpp Use-after-dtor detection for trivial base classes. 2022-03-16 18:20:27 -07:00
dtor-bit-fields.cpp
dtor-derived-class.cpp
dtor-member.cpp
dtor-multiple-inheritance-nontrivial-class-members.cpp
dtor-multiple-inheritance.cpp
dtor-trivial-class-members.cpp
dtor-trivial.cpp
dtor-vtable-multiple-inheritance.cpp
dtor-vtable.cpp
errno.cpp
fgets_fputs.cpp
fork.cpp
fread_fwrite.cpp
fstat.cpp
fstat64.cpp [msan] Add interceptors for Linux 64-bit stat variants 2022-03-15 20:22:28 -07:00
fstatat64.cpp [msan] Add interceptors for Linux 64-bit stat variants 2022-03-15 20:22:28 -07:00
ftime.cpp
getaddrinfo-positive.cpp
getaddrinfo.cpp
getc_unlocked.c
getline.cpp
getloadavg.cpp
getutent.cpp
heap-origin.cpp
icmp_slt_allones.cpp
iconv.cpp
if_indextoname.cpp
ifaddrs.cpp
initgroups.cpp
inline.cpp
insertvalue_origin.cpp
interception_sigaction_test.cpp
ioctl.cpp
ioctl_custom.cpp
libatomic.c
libatomic_load_exceptions.cpp
lit.cfg.py
lit.site.cfg.py.in
loop-scope.cpp
memcmp_test.cpp
mktime.cpp
mmap.cpp
mmap_below_shadow.cpp
msan_check_mem_is_initialized.cpp [msan] Print both shadow and user address 2021-10-07 17:56:46 -07:00
msan_copy_shadow.cpp
msan_dump_shadow.cpp [msan] Print both shadow and user address 2021-10-07 17:56:46 -07:00
msan_print_shadow.cpp [msan] Print both shadow and user address 2021-10-07 17:56:46 -07:00
msan_print_shadow2.cpp [msan] Print both shadow and user address 2021-10-07 17:56:46 -07:00
msan_print_shadow3.cpp [msan] Print both shadow and user address 2021-10-07 17:56:46 -07:00
mul_by_const.cpp
no_sanitize_memory.cpp
no_sanitize_memory_prop.cpp
noundef_analysis.cpp [msan] reflect the changed flag to the tests. 2022-01-16 20:48:05 +09:00
origin-store-long.cpp
param_tls_limit.cpp [compiler-rt] NFC: Fix trivial typo 2021-09-04 14:12:58 +05:30
poison_in_free.cpp
poison_in_signal.cpp [msan] Don't track origns in signal handlers 2021-08-05 13:53:20 -07:00
pr32842.c
preinit_array.cpp [msan] Disabled test failing on new GLIBC 2021-11-15 11:18:52 -08:00
print_stats.cpp
pthread_getattr_np_deadlock.cpp
pthread_getname_np.cpp
pthread_setcancelstate.cpp
qsort.cpp
rand_r.cpp
readdir64.cpp
realloc-large-origin.cpp
realloc-origin.cpp
recover-dso.cpp
recover.cpp
report-demangling.cpp
scandir.cpp
scandir_null.cpp
scanf-allocate.cpp
scoped-interceptors.cpp
select.cpp
select_float_origin.cpp
select_origin.cpp
sem_getvalue.cpp
sigaction.cpp
sigaltstack.cpp
signal_stress_test.cpp
sigwait.cpp
sigwaitinfo.cpp
stack-origin.cpp
stack-origin2.cpp
stat64.cpp [msan] Add interceptors for Linux 64-bit stat variants 2022-03-15 20:22:28 -07:00
strcmp.c
strerror_r-non-gnu.c
strlen_of_shadow.cpp
strndup.cpp
strsignal.cpp [msan] strsignal interceptor 2022-02-17 18:13:35 -08:00
strxfrm.cpp
sync_lock_set_and_test.cpp
test.h
textdomain.cpp
times.cpp
tls_reuse.cpp
tsearch.cpp
tzset.cpp
unaligned_read_origin.cpp
unpoison_param.cpp
unpoison_string.cpp
use-after-dtor.cpp
use-after-free.cpp
vararg.cpp
vector_cvt.cpp
vector_div.cpp
vector_select.cpp
wcsncpy.cpp
wcsxfrm.cpp