неопределенная ссылка на `__dynamic_cast’ при использовании sanitize=vptr

#c #g #sanitizer

#c #g #средство очистки

Вопрос:

Я создаю vfptr.cpp с fsanitize=vptr помощью static файла. Он выдает сообщения об ошибках о «неопределенной ссылке на __dynamic_cast». Проблема есть как в g 7.4.0, так и в g 11.0.0. Разумно ли использовать sanitizer = vptr?

vptr.cpp

 struct A {
  virtual ~A() {};
};

int main() { A a; }
  

скомпилированный параметр

 g   vptr.C -fsanitize=vptr -static
  

сообщение об ошибке:

 /usr/lib/gcc/x86_64-linux-gnu/7/libubsan.a(ubsan_type_hash_itanium.o): In function `isDerivedFromAtOffset(__cxxabiv1::__class_type_info const*, __cxxabiv1::__class_type_info const*, long)':
(.text 0x52): undefined reference to `__dynamic_cast'
(.text 0x5e): undefined reference to `typeinfo for __cxxabiv1::__vmi_class_type_info'
(.text 0x6b): undefined reference to `__dynamic_cast'
/usr/lib/gcc/x86_64-linux-gnu/7/libubsan.a(ubsan_type_hash_itanium.o): In function `findBaseAtOffset(__cxxabiv1::__class_type_info const*, long)':
(.text 0x151): undefined reference to `__dynamic_cast'
(.text 0x15d): undefined reference to `typeinfo for __cxxabiv1::__vmi_class_type_info'
(.text 0x16a): undefined reference to `__dynamic_cast'
/usr/lib/gcc/x86_64-linux-gnu/7/libubsan.a(ubsan_type_hash_itanium.o): In function `__ubsan::checkDynamicType(void*, void*, unsigned long)':
(.text 0x293): undefined reference to `__dynamic_cast'
collect2: error: ld returned 1 exit status