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