https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98414

--- Comment #11 from Martin Liška <marxin at gcc dot gnu.org> ---
There's a self-container test-case:

$ cat resolver.ii
class Resolver {
  int GetCMIName();
  virtual char GetCMISuffix() { return 'c'; }
};
int Resolver::GetCMIName() { GetCMISuffix(); return 0; }

int main() {}

$ -static-libstdc++ -static-libgcc -fsanitize=undefined -static-libubsan
[fine]

$ g++ -fsanitize=undefined resolver.ii -static-libstdc++ -static-libubsan
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld:
/usr/lib64/gcc/x86_64-suse-linux/10/libubsan.a(ubsan_type_hash_itanium.o): in
function `findBaseAtOffset(__cxxabiv1::__class_type_info const*, long)':
/home/abuild/rpmbuild/BUILD/gcc-10.2.1+git1030/obj-x86_64-suse-linux/x86_64-suse-linux/libsanitizer/ubsan/../../../../libsanitizer/ubsan/ubsan_type_hash_itanium.cpp:161:
undefined reference to `__dynamic_cast'
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld:
/home/abuild/rpmbuild/BUILD/gcc-10.2.1+git1030/obj-x86_64-suse-linux/x86_64-suse-linux/libsanitizer/ubsan/../../../../libsanitizer/ubsan/ubsan_type_hash_itanium.cpp:165:
undefined reference to `typeinfo for __cxxabiv1::__vmi_class_type_info'
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld:
/home/abuild/rpmbuild/BUILD/gcc-10.2.1+git1030/obj-x86_64-suse-linux/x86_64-suse-linux/libsanitizer/ubsan/../../../../libsanitizer/ubsan/ubsan_type_hash_itanium.cpp:165:
undefined reference to `__dynamic_cast'
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld:
/usr/lib64/gcc/x86_64-suse-linux/10/libubsan.a(ubsan_type_hash_itanium.o): in
function `isDerivedFromAtOffset(__cxxabiv1::__class_type_info const*,
__cxxabiv1::__class_type_info const*, long)':
/home/abuild/rpmbuild/BUILD/gcc-10.2.1+git1030/obj-x86_64-suse-linux/x86_64-suse-linux/libsanitizer/ubsan/../../../../libsanitizer/ubsan/ubsan_type_hash_itanium.cpp:124:
undefined reference to `__dynamic_cast'
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld:
/home/abuild/rpmbuild/BUILD/gcc-10.2.1+git1030/obj-x86_64-suse-linux/x86_64-suse-linux/libsanitizer/ubsan/../../../../libsanitizer/ubsan/ubsan_type_hash_itanium.cpp:128:
undefined reference to `typeinfo for __cxxabiv1::__vmi_class_type_info'
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld:
/home/abuild/rpmbuild/BUILD/gcc-10.2.1+git1030/obj-x86_64-suse-linux/x86_64-suse-linux/libsanitizer/ubsan/../../../../libsanitizer/ubsan/ubsan_type_hash_itanium.cpp:128:
undefined reference to `__dynamic_cast'
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld:
/usr/lib64/gcc/x86_64-suse-linux/10/libubsan.a(ubsan_type_hash_itanium.o): in
function `__ubsan::checkDynamicType(void*, void*, unsigned long)':
/home/abuild/rpmbuild/BUILD/gcc-10.2.1+git1030/obj-x86_64-suse-linux/x86_64-suse-linux/libsanitizer/ubsan/../../../../libsanitizer/ubsan/ubsan_type_hash_itanium.cpp:231:
undefined reference to `__dynamic_cast'
collect2: error: ld returned 1 exit status

Reply via email to