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