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