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