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