The beginning of the virtual function table (VFT, also virtual method table, VMT) disasembled by IDA goes as:
_ZTV13QSystemLocale DCD 0, _ZTI13QSystemLocale, _ZN13QSystemLocaleD2Ev+1, _ZN13QSystemLocaleD0Ev+1
and c++filt
decodes it as
vtable for QSystemLocale DCD 0, typeinfo for QSystemLocale, QSystemLocale::~QSystemLocale()+1, QSystemLocale::~QSystemLocale()+1
Here we see _ZN13QSystemLocaleD2Ev
and _ZN13QSystemLocaleD0Ev
, both transformed by c++filt
to QSystemLocale::~QSystemLocale()
.
(+1 is normal, the bit selects the right instruction set on ARM).
The Qt source declares:
virtual ~QSystemLocale();
Why there are two virtual destructors?
(I work with ARM, Android NDK (gcc/g++), C++, Qt).