zephyr/subsys/cpp/cpp_vtable.cpp
Benoit Leforestier 16451850e7 C++: Fix vtable with libstdc++
__cxxabiv1 is an internal namespace used by GNU's libstdc++.
When linking with C++ standard library (libstdc++),
__cxxabiv1::__class_type_info is already defined inside.
If user code contains virtual classes,
__cxxabiv1::__class_type_info is defined twice.

Signed-off-by: Benoit Leforestier <benoit.leforestier@gmail.com>
2018-10-30 08:11:28 -04:00

30 lines
604 B
C++

/*
* Copyright (c) 2015 Wind River Systems, Inc.
*
* SPDX-License-Identifier: Apache-2.0
*/
/*
* @file
* @brief Stub for C++ virtual tables
*/
/**
*
* @brief basic virtual tables required for classes to build
*
*/
#if !defined(CONFIG_LIB_CPLUSPLUS)
namespace __cxxabiv1 {
class __class_type_info {
virtual void dummy();
};
class __si_class_type_info {
virtual void dummy();
};
void __class_type_info::dummy() { } // causes the vtable to get created here
void __si_class_type_info::dummy() { } // causes the vtable to get created here
};
#endif // !defined(CONFIG_LIB_CPLUSPLUS)