1# Define the same version as the libsupc++ from gcc 4.2.1 so that we can use 2# libcxxrt as a drop-in replacement. 3 4CXXABI_1.3 { 5 6 global: 7 8 # ABI functions with C linkage 9 __cxa_allocate_exception; 10 __cxa_bad_cast; 11 __cxa_bad_typeid; 12 __cxa_begin_catch; 13 __cxa_call_unexpected; 14 __cxa_current_exception_type; 15 __cxa_demangle; 16 __cxa_end_catch; 17 __cxa_free_exception; 18 __cxa_get_globals; 19 __cxa_get_globals_fast; 20 __cxa_guard_abort; 21 __cxa_guard_acquire; 22 __cxa_guard_release; 23 __cxa_pure_virtual; 24 __cxa_rethrow; 25 __cxa_throw; 26 __cxa_throw_bad_array_new_length; 27 __dynamic_cast; 28 __gxx_personality_v0; 29 30 extern "C++" { 31 # Type info classes and their destructors 32 "__cxxabiv1::__array_type_info::~__array_type_info()"; 33 "__cxxabiv1::__class_type_info::~__class_type_info()"; 34 "__cxxabiv1::__enum_type_info::~__enum_type_info()"; 35 "__cxxabiv1::__function_type_info::~__function_type_info()"; 36 "__cxxabiv1::__fundamental_type_info::~__fundamental_type_info()"; 37 "__cxxabiv1::__pbase_type_info::~__pbase_type_info()"; 38 "__cxxabiv1::__pointer_to_member_type_info::~__pointer_to_member_type_info()"; 39 "__cxxabiv1::__pointer_type_info::~__pointer_type_info()"; 40 "__cxxabiv1::__si_class_type_info::~__si_class_type_info()"; 41 "__cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info()"; 42 43 # vtables typeinfo classes. 44 "vtable for __cxxabiv1::__array_type_info"; 45 "vtable for __cxxabiv1::__class_type_info"; 46 "vtable for __cxxabiv1::__enum_type_info"; 47 "vtable for __cxxabiv1::__function_type_info"; 48 "vtable for __cxxabiv1::__fundamental_type_info"; 49 "vtable for __cxxabiv1::__pbase_type_info"; 50 "vtable for __cxxabiv1::__pointer_to_member_type_info"; 51 "vtable for __cxxabiv1::__pointer_type_info"; 52 "vtable for __cxxabiv1::__si_class_type_info"; 53 "vtable for __cxxabiv1::__vmi_class_type_info"; 54 55 # Type info for built-in types 56 "typeinfo for bool const*"; 57 "typeinfo for bool"; 58 "typeinfo for char const*"; 59 "typeinfo for char"; 60 "typeinfo for double const*"; 61 "typeinfo for double"; 62 "typeinfo for float const*"; 63 "typeinfo for float"; 64 "typeinfo for int const*"; 65 "typeinfo for int"; 66 "typeinfo for long const*"; 67 "typeinfo for long double const*"; 68 "typeinfo for long double"; 69 "typeinfo for long long const*"; 70 "typeinfo for long long"; 71 "typeinfo for long"; 72 "typeinfo for short const*"; 73 "typeinfo for short"; 74 "typeinfo for signed char const*"; 75 "typeinfo for signed char"; 76 "typeinfo for unsigned char const*"; 77 "typeinfo for unsigned char"; 78 "typeinfo for unsigned int const*"; 79 "typeinfo for unsigned int"; 80 "typeinfo for unsigned long const*"; 81 "typeinfo for unsigned long long const*"; 82 "typeinfo for unsigned long long"; 83 "typeinfo for unsigned long"; 84 "typeinfo for unsigned short const*"; 85 "typeinfo for unsigned short"; 86 "typeinfo for void const*"; 87 "typeinfo for void"; 88 "typeinfo for wchar_t const*"; 89 "typeinfo for wchar_t"; 90 91 "typeinfo for bool*"; 92 "typeinfo for wchar_t*"; 93 "typeinfo for short*"; 94 "typeinfo for char*"; 95 "typeinfo for unsigned char*"; 96 "typeinfo for long long*"; 97 "typeinfo for unsigned short*"; 98 "typeinfo for long*"; 99 "typeinfo for double*"; 100 "typeinfo for unsigned long*"; 101 "typeinfo for unsigned long long*"; 102 "typeinfo for int*"; 103 "typeinfo for long double*"; 104 "typeinfo for signed char*"; 105 "typeinfo for void*"; 106 "typeinfo for unsigned int*"; 107 "typeinfo for float*"; 108 109 "typeinfo for __cxxabiv1::__array_type_info"; 110 "typeinfo for __cxxabiv1::__class_type_info"; 111 "typeinfo for __cxxabiv1::__enum_type_info"; 112 "typeinfo for __cxxabiv1::__function_type_info"; 113 "typeinfo for __cxxabiv1::__fundamental_type_info"; 114 "typeinfo for __cxxabiv1::__pbase_type_info"; 115 "typeinfo for __cxxabiv1::__pointer_to_member_type_info"; 116 "typeinfo for __cxxabiv1::__pointer_type_info"; 117 "typeinfo for __cxxabiv1::__si_class_type_info"; 118 "typeinfo for __cxxabiv1::__vmi_class_type_info"; 119 120 # Typeinfo names. 121 122 "typeinfo name for unsigned char const*"; 123 "typeinfo name for long const*"; 124 "typeinfo name for double const*"; 125 "typeinfo name for unsigned long long const*"; 126 "typeinfo name for unsigned short const*"; 127 "typeinfo name for char const*"; 128 "typeinfo name for long long const*"; 129 "typeinfo name for short const*"; 130 "typeinfo name for unsigned int const*"; 131 "typeinfo name for float const*"; 132 "typeinfo name for bool const*"; 133 "typeinfo name for wchar_t const*"; 134 "typeinfo name for int const*"; 135 "typeinfo name for unsigned long const*"; 136 "typeinfo name for void const*"; 137 "typeinfo name for long double const*"; 138 "typeinfo name for signed char const*"; 139 "typeinfo name for wchar_t"; 140 "typeinfo name for short"; 141 "typeinfo name for char"; 142 "typeinfo name for float"; 143 "typeinfo name for void"; 144 "typeinfo name for unsigned int"; 145 "typeinfo name for bool"; 146 "typeinfo name for signed char"; 147 "typeinfo name for long double"; 148 "typeinfo name for int"; 149 "typeinfo name for unsigned long long"; 150 "typeinfo name for unsigned long"; 151 "typeinfo name for unsigned char"; 152 "typeinfo name for long"; 153 "typeinfo name for long long"; 154 "typeinfo name for unsigned short"; 155 "typeinfo name for double"; 156 157 "typeinfo name for bool*"; 158 "typeinfo name for wchar_t*"; 159 "typeinfo name for short*"; 160 "typeinfo name for char*"; 161 "typeinfo name for unsigned char*"; 162 "typeinfo name for long long*"; 163 "typeinfo name for unsigned short*"; 164 "typeinfo name for long*"; 165 "typeinfo name for double*"; 166 "typeinfo name for unsigned long*"; 167 "typeinfo name for unsigned long long*"; 168 "typeinfo name for int*"; 169 "typeinfo name for long double*"; 170 "typeinfo name for signed char*"; 171 "typeinfo name for void*"; 172 "typeinfo name for unsigned int*"; 173 "typeinfo name for float*"; 174 175 "typeinfo name for __cxxabiv1::__array_type_info"; 176 "typeinfo name for __cxxabiv1::__class_type_info"; 177 "typeinfo name for __cxxabiv1::__enum_type_info"; 178 "typeinfo name for __cxxabiv1::__function_type_info"; 179 "typeinfo name for __cxxabiv1::__fundamental_type_info"; 180 "typeinfo name for __cxxabiv1::__pbase_type_info"; 181 "typeinfo name for __cxxabiv1::__pointer_to_member_type_info"; 182 "typeinfo name for __cxxabiv1::__pointer_type_info"; 183 "typeinfo name for __cxxabiv1::__si_class_type_info"; 184 "typeinfo name for __cxxabiv1::__vmi_class_type_info"; 185 186 "std::type_info::type_info(std::type_info const&)"; 187 "std::type_info::operator=(std::type_info const&)"; 188 189 190 # Extensions 191 "pathscale::set_terminate(void (*)())"; 192 "pathscale::set_unexpected(void (*)())"; 193 "pathscale::set_use_thread_local_handlers(bool)"; 194 }; 195 196 # C++11 typeinfo not understood by ld.bfd 2.17.50 197 # std::nullptr_t 198 _ZTIDn;_ZTIPDn;_ZTIPKDn; 199 # char16_t 200 _ZTIDi;_ZTIPDi;_ZTIPKDi; 201 # char32_t 202 _ZTIDs;_ZTIPDs;_ZTIPKDs; 203 # IEEE 754r half-precision floating point 204 _ZTIDh;_ZTIPDh;_ZTIPKDh; 205 206 # C++11 typeinfo name not understood by ld.bfd 2.17.50 207 # std::nullptr_t 208 _ZTSDn;_ZTSPDn;_ZTSPKDn; 209 # char16_t 210 _ZTSDi;_ZTSPDi;_ZTSPKDi; 211 # char32_t 212 _ZTSDs;_ZTSPDs;_ZTSPKDs; 213 # IEEE 754r half-precision floating point 214 _ZTSDh;_ZTSPDh;_ZTSPKDh; 215 216 local: 217 *; 218}; 219 220CXXABI_1.3.1 { 221 __cxa_get_exception_ptr; 222} CXXABI_1.3; 223 224CXXABI_1.3.5 { 225 extern "C++" { 226 "typeinfo for __int128 const*"; 227 "typeinfo for __int128"; 228 "typeinfo for __int128*"; 229 "typeinfo for unsigned __int128 const*"; 230 "typeinfo for unsigned __int128"; 231 "typeinfo for unsigned __int128*"; 232 }; 233} CXXABI_1.3.1; 234 235CXXABI_1.3.6 { 236 __cxa_deleted_virtual; 237} CXXABI_1.3.5; 238 239CXXABI_1.3.9 { 240 extern "C++" { 241 "typeinfo name for __int128 const*"; 242 "typeinfo name for __int128"; 243 "typeinfo name for __int128*"; 244 "typeinfo name for unsigned __int128 const*"; 245 "typeinfo name for unsigned __int128"; 246 "typeinfo name for unsigned __int128*"; 247 "operator delete[](void*, unsigned %%NEW_DELETE_TYPE%%)"; 248 "operator delete(void*, unsigned %%NEW_DELETE_TYPE%%)"; 249 }; 250} CXXABI_1.3.6; 251 252CXXABI_1.3.11 { 253 __cxa_init_primary_exception; 254} CXXABI_1.3.9; 255 256CXXABI_1.3.15 { 257 __cxa_call_terminate; 258} CXXABI_1.3.11; 259 260CXXRT_1.0 { 261 262 extern "C++" { 263 "std::type_info::name() const"; 264 "std::type_info::before(std::type_info const&) const"; 265 "std::type_info::operator==(std::type_info const&) const"; 266 "std::type_info::operator!=(std::type_info const&) const"; 267 "std::bad_cast::bad_cast(std::bad_cast const&)"; 268 "std::bad_cast::bad_cast()"; 269 "std::bad_cast::operator=(std::bad_cast const&)"; 270 "std::bad_typeid::bad_typeid(std::bad_typeid const&)"; 271 "std::bad_typeid::bad_typeid()"; 272 "std::bad_typeid::operator=(std::bad_typeid const&)"; 273 "std::exception::exception(std::exception const&)"; 274 "std::exception::exception()"; 275 "std::exception::operator=(std::exception const&)"; 276 "std::bad_alloc::bad_alloc(std::bad_alloc const&)"; 277 "std::bad_alloc::bad_alloc()"; 278 "std::bad_alloc::operator=(std::bad_alloc const&)"; 279 "std::bad_array_new_length::bad_array_new_length(std::bad_array_new_length const&)"; 280 "std::bad_array_new_length::bad_array_new_length()"; 281 "std::bad_array_new_length::operator=(std::bad_array_new_length const&)"; 282 283 }; 284 __cxa_allocate_dependent_exception; 285 __cxa_current_primary_exception; 286 __cxa_decrement_exception_refcount; 287 __cxa_free_dependent_exception; 288 __cxa_increment_exception_refcount; 289 __cxa_rethrow_primary_exception; 290 291} CXXABI_1.3.6; 292 293 294GLIBCXX_3.4 { 295 extern "C++" { 296 "operator delete[](void*)"; 297 "operator delete(void*)"; 298 "operator new[](unsigned %%NEW_DELETE_TYPE%%)"; 299 "operator new(unsigned %%NEW_DELETE_TYPE%%)"; 300 "operator new(unsigned %%NEW_DELETE_TYPE%%, std::nothrow_t const&)"; 301 302 "std::unexpected()"; 303 "std::get_terminate()"; 304 "std::get_unexpected()"; 305 "std::uncaught_exception()"; 306 "std::terminate()"; 307 308 "std::type_info::~type_info()"; 309 "std::bad_cast::~bad_cast()"; 310 "std::bad_typeid::~bad_typeid()"; 311 "std::exception::~exception()"; 312 "std::bad_alloc::~bad_alloc()"; 313 "std::bad_array_new_length::~bad_array_new_length()"; 314 315 "std::exception::what() const"; 316 317 std::set_new_handler*; 318 std::set_terminate*; 319 std::set_unexpected*; 320 std::type_info::__*; 321 322 "vtable for std::bad_alloc"; 323 "vtable for std::bad_cast"; 324 "vtable for std::bad_typeid"; 325 "vtable for std::exception"; 326 "vtable for std::type_info"; 327 "vtable for std::bad_array_new_length"; 328 329 "typeinfo for std::bad_alloc"; 330 "typeinfo for std::bad_typeid"; 331 "typeinfo for std::bad_cast"; 332 "typeinfo for std::exception"; 333 "typeinfo for std::type_info"; 334 "typeinfo for std::bad_array_new_length"; 335 "typeinfo name for std::bad_alloc"; 336 "typeinfo name for std::bad_typeid"; 337 "typeinfo name for std::bad_cast"; 338 "typeinfo name for std::exception"; 339 "typeinfo name for std::type_info"; 340 "typeinfo name for std::bad_array_new_length"; 341 342 }; 343}; 344 345GLIBCXX_3.4.9 { 346 extern "C++" { 347 "std::bad_typeid::what() const"; 348 "std::bad_cast::what() const"; 349 "std::bad_alloc::what() const"; 350 "std::bad_array_new_length::what() const"; 351 }; 352} GLIBCXX_3.4; 353 354GLIBCXX_3.4.20 { 355 extern "C++" { 356 "std::get_new_handler()"; 357 }; 358} GLIBCXX_3.4.9; 359 360GLIBCXX_3.4.22 { 361 extern "C++" { 362 "std::uncaught_exceptions()"; 363 }; 364} GLIBCXX_3.4.20; 365 366