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