1ABI Changelog 2============== 3This changelog contains information about ABI changes in libc++. Specifically 4the addition and deletion of symbols from the libc++ dylib. 5 6Each entry should start with the revision number followed by a description of 7the change. The entry should contain a summary of the ABI changes made, 8including what symbols were added, removed, or changed. 9 10To generate a summary, re-generate the new ABI list using the 11`generate-cxx-abilist` target, and look at the diff. 12 13New entries should be added directly below the "Version" header. 14 15------------ 16Version 18.0 17------------ 18 19* [libc++] Simplify the implementation of locale::id 20 21 This patch removes a symbol defined in the library for std::locale::id::__init(). 22 The symbol '__init' was defined as a private static function as part of the locale::id 23 class and was never visible from outside the dylib. The addition of this symbol to the 24 ABI was most likely accidental. The deletion of the symbol should not be a breaking change. 25 26 All platforms 27 ------------- 28 Symbol removed: _ZNSt3__16locale2id6__initEv 29 30* [libc++] Remove symbol for std::system_error from the dylib 31 32 This patch removes a symbol defined in the library for std::system_error. 33 The symbol '__init' was defined as a private static function as part of the 34 system_error class and was never visible. The addition of this symbol to the ABI was most likely accidental. 35 The function '__init' is replaced by another equivalent function which is placed in the 36 anonymous namespace of the std::system_error source code file. 37 There are no internal references to this symbol which seems to support the reasoning that 38 this was never used outside of the dylib. 39 The deletion of the symbol should not be a breaking change. 40 41 All platforms 42 ------------- 43 Symbol removed: _ZNSt3__112system_error6__initERKNS_10error_codeENS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE 44 45------------ 46Version 17.0 47------------ 48 49* [libc++] Remove symbols for a std::allocator_arg & friends from the dylib 50 51 This patch removes the symbols defined in the library for std::allocator_arg, 52 std::defer_lock, std::try_to_lock, std::adopt_lock, and std::piecewise_construct. 53 Those were defined in the library because we provided them in C++03 as an 54 extension, and in C++03 it was impossible to define them as `constexpr` 55 variables, as required by the Standard. 56 57 This is technically an ABI break since we are removing symbols from the 58 library. However, in practice, only programs compiled in C++03 mode that 59 take the address of those objects (or pass them as a reference) will have 60 an undefined ref to those symbols. In practice, this is expected to be 61 rare. First, those are C++11 features that we happen to provide in C++03, 62 and only the C++03 definition can potentially lead to code referencing 63 the dylib definition. So any code that is using these objects but compiling 64 in C++11 mode (as they should) is not at risk. Second, all uses of these 65 types in the library is done by passing those types by value to a function 66 that can get inlined. Since they are empty types, the compiler won't 67 generate an undefined reference if passed by value, since there's nothing 68 to pass anyway. 69 70 Long story short, the risk for code actually containing an undefined 71 reference to one of these types is rather small (but non-zero). 72 73 All platforms 74 ------------- 75 Symbol removed: _ZNSt3__110adopt_lockE 76 Symbol removed: _ZNSt3__110defer_lockE 77 Symbol removed: _ZNSt3__111try_to_lockE 78 Symbol removed: _ZNSt3__113allocator_argE 79 Symbol removed: _ZNSt3__119piecewise_constructE 80 81* [libc++] Remove explicit instantiations of __insertion_sort_incomplete and __sort5 from the dylib 82 83 These instantiations were never visible, because they are only used in `__sort`, which is also explicitly 84 instantiated in the dylib. 85 86 All platforms 87 ------------- 88 Symbol removed: _ZNSt3__127__insertion_sort_incompleteIRNS_6__lessIaaEEPaEEbT0_S5_T_ 89 Symbol removed: _ZNSt3__127__insertion_sort_incompleteIRNS_6__lessIccEEPcEEbT0_S5_T_ 90 Symbol removed: _ZNSt3__127__insertion_sort_incompleteIRNS_6__lessIddEEPdEEbT0_S5_T_ 91 Symbol removed: _ZNSt3__127__insertion_sort_incompleteIRNS_6__lessIeeEEPeEEbT0_S5_T_ 92 Symbol removed: _ZNSt3__127__insertion_sort_incompleteIRNS_6__lessIffEEPfEEbT0_S5_T_ 93 Symbol removed: _ZNSt3__127__insertion_sort_incompleteIRNS_6__lessIhhEEPhEEbT0_S5_T_ 94 Symbol removed: _ZNSt3__127__insertion_sort_incompleteIRNS_6__lessIiiEEPiEEbT0_S5_T_ 95 Symbol removed: _ZNSt3__127__insertion_sort_incompleteIRNS_6__lessIjjEEPjEEbT0_S5_T_ 96 Symbol removed: _ZNSt3__127__insertion_sort_incompleteIRNS_6__lessIllEEPlEEbT0_S5_T_ 97 Symbol removed: _ZNSt3__127__insertion_sort_incompleteIRNS_6__lessImmEEPmEEbT0_S5_T_ 98 Symbol removed: _ZNSt3__127__insertion_sort_incompleteIRNS_6__lessIssEEPsEEbT0_S5_T_ 99 Symbol removed: _ZNSt3__127__insertion_sort_incompleteIRNS_6__lessIttEEPtEEbT0_S5_T_ 100 Symbol removed: _ZNSt3__127__insertion_sort_incompleteIRNS_6__lessIwwEEPwEEbT0_S5_T_ 101 Symbol removed: _ZNSt3__127__insertion_sort_incompleteIRNS_6__lessIxxEEPxEEbT0_S5_T_ 102 Symbol removed: _ZNSt3__127__insertion_sort_incompleteIRNS_6__lessIyyEEPyEEbT0_S5_T_ 103 Symbol removed: _ZNSt3__17__sort5IRNS_6__lessIeeEEPeEEjT0_S5_S5_S5_S5_T_ 104 105------------ 106Version 16.0 107------------ 108 109* [libc++][PMR] Move the pmr::memory_resource destructor into the dylib 110 111 All platforms 112 ------------- 113 Symbol added: _ZNSt3__13pmr15memory_resourceD0Ev 114 Symbol added: _ZNSt3__13pmr15memory_resourceD1Ev 115 Symbol added: _ZNSt3__13pmr15memory_resourceD2Ev 116 Symbol added: _ZTVNSt3__13pmr15memory_resourceE 117 118* [libc++] [C++17] Implement <memory_resource>. 119 120 This commit adds <memory_resource> to the shared library. 121 122 All platforms 123 ------------- 124 Symbol added: _ZNKSt3__13pmr26synchronized_pool_resource11do_is_equalERKNS0_15memory_resourceE 125 Symbol added: _ZNKSt3__13pmr28unsynchronized_pool_resource12__pool_indexEmm 126 Symbol added: _ZNKSt3__13pmr28unsynchronized_pool_resource17__pool_block_sizeEi 127 Symbol added: _ZNKSt3__13pmr28unsynchronized_pool_resource22__log2_pool_block_sizeEi 128 Symbol added: _ZNKSt3__13pmr28unsynchronized_pool_resource7optionsEv 129 Symbol added: _ZNSt3__13pmr19new_delete_resourceEv 130 Symbol added: _ZNSt3__13pmr20get_default_resourceEv 131 Symbol added: _ZNSt3__13pmr20null_memory_resourceEv 132 Symbol added: _ZNSt3__13pmr20set_default_resourceEPNS0_15memory_resourceE 133 Symbol added: _ZNSt3__13pmr25monotonic_buffer_resource11do_allocateEmm 134 Symbol added: _ZNSt3__13pmr25monotonic_buffer_resource14__chunk_footer25__try_allocate_from_chunkEmm 135 Symbol added: _ZNSt3__13pmr25monotonic_buffer_resource20__initial_descriptor25__try_allocate_from_chunkEmm 136 Symbol added: _ZNSt3__13pmr28unsynchronized_pool_resource11do_allocateEmm 137 Symbol added: _ZNSt3__13pmr28unsynchronized_pool_resource12__adhoc_pool13__do_allocateEPNS0_15memory_resourceEmm 138 Symbol added: _ZNSt3__13pmr28unsynchronized_pool_resource12__adhoc_pool13__release_ptrEPNS0_15memory_resourceE 139 Symbol added: _ZNSt3__13pmr28unsynchronized_pool_resource12__adhoc_pool15__do_deallocateEPNS0_15memory_resourceEPvmm 140 Symbol added: _ZNSt3__13pmr28unsynchronized_pool_resource13do_deallocateEPvmm 141 Symbol added: _ZNSt3__13pmr28unsynchronized_pool_resource7releaseEv 142 Symbol added: _ZNSt3__13pmr28unsynchronized_pool_resourceC1ERKNS0_12pool_optionsEPNS0_15memory_resourceE 143 Symbol added: _ZNSt3__13pmr28unsynchronized_pool_resourceC2ERKNS0_12pool_optionsEPNS0_15memory_resourceE 144 Symbol added: _ZTINSt3__13pmr15memory_resourceE 145 Symbol added: _ZTINSt3__13pmr25monotonic_buffer_resourceE 146 Symbol added: _ZTINSt3__13pmr26__null_memory_resource_impE 147 Symbol added: _ZTINSt3__13pmr26synchronized_pool_resourceE 148 Symbol added: _ZTINSt3__13pmr28unsynchronized_pool_resourceE 149 Symbol added: _ZTINSt3__13pmr32__new_delete_memory_resource_impE 150 Symbol added: _ZTSNSt3__13pmr15memory_resourceE 151 Symbol added: _ZTSNSt3__13pmr25monotonic_buffer_resourceE 152 Symbol added: _ZTSNSt3__13pmr26__null_memory_resource_impE 153 Symbol added: _ZTSNSt3__13pmr26synchronized_pool_resourceE 154 Symbol added: _ZTSNSt3__13pmr28unsynchronized_pool_resourceE 155 Symbol added: _ZTSNSt3__13pmr32__new_delete_memory_resource_impE 156 Symbol added: _ZTVNSt3__13pmr25monotonic_buffer_resourceE 157 Symbol added: _ZTVNSt3__13pmr26synchronized_pool_resourceE 158 Symbol added: _ZTVNSt3__13pmr28unsynchronized_pool_resourceE 159 160------------ 161Version 15.0 162------------ 163 164* f1c30135417f - [libc++] Drop the legacy debug mode symbols by default 165 166 This commit removed symbols implementing debug mode in the non-debug 167 configuration of the library. Using the debug mode now requires a 168 differently-configured version of libc++. This is technically an ABI 169 break, however any user having been using the debug mode support previously 170 was already at risk of non-benign ODR violations, and in practice we 171 never found it to work reliably. 172 173 All platforms 174 ------------- 175 Symbol removed: _ZNKSt3__111__libcpp_db15__decrementableEPKv 176 Symbol removed: _ZNKSt3__111__libcpp_db15__find_c_from_iEPv 177 Symbol removed: _ZNKSt3__111__libcpp_db15__subscriptableEPKvl 178 Symbol removed: _ZNKSt3__111__libcpp_db17__dereferenceableEPKv 179 Symbol removed: _ZNKSt3__111__libcpp_db17__find_c_and_lockEPv 180 Symbol removed: _ZNKSt3__111__libcpp_db22__less_than_comparableEPKvS2_ 181 Symbol removed: _ZNKSt3__111__libcpp_db6unlockEv 182 Symbol removed: _ZNKSt3__111__libcpp_db8__find_cEPv 183 Symbol removed: _ZNKSt3__111__libcpp_db9__addableEPKvl 184 Symbol removed: _ZNKSt3__119__libcpp_debug_info4whatEv 185 Symbol removed: _ZNSt3__111__libcpp_db10__insert_cEPvPFPNS_8__c_nodeES1_S1_S3_E 186 Symbol removed: _ZNSt3__111__libcpp_db10__insert_iEPv 187 Symbol removed: _ZNSt3__111__libcpp_db11__insert_icEPvPKv 188 Symbol removed: _ZNSt3__111__libcpp_db15__iterator_copyEPvPKv 189 Symbol removed: _ZNSt3__111__libcpp_db16__invalidate_allEPv 190 Symbol removed: _ZNSt3__111__libcpp_db4swapEPvS1_ 191 Symbol removed: _ZNSt3__111__libcpp_db9__erase_cEPv 192 Symbol removed: _ZNSt3__111__libcpp_db9__erase_iEPv 193 Symbol removed: _ZNSt3__111__libcpp_dbC1Ev 194 Symbol removed: _ZNSt3__111__libcpp_dbC2Ev 195 Symbol removed: _ZNSt3__111__libcpp_dbD1Ev 196 Symbol removed: _ZNSt3__111__libcpp_dbD2Ev 197 Symbol removed: _ZNSt3__114__get_const_dbEv 198 Symbol removed: _ZNSt3__123__libcpp_debug_functionE 199 Symbol removed: _ZNSt3__127__libcpp_set_debug_functionEPFvRKNS_19__libcpp_debug_infoEE 200 Symbol removed: _ZNSt3__129__libcpp_abort_debug_functionERKNS_19__libcpp_debug_infoE 201 Symbol removed: _ZNSt3__18__c_node5__addEPNS_8__i_nodeE 202 Symbol removed: _ZNSt3__18__c_nodeD0Ev 203 Symbol removed: _ZNSt3__18__c_nodeD1Ev 204 Symbol removed: _ZNSt3__18__c_nodeD2Ev 205 Symbol removed: _ZNSt3__18__get_dbEv 206 Symbol removed: _ZNSt3__18__i_nodeD1Ev 207 Symbol removed: _ZNSt3__18__i_nodeD2Ev 208 Symbol removed: _ZTINSt3__18__c_nodeE 209 Symbol removed: _ZTSNSt3__18__c_nodeE 210 Symbol removed: _ZTVNSt3__18__c_nodeE 211 212* b0fd9497af6d, 7de5aca84c54 and 507125af3d0b - [libc++] Add a lightweight overridable assertion handler 213 214 This patch adds a lightweight assertion handler mechanism that can be 215 overriden at link-time in a fashion similar to `operator new`. A default 216 assertion handler is provided in the shared library, hence the added 217 symbol. 218 219 All platforms 220 ------------- 221 Symbol added: _ZNSt3__122__libcpp_verbose_abortEPKcz 222 223------------ 224Version 14.0 225------------ 226 227* abb5dd6e99df - [libc++] `to_chars` for floating point. 228 229 This commit added the `to_chars` implementation for floating point values. 230 The entire implementation resides in the dylib and the functions specified 231 in the Standard are now part of the ABI. 232 233 All platforms 234 ------------- 235 Symbol added: _ZNSt3__18to_charsEPcS0_d 236 Symbol added: _ZNSt3__18to_charsEPcS0_dNS_12chars_formatE 237 Symbol added: _ZNSt3__18to_charsEPcS0_dNS_12chars_formatEi 238 Symbol added: _ZNSt3__18to_charsEPcS0_e 239 Symbol added: _ZNSt3__18to_charsEPcS0_eNS_12chars_formatE 240 Symbol added: _ZNSt3__18to_charsEPcS0_eNS_12chars_formatEi 241 Symbol added: _ZNSt3__18to_charsEPcS0_f 242 Symbol added: _ZNSt3__18to_charsEPcS0_fNS_12chars_formatE 243 Symbol added: _ZNSt3__18to_charsEPcS0_fNS_12chars_formatEi 244 245* 049f6c29a6f0 - [libc++] Resolve missing table_size symbol 246 247 This commit added an out-of-line definition for `table_size` in the library. 248 This is not an ABI break since we are just adding a symbol to the library. 249 In fact, any program that would have attempted to refer to that symbol would 250 have previously failed to link. 251 252 <arch>-apple-darwin 253 ------------------------- 254 Symbol added: _ZNSt3__15ctypeIcE10table_sizeE 255 256 x86_64-unknown-linux-gnu 257 ------------------------ 258 Symbol added: _ZNSt3__15ctypeIcE10table_sizeE 259 260* 434dc0a5bcae - [libc++] Always define a key function for std::bad_function_call in the dylib 261 262 This commit added a new explicit instantiation of std::bad_function_call's 263 vtable in the shared library. This change is not an ABI break as it only 264 adds symbols to the library. Programs compiled against the library will not 265 rely on the vtable being defined in it by default. Reliance on the vtable 266 being in the shared library can be enabled by defining the 267 _LIBCPP_ABI_BAD_FUNCTION_CALL_KEY_FUNCTION macro. 268 269 Note that this commit also causes the libc++ shared library to start relying 270 on std::exception::what() being provided. This is due to the fact that the 271 shared library now contains the vtable for std::bad_function_call, which 272 references std::exception::what(). This shouldn't be an issue since that 273 function needs to be available to users in order to use std::bad_function_call 274 before this patch too. 275 276 All platforms 277 ------------- 278 Symbol added: _ZNSt3__117bad_function_callD0Ev 279 Symbol added: _ZNSt3__117bad_function_callD1Ev 280 Symbol added: _ZNSt3__117bad_function_callD2Ev 281 Symbol added: _ZTINSt3__117bad_function_callE 282 Symbol added: _ZTSNSt3__117bad_function_callE 283 Symbol added: _ZTVNSt3__117bad_function_callE 284 285 <arch>-unknown-linux-gnu 286 ------------------------ 287 Added dependency on symbol: _ZNKSt9exception4whatEv 288 289------------ 290Version 12.0 291------------ 292 293* a984dcaf7c21 - [libc++] [P0482] [C++20] Implement missing bits for codecvt and codecvt_byname. 294 295 This commit added new instantiations with char8_t for classes codecvt and 296 codecvt_byname in <locale> in the library. 297 298 All platforms 299 ------------- 300 Symbol added: _ZNKSt3__17codecvtIDiDu11__mbstate_tE10do_unshiftERS1_PDuS4_RS4_ 301 Symbol added: _ZNKSt3__17codecvtIDiDu11__mbstate_tE11do_encodingEv 302 Symbol added: _ZNKSt3__17codecvtIDiDu11__mbstate_tE13do_max_lengthEv 303 Symbol added: _ZNKSt3__17codecvtIDiDu11__mbstate_tE16do_always_noconvEv 304 Symbol added: _ZNKSt3__17codecvtIDiDu11__mbstate_tE5do_inERS1_PKDuS5_RS5_PDiS7_RS7_ 305 Symbol added: _ZNKSt3__17codecvtIDiDu11__mbstate_tE6do_outERS1_PKDiS5_RS5_PDuS7_RS7_ 306 Symbol added: _ZNKSt3__17codecvtIDiDu11__mbstate_tE9do_lengthERS1_PKDuS5_m 307 Symbol added: _ZNKSt3__17codecvtIDsDu11__mbstate_tE10do_unshiftERS1_PDuS4_RS4_ 308 Symbol added: _ZNKSt3__17codecvtIDsDu11__mbstate_tE11do_encodingEv 309 Symbol added: _ZNKSt3__17codecvtIDsDu11__mbstate_tE13do_max_lengthEv 310 Symbol added: _ZNKSt3__17codecvtIDsDu11__mbstate_tE16do_always_noconvEv 311 Symbol added: _ZNKSt3__17codecvtIDsDu11__mbstate_tE5do_inERS1_PKDuS5_RS5_PDsS7_RS7_ 312 Symbol added: _ZNKSt3__17codecvtIDsDu11__mbstate_tE6do_outERS1_PKDsS5_RS5_PDuS7_RS7_ 313 Symbol added: _ZNKSt3__17codecvtIDsDu11__mbstate_tE9do_lengthERS1_PKDuS5_m 314 Symbol added: _ZNSt3__114codecvt_bynameIDiDu11__mbstate_tED0Ev 315 Symbol added: _ZNSt3__114codecvt_bynameIDiDu11__mbstate_tED1Ev 316 Symbol added: _ZNSt3__114codecvt_bynameIDiDu11__mbstate_tED2Ev 317 Symbol added: _ZNSt3__114codecvt_bynameIDsDu11__mbstate_tED0Ev 318 Symbol added: _ZNSt3__114codecvt_bynameIDsDu11__mbstate_tED1Ev 319 Symbol added: _ZNSt3__114codecvt_bynameIDsDu11__mbstate_tED2Ev 320 Symbol added: _ZNSt3__17codecvtIDiDu11__mbstate_tE2idE 321 Symbol added: _ZNSt3__17codecvtIDiDu11__mbstate_tED0Ev 322 Symbol added: _ZNSt3__17codecvtIDiDu11__mbstate_tED1Ev 323 Symbol added: _ZNSt3__17codecvtIDiDu11__mbstate_tED2Ev 324 Symbol added: _ZNSt3__17codecvtIDsDu11__mbstate_tE2idE 325 Symbol added: _ZNSt3__17codecvtIDsDu11__mbstate_tED0Ev 326 Symbol added: _ZNSt3__17codecvtIDsDu11__mbstate_tED1Ev 327 Symbol added: _ZNSt3__17codecvtIDsDu11__mbstate_tED2Ev 328 Symbol added: _ZTINSt3__114codecvt_bynameIDiDu11__mbstate_tEE 329 Symbol added: _ZTINSt3__114codecvt_bynameIDsDu11__mbstate_tEE 330 Symbol added: _ZTINSt3__17codecvtIDiDu11__mbstate_tEE 331 Symbol added: _ZTINSt3__17codecvtIDsDu11__mbstate_tEE 332 Symbol added: _ZTSNSt3__17codecvtIDiDu11__mbstate_tEE 333 Symbol added: _ZTSNSt3__17codecvtIDsDu11__mbstate_tEE 334 Symbol added: _ZTVNSt3__114codecvt_bynameIDiDu11__mbstate_tEE 335 Symbol added: _ZTVNSt3__114codecvt_bynameIDsDu11__mbstate_tEE 336 Symbol added: _ZTVNSt3__17codecvtIDiDu11__mbstate_tEE 337 Symbol added: _ZTVNSt3__17codecvtIDsDu11__mbstate_tEE 338 339 <arch>-unknown-linux-gnu 340 ------------------------ 341 Symbol added: _ZTSNSt3__114codecvt_bynameIDiDu11__mbstate_tEE 342 Symbol added: _ZTSNSt3__114codecvt_bynameIDsDu11__mbstate_tEE 343 344* 997d41cdec53 - [libc++] Instantiate additional <iostream> members in the dylib 345 346 This commit added new explicit instantiations for classes in <iostream> in 347 the library. This was done after noticing that many programs that used streams 348 ended up containing weak definitions of these classes, which has a negative 349 impact on both code size and load times. This change is not an ABI break, 350 since we are just adding additional symbols. 351 352 All platforms 353 ------------- 354 Symbol added: _ZNKSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strEv 355 Symbol added: _ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE11__read_modeEv 356 Symbol added: _ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE12__write_modeEv 357 Symbol added: _ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE4openEPKcj 358 Symbol added: _ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE4swapERS3_ 359 Symbol added: _ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE4syncEv 360 Symbol added: _ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE5closeEv 361 Symbol added: _ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE5imbueERKNS_6localeE 362 Symbol added: _ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE6setbufEPcl 363 Symbol added: _ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE7seekoffExNS_8ios_base7seekdirEj 364 Symbol added: _ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE7seekposENS_4fposI11__mbstate_tEEj 365 Symbol added: _ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE8overflowEi 366 Symbol added: _ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE9pbackfailEi 367 Symbol added: _ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE9underflowEv 368 Symbol added: _ZNSt3__113basic_filebufIcNS_11char_traitsIcEEEC1EOS3_ 369 Symbol added: _ZNSt3__113basic_filebufIcNS_11char_traitsIcEEEC1Ev 370 Symbol added: _ZNSt3__113basic_filebufIcNS_11char_traitsIcEEEC2EOS3_ 371 Symbol added: _ZNSt3__113basic_filebufIcNS_11char_traitsIcEEEC2Ev 372 Symbol added: _ZNSt3__113basic_filebufIcNS_11char_traitsIcEEED0Ev 373 Symbol added: _ZNSt3__113basic_filebufIcNS_11char_traitsIcEEED1Ev 374 Symbol added: _ZNSt3__113basic_filebufIcNS_11char_traitsIcEEED2Ev 375 Symbol added: _ZNSt3__114basic_ifstreamIcNS_11char_traitsIcEEE4openEPKcj 376 Symbol added: _ZNSt3__114basic_ifstreamIcNS_11char_traitsIcEEE4openERKNS_12basic_stringIcS2_NS_9allocatorIcEEEEj 377 Symbol added: _ZNSt3__114basic_ofstreamIcNS_11char_traitsIcEEE4openEPKcj 378 Symbol added: _ZNSt3__114basic_ofstreamIcNS_11char_traitsIcEEE4openERKNS_12basic_stringIcS2_NS_9allocatorIcEEEEj 379 Symbol added: _ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strERKNS_12basic_stringIcS2_S4_EE 380 Symbol added: _ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE4swapERS5_ 381 Symbol added: _ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE7seekoffExNS_8ios_base7seekdirEj 382 Symbol added: _ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE8overflowEi 383 Symbol added: _ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE9pbackfailEi 384 Symbol added: _ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE9underflowEv 385 Symbol added: _ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEEC1EOS5_ 386 Symbol added: _ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEEC2EOS5_ 387 Symbol added: _ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEEaSEOS5_ 388 Symbol added: _ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEaSEOS5_ 389 Symbol added: _ZNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEaSEOS5_ 390 Symbol added: _ZNSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEaSEOS5_ 391 Symbol added: _ZTCNSt3__114basic_ifstreamIcNS_11char_traitsIcEEEE0_NS_13basic_istreamIcS2_EE 392 Symbol added: _ZTCNSt3__114basic_ofstreamIcNS_11char_traitsIcEEEE0_NS_13basic_ostreamIcS2_EE 393 Symbol added: _ZTCNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE0_NS_13basic_istreamIcS2_EE 394 Symbol added: _ZTCNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE0_NS_14basic_iostreamIcS2_EE 395 Symbol added: _ZTCNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE16_NS_13basic_ostreamIcS2_EE 396 Symbol added: _ZTCNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE0_NS_13basic_istreamIcS2_EE 397 Symbol added: _ZTCNSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE0_NS_13basic_ostreamIcS2_EE 398 Symbol added: _ZTINSt3__113basic_filebufIcNS_11char_traitsIcEEEE 399 Symbol added: _ZTINSt3__114basic_ifstreamIcNS_11char_traitsIcEEEE 400 Symbol added: _ZTINSt3__114basic_ofstreamIcNS_11char_traitsIcEEEE 401 Symbol added: _ZTINSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEEE 402 Symbol added: _ZTINSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE 403 Symbol added: _ZTINSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE 404 Symbol added: _ZTINSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE 405 Symbol added: _ZTSNSt3__113basic_filebufIcNS_11char_traitsIcEEEE 406 Symbol added: _ZTSNSt3__114basic_ifstreamIcNS_11char_traitsIcEEEE 407 Symbol added: _ZTSNSt3__114basic_ofstreamIcNS_11char_traitsIcEEEE 408 Symbol added: _ZTSNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEEE 409 Symbol added: _ZTSNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE 410 Symbol added: _ZTSNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE 411 Symbol added: _ZTSNSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE 412 Symbol added: _ZTTNSt3__114basic_ifstreamIcNS_11char_traitsIcEEEE 413 Symbol added: _ZTTNSt3__114basic_ofstreamIcNS_11char_traitsIcEEEE 414 Symbol added: _ZTTNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE 415 Symbol added: _ZTTNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE 416 Symbol added: _ZTTNSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE 417 Symbol added: _ZTVNSt3__113basic_filebufIcNS_11char_traitsIcEEEE 418 Symbol added: _ZTVNSt3__114basic_ifstreamIcNS_11char_traitsIcEEEE 419 Symbol added: _ZTVNSt3__114basic_ofstreamIcNS_11char_traitsIcEEEE 420 Symbol added: _ZTVNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEEE 421 Symbol added: _ZTVNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE 422 Symbol added: _ZTVNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE 423 Symbol added: _ZTVNSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE 424 425* 9b40ee8eb0c1 - [libc++] Define new/delete in libc++abi only by default 426 427 By default, libc++ does not include the definition for new and delete anymore. 428 Those were previously defined in both libc++ and libc++abi, which was an 429 ODR violation. 430 431 <arch>-apple-darwin 432 ------------------------- 433 The following symbols are now re-exported from libc++abi instead of exported 434 by libc++ directly (this should not be an ABI break): 435 436 Symbol moved: __ZdaPv 437 Symbol moved: __ZdaPvm 438 Symbol moved: __ZdaPvmSt11align_val_t 439 Symbol moved: __ZdaPvRKSt9nothrow_t 440 Symbol moved: __ZdaPvSt11align_val_t 441 Symbol moved: __ZdaPvSt11align_val_tRKSt9nothrow_t 442 Symbol moved: __ZdlPv 443 Symbol moved: __ZdlPvm 444 Symbol moved: __ZdlPvmSt11align_val_t 445 Symbol moved: __ZdlPvRKSt9nothrow_t 446 Symbol moved: __ZdlPvSt11align_val_t 447 Symbol moved: __ZdlPvSt11align_val_tRKSt9nothrow_t 448 Symbol moved: __Znam 449 Symbol moved: __ZnamRKSt9nothrow_t 450 Symbol moved: __ZnamSt11align_val_t 451 Symbol moved: __ZnamSt11align_val_tRKSt9nothrow_t 452 Symbol moved: __Znwm 453 Symbol moved: __ZnwmRKSt9nothrow_t 454 Symbol moved: __ZnwmSt11align_val_t 455 Symbol moved: __ZnwmSt11align_val_tRKSt9nothrow_t 456 457 <arch>-unknown-linux-gnu 458 ------------------------ 459 The following symbols were moved to libc++abi, but are NOT being re-exported 460 by libc++. This constitutes an ABI break if one links against libc++ but 461 not libc++abi. 462 463 Symbol moved: _ZdaPv 464 Symbol moved: _ZdaPvm 465 Symbol moved: _ZdaPvmSt11align_val_t 466 Symbol moved: _ZdaPvRKSt9nothrow_t 467 Symbol moved: _ZdaPvSt11align_val_t 468 Symbol moved: _ZdaPvSt11align_val_tRKSt9nothrow_t 469 Symbol moved: _ZdlPv 470 Symbol moved: _ZdlPvm 471 Symbol moved: _ZdlPvmSt11align_val_t 472 Symbol moved: _ZdlPvRKSt9nothrow_t 473 Symbol moved: _ZdlPvSt11align_val_t 474 Symbol moved: _ZdlPvSt11align_val_tRKSt9nothrow_t 475 Symbol moved: _Znam 476 Symbol moved: _ZnamRKSt9nothrow_t 477 Symbol moved: _ZnamSt11align_val_t 478 Symbol moved: _ZnamSt11align_val_tRKSt9nothrow_t 479 Symbol moved: _Znwm 480 Symbol moved: _ZnwmRKSt9nothrow_t 481 Symbol moved: _ZnwmSt11align_val_t 482 Symbol moved: _ZnwmSt11align_val_tRKSt9nothrow_t 483 484* 4f13b9992971 - [libc++] Simplify how we re-export symbols from libc++abi 485 486 We re-export some symbols that were exported from libc++abi but not from 487 libc++. Exporting new symbols is not an ABI break. 488 489 <arch>-apple-darwin 490 ------------------- 491 Symbol added: ___cxa_allocate_dependent_exception 492 Symbol added: ___cxa_free_dependent_exception 493 494------------ 495Version 10.0 496------------ 497 498* 54fa9ecd3088 - [libc++] Implementation of C++20's P1135R6 for libcxx 499 500 libc++ now implements P1135R6 (The C++20 Synchronization Library), which 501 adds a few symbols to the dylib. This is backwards-compatible since we're 502 just adding new symbols. 503 504 All platforms 505 ------------- 506 Symbol added: __ZNSt3__120__libcpp_atomic_waitEPVKNS_17__cxx_atomic_implIxNS_22__cxx_atomic_base_implIxEEEEx 507 Symbol added: __ZNSt3__120__libcpp_atomic_waitEPVKvx 508 Symbol added: __ZNSt3__123__cxx_atomic_notify_allEPVKNS_17__cxx_atomic_implIxNS_22__cxx_atomic_base_implIxEEEE 509 Symbol added: __ZNSt3__123__cxx_atomic_notify_allEPVKv 510 Symbol added: __ZNSt3__123__cxx_atomic_notify_oneEPVKNS_17__cxx_atomic_implIxNS_22__cxx_atomic_base_implIxEEEE 511 Symbol added: __ZNSt3__123__cxx_atomic_notify_oneEPVKv 512 Symbol added: __ZNSt3__123__libcpp_atomic_monitorEPVKNS_17__cxx_atomic_implIxNS_22__cxx_atomic_base_implIxEEEE 513 Symbol added: __ZNSt3__123__libcpp_atomic_monitorEPVKv 514 Symbol added: __ZNSt3__131__arrive_barrier_algorithm_baseEPNS_24__barrier_algorithm_baseEh 515 Symbol added: __ZNSt3__132__destroy_barrier_algorithm_baseEPNS_24__barrier_algorithm_baseE 516 Symbol added: __ZNSt3__134__construct_barrier_algorithm_baseERl 517 518----------- 519Version 9.0 520----------- 521 522* r358690 - Re-rexport missing symbols from libc++abi 523 524 libc++ now re-exports `__cxa_throw_bad_array_new_length` and `__cxa_uncaught_exceptions`, 525 both of which are provided by libc++abi. This is not an ABI break because 526 we're just adding symbols. Also, this does mean that libc++ can't be linked 527 against an older version of libc++abi that doesn't provide those symbols, 528 however doing so is not supported anyway. 529 530 <arch>-apple-darwin 531 ------------------- 532 Symbol added: ___cxa_throw_bad_array_new_length 533 Symbol added: ___cxa_uncaught_exceptions 534 535* r356518 - Integrate <filesystem> support into the shared library 536 537 This patch introduces support for <filesystem> into the shared library, 538 instead of requiring users to manually link against a static archive. As 539 such, new symbols required to implement <filesystem> are exported from 540 the shared library. 541 542 All platforms 543 ------------- 544 Symbol added: _ZNKSt3__14__fs10filesystem18directory_iterator13__dereferenceEv 545 Symbol added: _ZNKSt3__14__fs10filesystem28recursive_directory_iterator13__dereferenceEv 546 Symbol added: _ZNKSt3__14__fs10filesystem28recursive_directory_iterator5depthEv 547 Symbol added: _ZNKSt3__14__fs10filesystem28recursive_directory_iterator7optionsEv 548 Symbol added: _ZNKSt3__14__fs10filesystem4path10__filenameEv 549 Symbol added: _ZNKSt3__14__fs10filesystem4path11__extensionEv 550 Symbol added: _ZNKSt3__14__fs10filesystem4path11__root_nameEv 551 Symbol added: _ZNKSt3__14__fs10filesystem4path13__parent_pathEv 552 Symbol added: _ZNKSt3__14__fs10filesystem4path15__relative_pathEv 553 Symbol added: _ZNKSt3__14__fs10filesystem4path15__root_path_rawEv 554 Symbol added: _ZNKSt3__14__fs10filesystem4path16__root_directoryEv 555 Symbol added: _ZNKSt3__14__fs10filesystem4path16lexically_normalEv 556 Symbol added: _ZNKSt3__14__fs10filesystem4path18lexically_relativeERKS2_ 557 Symbol added: _ZNKSt3__14__fs10filesystem4path3endEv 558 Symbol added: _ZNKSt3__14__fs10filesystem4path5beginEv 559 Symbol added: _ZNKSt3__14__fs10filesystem4path6__stemEv 560 Symbol added: _ZNKSt3__14__fs10filesystem4path9__compareENS_17basic_string_viewIcNS_11char_traitsIcEEEE 561 Symbol added: _ZNSt3__14__fs10filesystem10__absoluteERKNS1_4pathEPNS_10error_codeE 562 Symbol added: _ZNSt3__14__fs10filesystem10hash_valueERKNS1_4pathE 563 Symbol added: _ZNSt3__14__fs10filesystem11__canonicalERKNS1_4pathEPNS_10error_codeE 564 Symbol added: _ZNSt3__14__fs10filesystem11__copy_fileERKNS1_4pathES4_NS1_12copy_optionsEPNS_10error_codeE 565 Symbol added: _ZNSt3__14__fs10filesystem11__file_sizeERKNS1_4pathEPNS_10error_codeE 566 Symbol added: _ZNSt3__14__fs10filesystem12__equivalentERKNS1_4pathES4_PNS_10error_codeE 567 Symbol added: _ZNSt3__14__fs10filesystem12__remove_allERKNS1_4pathEPNS_10error_codeE 568 Symbol added: _ZNSt3__14__fs10filesystem13__fs_is_emptyERKNS1_4pathEPNS_10error_codeE 569 Symbol added: _ZNSt3__14__fs10filesystem13__permissionsERKNS1_4pathENS1_5permsENS1_12perm_optionsEPNS_10error_codeE 570 Symbol added: _ZNSt3__14__fs10filesystem13__resize_fileERKNS1_4pathEmPNS_10error_codeE 571 Symbol added: _ZNSt3__14__fs10filesystem14__copy_symlinkERKNS1_4pathES4_PNS_10error_codeE 572 Symbol added: _ZNSt3__14__fs10filesystem14__current_pathEPNS_10error_codeE 573 Symbol added: _ZNSt3__14__fs10filesystem14__current_pathERKNS1_4pathEPNS_10error_codeE 574 Symbol added: _ZNSt3__14__fs10filesystem14__read_symlinkERKNS1_4pathEPNS_10error_codeE 575 Symbol added: _ZNSt3__14__fs10filesystem15directory_entry12__do_refreshEv 576 Symbol added: _ZNSt3__14__fs10filesystem16__create_symlinkERKNS1_4pathES4_PNS_10error_codeE 577 Symbol added: _ZNSt3__14__fs10filesystem16__symlink_statusERKNS1_4pathEPNS_10error_codeE 578 Symbol added: _ZNSt3__14__fs10filesystem16_FilesystemClock3nowEv 579 Symbol added: _ZNSt3__14__fs10filesystem16_FilesystemClock9is_steadyE 580 Symbol added: _ZNSt3__14__fs10filesystem16filesystem_error13__create_whatEi 581 Symbol added: _ZNSt3__14__fs10filesystem16filesystem_errorD0Ev 582 Symbol added: _ZNSt3__14__fs10filesystem16filesystem_errorD1Ev 583 Symbol added: _ZNSt3__14__fs10filesystem16filesystem_errorD2Ev 584 Symbol added: _ZNSt3__14__fs10filesystem17__hard_link_countERKNS1_4pathEPNS_10error_codeE 585 Symbol added: _ZNSt3__14__fs10filesystem17__last_write_timeERKNS1_4pathENS_6chrono10time_pointINS1_16_FilesystemClockENS5_8durationInNS_5ratioILl1ELl1000000000EEEEEEEPNS_10error_codeE 586 Symbol added: _ZNSt3__14__fs10filesystem17__last_write_timeERKNS1_4pathEPNS_10error_codeE 587 Symbol added: _ZNSt3__14__fs10filesystem18__create_directoryERKNS1_4pathEPNS_10error_codeE 588 Symbol added: _ZNSt3__14__fs10filesystem18__create_directoryERKNS1_4pathES4_PNS_10error_codeE 589 Symbol added: _ZNSt3__14__fs10filesystem18__create_hard_linkERKNS1_4pathES4_PNS_10error_codeE 590 Symbol added: _ZNSt3__14__fs10filesystem18__weakly_canonicalERKNS1_4pathEPNS_10error_codeE 591 Symbol added: _ZNSt3__14__fs10filesystem18directory_iterator11__incrementEPNS_10error_codeE 592 Symbol added: _ZNSt3__14__fs10filesystem18directory_iteratorC1ERKNS1_4pathEPNS_10error_codeENS1_17directory_optionsE 593 Symbol added: _ZNSt3__14__fs10filesystem18directory_iteratorC2ERKNS1_4pathEPNS_10error_codeENS1_17directory_optionsE 594 Symbol added: _ZNSt3__14__fs10filesystem20__create_directoriesERKNS1_4pathEPNS_10error_codeE 595 Symbol added: _ZNSt3__14__fs10filesystem21__temp_directory_pathEPNS_10error_codeE 596 Symbol added: _ZNSt3__14__fs10filesystem26__create_directory_symlinkERKNS1_4pathES4_PNS_10error_codeE 597 Symbol added: _ZNSt3__14__fs10filesystem28recursive_directory_iterator11__incrementEPNS_10error_codeE 598 Symbol added: _ZNSt3__14__fs10filesystem28recursive_directory_iterator15__try_recursionEPNS_10error_codeE 599 Symbol added: _ZNSt3__14__fs10filesystem28recursive_directory_iterator5__popEPNS_10error_codeE 600 Symbol added: _ZNSt3__14__fs10filesystem28recursive_directory_iterator9__advanceEPNS_10error_codeE 601 Symbol added: _ZNSt3__14__fs10filesystem28recursive_directory_iteratorC1ERKNS1_4pathENS1_17directory_optionsEPNS_10error_codeE 602 Symbol added: _ZNSt3__14__fs10filesystem28recursive_directory_iteratorC2ERKNS1_4pathENS1_17directory_optionsEPNS_10error_codeE 603 Symbol added: _ZNSt3__14__fs10filesystem4path17replace_extensionERKS2_ 604 Symbol added: _ZNSt3__14__fs10filesystem4path19preferred_separatorE 605 Symbol added: _ZNSt3__14__fs10filesystem4path8iterator11__decrementEv 606 Symbol added: _ZNSt3__14__fs10filesystem4path8iterator11__incrementEv 607 Symbol added: _ZNSt3__14__fs10filesystem6__copyERKNS1_4pathES4_NS1_12copy_optionsEPNS_10error_codeE 608 Symbol added: _ZNSt3__14__fs10filesystem7__spaceERKNS1_4pathEPNS_10error_codeE 609 Symbol added: _ZNSt3__14__fs10filesystem8__removeERKNS1_4pathEPNS_10error_codeE 610 Symbol added: _ZNSt3__14__fs10filesystem8__renameERKNS1_4pathES4_PNS_10error_codeE 611 Symbol added: _ZNSt3__14__fs10filesystem8__statusERKNS1_4pathEPNS_10error_codeE 612 Symbol added: _ZTINSt3__14__fs10filesystem16filesystem_errorE 613 Symbol added: _ZTSNSt3__14__fs10filesystem16filesystem_errorE 614 Symbol added: _ZTVNSt3__14__fs10filesystem16filesystem_errorE 615 616* r356417 - Remove exception throwing debug mode handler support. 617 618 The reason libc++ implemented a throwing debug mode handler was for ease of testing. Specifically, 619 I thought that if a debug violation aborted, we could only test one violation per file. This made 620 it impossible to test debug mode. Which throwing behavior we could test more! 621 622 However, the throwing approach didn't work either, since there are debug violations underneath noexcept 623 functions. This lead to the introduction of `_NOEXCEPT_DEBUG`, which was only noexcept when debug 624 mode was off. 625 626 Having thought more and having grown wiser, `_NOEXCEPT_DEBUG` was a horrible decision. It was 627 viral, it didn't cover all the cases it needed to, and it was observable to the user -- at worst 628 changing the behavior of their program. 629 630 This patch removes the throwing debug handler, and rewrites the debug tests using 'fork-ing' style 631 death tests. 632 633 All Platforms (ignoring versioning namespaces) 634 ---------------------------------------------- 635 Symbol added: _ZNKSt3__119__libcpp_debug_info4whatEv 636 Symbol removed: _ZNKSt3__124__libcpp_debug_exception4whatEv 637 Symbol removed: _ZNSt3__124__libcpp_debug_exceptionC1ERKNS_19__libcpp_debug_infoE 638 Symbol removed: _ZNSt3__124__libcpp_debug_exceptionC1ERKS0_ 639 Symbol removed: _ZNSt3__124__libcpp_debug_exceptionC1Ev 640 Symbol removed: _ZNSt3__124__libcpp_debug_exceptionC2ERKNS_19__libcpp_debug_infoE 641 Symbol removed: _ZNSt3__124__libcpp_debug_exceptionC2ERKS0_ 642 Symbol removed: _ZNSt3__124__libcpp_debug_exceptionC2Ev 643 Symbol removed: _ZNSt3__124__libcpp_debug_exceptionD0Ev 644 Symbol removed: _ZNSt3__124__libcpp_debug_exceptionD1Ev 645 Symbol removed: _ZNSt3__124__libcpp_debug_exceptionD2Ev 646 Symbol removed: _ZNSt3__129__libcpp_throw_debug_functionERKNS_19__libcpp_debug_infoE 647 Symbol removed: _ZTINSt3__124__libcpp_debug_exceptionE 648 Symbol removed: _ZTSNSt3__124__libcpp_debug_exceptionE 649 Symbol removed: _ZTVNSt3__124__libcpp_debug_exceptionE 650 651 <arch>-apple-darwin 652 ------------------- 653 Symbol added: __ZNSt3__111__libcpp_db10__insert_cEPvPFPNS_8__c_nodeES1_S1_S3_E 654 Symbol removed: __ZNSt3__111__libcpp_db10__insert_cEPv 655 656* r355367 - Fix -fsanitize=vptr badness in <__debug> 657 658 This patch fixes a lifetime bug when inserting a new container into the debug database. It is 659 diagnosed by UBSAN when debug mode is enabled. This patch corrects how nodes are constructed 660 during insertion. 661 662 The fix requires unconditionally breaking the debug mode ABI. Users should not expect ABI 663 stability from debug mode. 664 665 All platforms 666 ------------- 667 Symbol added: _ZNSt3__111__libcpp_db10__insert_cEPvPFPNS_8__c_nodeES1_S1_S3_E 668 Symbol removed: _ZNSt3__111__libcpp_db10__insert_cEPv 669 670----------- 671Version 8.0 672----------- 673 674* r347903 - Remove std::bad_array_length 675 676 The change removes the definition of std::bad_array_length (which never made 677 it into the standard) from the headers and the dylib. This is technically an 678 ABI break because the symbols are shipped starting with mac OSX 10.13, however 679 users couldn't be relying on the functionality because it is marked as being 680 unavailable using Clang's availability attribute. 681 682 <arch>-apple-darwin 683 ------------------- 684 Symbol removed: __ZNKSt16bad_array_length4whatEv 685 Symbol removed: __ZNKSt16bad_array_length4whatEv 686 Symbol removed: __ZNSt16bad_array_lengthC1Ev 687 Symbol removed: __ZNSt16bad_array_lengthC1Ev 688 Symbol removed: __ZNSt16bad_array_lengthC2Ev 689 Symbol removed: __ZNSt16bad_array_lengthC2Ev 690 Symbol removed: __ZNSt16bad_array_lengthD0Ev 691 Symbol removed: __ZNSt16bad_array_lengthD0Ev 692 Symbol removed: __ZNSt16bad_array_lengthD1Ev 693 Symbol removed: __ZNSt16bad_array_lengthD1Ev 694 Symbol removed: __ZNSt16bad_array_lengthD2Ev 695 Symbol removed: __ZNSt16bad_array_lengthD2Ev 696 Symbol removed: __ZTISt16bad_array_length 697 Symbol removed: __ZTISt16bad_array_length 698 Symbol removed: __ZTSSt16bad_array_length 699 Symbol removed: __ZTSSt16bad_array_length 700 Symbol removed: __ZTVSt16bad_array_length 701 Symbol removed: __ZTVSt16bad_array_length 702 703* r347395 - Making libc++ build under -fvisibility=hidden on Linux 704 705 The change marks several function templates as hidden. This removes symbols 706 from the shared library, but this is not an ABI break because it's impossible 707 for programs linking against libc++.so to actually depend on that symbol. 708 The reason is that the symbol is exported from the shared library through 709 an implicit instantiation present in the shared object itself only. Furthermore, 710 if a user's shared object was implicitly instantiating one of these functions, 711 marking that symbol as hidden would not be an ABI break for them because none 712 of their users could actually be using the symbol in their dylib (because 713 it's an implicit instantiation). 714 715 x86_64-linux-gnu 716 ---------------- 717 Symbol removed: _ZNSt3__125__num_get_signed_integralIlEET_PKcS3_Rji 718 Symbol removed: _ZNSt3__125__num_get_signed_integralIxEET_PKcS3_Rji 719 Symbol removed: _ZNSt3__127__num_get_unsigned_integralIjEET_PKcS3_Rji 720 Symbol removed: _ZNSt3__127__num_get_unsigned_integralImEET_PKcS3_Rji 721 Symbol removed: _ZNSt3__127__num_get_unsigned_integralItEET_PKcS3_Rji 722 Symbol removed: _ZNSt3__127__num_get_unsigned_integralIyEET_PKcS3_Rji 723 Symbol removed: _ZNSt3__17__sort5IRNS_6__lessIaaEEPaEEjT0_S5_S5_S5_S5_T_ 724 Symbol removed: _ZNSt3__17__sort5IRNS_6__lessIccEEPcEEjT0_S5_S5_S5_S5_T_ 725 Symbol removed: _ZNSt3__17__sort5IRNS_6__lessIddEEPdEEjT0_S5_S5_S5_S5_T_ 726 Symbol removed: _ZNSt3__17__sort5IRNS_6__lessIffEEPfEEjT0_S5_S5_S5_S5_T_ 727 Symbol removed: _ZNSt3__17__sort5IRNS_6__lessIhhEEPhEEjT0_S5_S5_S5_S5_T_ 728 Symbol removed: _ZNSt3__17__sort5IRNS_6__lessIiiEEPiEEjT0_S5_S5_S5_S5_T_ 729 Symbol removed: _ZNSt3__17__sort5IRNS_6__lessIjjEEPjEEjT0_S5_S5_S5_S5_T_ 730 Symbol removed: _ZNSt3__17__sort5IRNS_6__lessIllEEPlEEjT0_S5_S5_S5_S5_T_ 731 Symbol removed: _ZNSt3__17__sort5IRNS_6__lessImmEEPmEEjT0_S5_S5_S5_S5_T_ 732 Symbol removed: _ZNSt3__17__sort5IRNS_6__lessIssEEPsEEjT0_S5_S5_S5_S5_T_ 733 Symbol removed: _ZNSt3__17__sort5IRNS_6__lessIttEEPtEEjT0_S5_S5_S5_S5_T_ 734 Symbol removed: _ZNSt3__17__sort5IRNS_6__lessIwwEEPwEEjT0_S5_S5_S5_S5_T_ 735 Symbol removed: _ZNSt3__17__sort5IRNS_6__lessIxxEEPxEEjT0_S5_S5_S5_S5_T_ 736 Symbol removed: _ZNSt3__17__sort5IRNS_6__lessIyyEEPyEEjT0_S5_S5_S5_S5_T_ 737 Symbol removed: _ZNSt3__1plIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_12basic_stringIT_T0_T1_EERKS9_PKS6_ 738 Symbol removed: _ZSt18make_exception_ptrINSt3__112future_errorEESt13exception_ptrT_ 739 740* r345260 - Making libc++ build under -fvisibility=hidden on Mac OS 741 742 The change marks __thread_specific_ptr<__thread_struct>::__at_thread_exit(void*) 743 with hidden visibility. This removes a symbol from the shared libraries, 744 however this is not an ABI break because it's impossible for programs linking 745 against libc++.dylib to actually depend on that symbol. The reason is that 746 the symbol is exported from the shared library through an implicit 747 instantiation present in the dylib itself only. Furthermore, if a user's 748 dylib was implicitly instantiating __thread_specific_ptr<T>::__at_thread_exit 749 (because it's defined in the headers), marking that symbol as hidden would 750 not be an ABI break for them because none of their users could actually be 751 using the symbol in their dylib (because it's an implicit instantiation). 752 753 This change also marks __start_std_streams as hidden -- this variable is 754 only required to initialize the streams, and nobody should depend on it 755 from outside the dylib. 756 757 x86_64-linux-gnu 758 ---------------- 759 Symbol removed: _ZNSt3__121__thread_specific_ptrINS_15__thread_structEE16__at_thread_exitEPv 760 Symbol removed: _ZNSt3__119__start_std_streamsE 761 762 <arch>-apple-darwin 763 ------------------- 764 Symbol removed: __ZNSt3__221__thread_specific_ptrINS_15__thread_structEE16__at_thread_exitEPv 765 Symbol removed: __ZNSt3__119__start_std_streamsE 766 767----------- 768Version 7.0 769----------- 770 771* r338479 - Elementary string conversions for integral types 772 773 The change emits __u64toa and __u32toa under std::__1::__itoa. 774 775 x86_64-linux-gnu 776 ---------------- 777 Symbol added: _ZNSt3__16__itoa8__u64toaEmPc 778 Symbol added: _ZNSt3__16__itoa8__u32toaEjPc 779 780 <arch>-apple-darwin 781 ------------------- 782 Symbol added: __ZNSt3__16__itoa8__u64toaEyPc 783 Symbol added: __ZNSt3__16__itoa8__u32toaEjPc 784 785 786* r333467 - Fix embarrasing typo in uncaught_exceptions. 787 788 This bug caused __uncaught_exception to be ODR used instead of 789 __uncaught_exceptions. This change is non-ABI breaking because the symbols 790 for std::uncaught_exception and std::uncaught_exceptions haven't changed, 791 and because users shouldn't be depending directly on libc++ exporting 792 __uncaught_exception/__uncaught_exceptions. 793 794 All Platforms 795 ---------------- 796 Symbol removed: __cxa_uncaught_exception 797 Symbol added: __cxa_uncaught_exceptions 798 799----------- 800Version 5.0 801----------- 802 803* r313500 - Fix undefined "___cxa_deleted_virtual" symbol in macosx 804 805 x86_64-linux-gnu 806 ---------------- 807 No changes 808 809 <arch>-apple-darwin 810 ------------------- 811 Symbol added: ___cxa_deleted_virtual 812 813* r296729 - Remove std::num_get template methods which should be inline 814 815 These functions should never have had visible definitions in the dylib but 816 since they were previously not specified with 'inline' they accidentally 817 got emitted. This change is non-ABI breaking because every "linkage unit" 818 must contain its own definition. 819 820 x86_64-linux-gnu 821 ---------------- 822 Symbol removed: _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE15__do_get_signedIlEES4_S4_S4_RNS_8ios_baseERjRT_ 823 Symbol removed: _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE15__do_get_signedIxEES4_S4_S4_RNS_8ios_baseERjRT_ 824 Symbol removed: _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__do_get_unsignedIjEES4_S4_S4_RNS_8ios_baseERjRT_ 825 Symbol removed: _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__do_get_unsignedImEES4_S4_S4_RNS_8ios_baseERjRT_ 826 Symbol removed: _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__do_get_unsignedItEES4_S4_S4_RNS_8ios_baseERjRT_ 827 Symbol removed: _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__do_get_unsignedIyEES4_S4_S4_RNS_8ios_baseERjRT_ 828 Symbol removed: _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE23__do_get_floating_pointIdEES4_S4_S4_RNS_8ios_baseERjRT_ 829 Symbol removed: _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE23__do_get_floating_pointIeEES4_S4_S4_RNS_8ios_baseERjRT_ 830 Symbol removed: _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE23__do_get_floating_pointIfEES4_S4_S4_RNS_8ios_baseERjRT_ 831 Symbol removed: _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE15__do_get_signedIlEES4_S4_S4_RNS_8ios_baseERjRT_ 832 Symbol removed: _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE15__do_get_signedIxEES4_S4_S4_RNS_8ios_baseERjRT_ 833 Symbol removed: _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_get_unsignedIjEES4_S4_S4_RNS_8ios_baseERjRT_ 834 Symbol removed: _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_get_unsignedImEES4_S4_S4_RNS_8ios_baseERjRT_ 835 Symbol removed: _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_get_unsignedItEES4_S4_S4_RNS_8ios_baseERjRT_ 836 Symbol removed: _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_get_unsignedIyEES4_S4_S4_RNS_8ios_baseERjRT_ 837 Symbol removed: _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE23__do_get_floating_pointIdEES4_S4_S4_RNS_8ios_baseERjRT_ 838 Symbol removed: _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE23__do_get_floating_pointIeEES4_S4_S4_RNS_8ios_baseERjRT_ 839 Symbol removed: _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE23__do_get_floating_pointIfEES4_S4_S4_RNS_8ios_baseERjRT_ 840 841 <arch>-apple-darwin 842 ------------------- 843 No changes 844 845----------- 846Version 4.0 847----------- 848 849* r290651 - Add _LIBCPP_ASSERT debug handling functions 850 851 All Platforms 852 ------------- 853 Symbol added: _ZNSt3__124__libcpp_debug_exceptionC2ERKNS_19__libcpp_debug_infoE 854 Symbol added: _ZNSt3__124__libcpp_debug_exceptionD1Ev 855 Symbol added: _ZTINSt3__124__libcpp_debug_exceptionE 856 Symbol added: _ZNSt3__129__libcpp_throw_debug_functionERKNS_19__libcpp_debug_infoE 857 Symbol added: _ZNSt3__124__libcpp_debug_exceptionD2Ev 858 Symbol added: _ZNSt3__129__libcpp_abort_debug_functionERKNS_19__libcpp_debug_infoE 859 Symbol added: _ZNSt3__124__libcpp_debug_exceptionC2ERKS0_ 860 Symbol added: _ZNSt3__124__libcpp_debug_exceptionC1Ev 861 Symbol added: _ZNSt3__124__libcpp_debug_exceptionC1ERKNS_19__libcpp_debug_infoE 862 Symbol added: _ZNSt3__124__libcpp_debug_exceptionC2Ev 863 Symbol added: _ZTSNSt3__124__libcpp_debug_exceptionE 864 Symbol added: _ZNSt3__123__libcpp_debug_functionE 865 Symbol added: _ZNKSt3__124__libcpp_debug_exception4whatEv 866 Symbol added: _ZNSt3__124__libcpp_debug_exceptionC1ERKS0_ 867 Symbol added: _ZNSt3__124__libcpp_debug_exceptionD0Ev 868 Symbol added: _ZTVNSt3__124__libcpp_debug_exceptionE 869 Symbol added: _ZNSt3__127__libcpp_set_debug_functionEPFvRKNS_19__libcpp_debug_infoEE 870 871* r288547 - Implement C++17 <variant> 872 873 All Platforms 874 ------------- 875 Symbol added: _ZTVSt18bad_variant_access 876 Symbol added: _ZTISt18bad_variant_access 877 Symbol added: _ZTSSt18bad_variant_access 878 Symbol added: _ZNKSt18bad_variant_access4whatEv 879 880* r285537 - Remove std::string::append template methods which should be inline 881 882 These functions should never have had visible definitions in the dylib but 883 since they were previously not specified with 'inline' they accidentally 884 got emitted. This change is non-ABI breaking because every "linkage unit" 885 must contain its own definition. 886 887 x86_64-linux-gnu 888 ---------------- 889 Symbol removed: _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendIPcEENS_9enable_ifIXaasr21__is_forward_iteratorIT_EE5valuesr38__libcpp_string_gets_noexcept_iteratorIS9_EE5valueERS5_E4typeES9_S9_ 890 Symbol removed: _ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6appendIPwEENS_9enable_ifIXaasr21__is_forward_iteratorIT_EE5valuesr38__libcpp_string_gets_noexcept_iteratorIS9_EE5valueERS5_E4typeES9_S9_ 891 892 <arch>-apple-darwin 893 ------------------- 894 No changes 895 896* r285101 - Add -fvisibility-inlines-hidden when building libc++. 897 898 Although this change removes symbols, it should still be non-ABI breaking 899 since all of the definitions removed are inline functions. For this reason 900 removing these symbols is safe because every "linkage unit" which uses these 901 functions will contain their own definition. 902 903 x86_64-linux-gnu 904 ---------------- 905 Symbol removed: _ZNSt12bad_any_castD0Ev 906 Symbol removed: _ZNSt12experimental15fundamentals_v112bad_any_castD0Ev 907 Symbol removed: _ZNSt3__114__codecvt_utf8IDiED0Ev 908 Symbol removed: _ZNSt3__114__codecvt_utf8IDsED0Ev 909 Symbol removed: _ZNSt3__114__codecvt_utf8IwED0Ev 910 Symbol removed: _ZNSt3__115__codecvt_utf16IDiLb0EED0Ev 911 Symbol removed: _ZNSt3__115__codecvt_utf16IDiLb1EED0Ev 912 Symbol removed: _ZNSt3__115__codecvt_utf16IDsLb0EED0Ev 913 Symbol removed: _ZNSt3__115__codecvt_utf16IDsLb1EED0Ev 914 Symbol removed: _ZNSt3__115__codecvt_utf16IwLb0EED0Ev 915 Symbol removed: _ZNSt3__115__codecvt_utf16IwLb1EED0Ev 916 Symbol removed: _ZNSt3__117__assoc_sub_stateD0Ev 917 Symbol removed: _ZNSt3__117__assoc_sub_stateD2Ev 918 Symbol removed: _ZNSt3__117__libcpp_sscanf_lEPKcP15__locale_structS1_z 919 Symbol removed: _ZNSt3__119__libcpp_asprintf_lEPPcP15__locale_structPKcz 920 Symbol removed: _ZNSt3__119__libcpp_snprintf_lEPcmP15__locale_structPKcz 921 Symbol removed: _ZNSt3__120__codecvt_utf8_utf16IDiED0Ev 922 Symbol removed: _ZNSt3__120__codecvt_utf8_utf16IDsED0Ev 923 Symbol removed: _ZNSt3__120__codecvt_utf8_utf16IwED0Ev 924 925 <arch>-apple-darwin 926 ------------------- 927 No Changes - inline symbols are already hidden 928 929* r284206 - Implement C++17 aligned allocation in <new> 930 931 x86_64-linux-gnu 932 ---------------- 933 Symbol added: _ZdaPvSt11align_val_t 934 Symbol added: _ZdlPvSt11align_val_t 935 Symbol added: _ZnamSt11align_val_t 936 Symbol added: _ZdaPvmSt11align_val_t 937 Symbol added: _ZdlPvmSt11align_val_t 938 Symbol added: _ZdlPvSt11align_val_tRKSt9nothrow_t 939 Symbol added: _ZnwmSt11align_val_tRKSt9nothrow_t 940 Symbol added: _ZnamSt11align_val_tRKSt9nothrow_t 941 Symbol added: _ZdaPvSt11align_val_tRKSt9nothrow_t 942 Symbol added: _ZnwmSt11align_val_t 943 944* r283980 - Implement C++17 <optional> 945 946 x86_64-linux-gnu 947 ---------------- 948 Symbol added: _ZTISt19bad_optional_access 949 Symbol added: _ZNSt19bad_optional_accessD0Ev 950 Symbol added: _ZNSt19bad_optional_accessD1Ev 951 Symbol added: _ZNSt19bad_optional_accessD2Ev 952 Symbol added: _ZTVSt19bad_optional_access 953 Symbol added: _ZTSSt19bad_optional_access 954 955* r278310 - Implement C++17 <any> 956 957 x86_64-linux-gnu 958 ---------------- 959 Symbol added: _ZNKSt12bad_any_cast4whatEv 960 Symbol added: _ZNSt12bad_any_castD0Ev 961 Symbol added: _ZTISt12bad_any_cast 962 Symbol added: _ZTSSt12bad_any_cast 963 Symbol added: _ZTVSt12bad_any_cast 964 965* r295398 - Remove basic_string::insert and basic_string::replace template methods which should be inline. 966 967 These functions should never have had visible definitions in the dylib but 968 since they were previously not specified with 'inline' they accidentally 969 got emitted. This change is non-ABI breaking because every "linkage unit" 970 must contain its own definition. 971 972 x86_64-linux-gnu 973 ---------------- 974 Symbol removed: _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6insertIPKcEENS_9enable_ifIXaasr21__is_forward_iteratorIT_EE5valuesr38__libcpp_string_gets_noexcept_iteratorISA_EE5valueENS_11__wrap_iterIPcEEE4typeENSB_IS8_EESA_SA_ 975 Symbol removed: _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7replaceIPKcEENS_9enable_ifIXsr19__is_input_iteratorIT_EE5valueERS5_E4typeENS_11__wrap_iterIS8_EESF_SA_SA_ 976 Symbol removed: _ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6insertIPKwEENS_9enable_ifIXaasr21__is_forward_iteratorIT_EE5valuesr38__libcpp_string_gets_noexcept_iteratorISA_EE5valueENS_11__wrap_iterIPwEEE4typeENSB_IS8_EESA_SA_ 977 Symbol removed: _ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7replaceIPKwEENS_9enable_ifIXsr19__is_input_iteratorIT_EE5valueERS5_E4typeENS_11__wrap_iterIS8_EESF_SA_SA_ 978