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