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).
delete pObj;statements. The return value convention is mandated by ARM to reduce code duplication but it's not a requirement of the the base C++ ABI. – Igor Skochinsky May 13 '14 at 11:15