-
Notifications
You must be signed in to change notification settings - Fork 119
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added a test that the C++ runtime is really useable (i.e. exports the…
… symbols that we need).
- Loading branch information
theraven
committed
Jun 21, 2013
1 parent
3b9bbf2
commit 60a3605
Showing
3 changed files
with
75 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
cmake_minimum_required(VERSION 2.8) | ||
|
||
add_executable(test_cxx_runtime typeinfo_test.cc) | ||
set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "") | ||
target_link_libraries(test_cxx_runtime ${CXX_RUNTIME}) | ||
set_target_properties(test_cxx_runtime PROPERTIES | ||
LINKER_LANGUAGE C) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
#include <stdint.h> | ||
|
||
namespace __cxxabiv1 | ||
{ | ||
struct __class_type_info; | ||
} | ||
|
||
using __cxxabiv1::__class_type_info; | ||
|
||
namespace std | ||
{ | ||
/** | ||
* std::type_info defined with the GCC ABI. This may not be exposed in | ||
* public headers, but is required for correctly implementing the unified | ||
* exception model. | ||
*/ | ||
class type_info | ||
{ | ||
public: | ||
virtual ~type_info(); | ||
bool operator==(const type_info &) const; | ||
bool operator!=(const type_info &) const; | ||
bool before(const type_info &) const; | ||
type_info(); | ||
private: | ||
type_info(const type_info& rhs); | ||
type_info& operator= (const type_info& rhs); | ||
const char *__type_name; | ||
protected: | ||
type_info(const char *name): __type_name(name) { } | ||
public: | ||
const char* name() const { return __type_name; } | ||
virtual bool __is_pointer_p() const; | ||
virtual bool __is_function_p() const; | ||
virtual bool __do_catch(const type_info *thrown_type, | ||
void **thrown_object, | ||
unsigned outer) const; | ||
virtual bool __do_upcast( | ||
const __class_type_info *target, | ||
void **thrown_object) const; | ||
}; | ||
} | ||
|
||
class type_info2 : public std::type_info | ||
{ | ||
public: | ||
virtual bool __is_pointer_p() const; | ||
virtual bool __is_function_p() const { return true; } | ||
virtual bool __do_catch(const type_info *thrown_type, | ||
void **thrown_object, | ||
unsigned outer) const { return true; } | ||
virtual bool __do_upcast( | ||
const __class_type_info *target, | ||
void **thrown_object) const { return true; } | ||
}; | ||
bool type_info2::__is_pointer_p() const { return true; } | ||
|
||
int main() | ||
{ | ||
return 0; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters