blob: 782a9b7015a0bd756f395be5ae2e2e490d4c183b [file] [log] [blame]
ABI Changelog
==============
This changelog contains information about ABI changes in libc++. Specifically
the addition and deletion of symbols from the libc++ dylib.
Each entry should start with the revision number followed by a description of
the change. The entry should contain a summary of the ABI changes made,
including what symbols were added, removed, or changed.
To generate a summary use "sym_diff.py" diffing against the appropriate ABI list.
Afterwards the ABI list should be updated to include the new changes.
New entries should be added directly below the "Version" header.
-----------
Version 9.0
-----------
* rXXXXX - Re-rexport missing symbols from libc++abi
libc++ now re-exports `__cxa_throw_bad_array_new_length` and `__cxa_uncaught_exceptions`,
both of which are provided by libc++abi. This is not an ABI break because
we're just adding symbols. Also, this does mean that libc++ can't be linked
against an older version of libc++abi that doesn't provide those symbols,
however doing so is not supported anyway.
x86_64-unknown-linux-gnu
------------------------
TODO
x86_64-apple-apple-darwin
-------------------------
Symbol added: ___cxa_throw_bad_array_new_length
Symbol added: ___cxa_uncaught_exceptions
* r356518 - Integrate <filesystem> support into the shared library
This patch introduces support for <filesystem> into the shared library,
instead of requiring users to manually link against a static archive. As
such, new symbols required to implement <filesystem> are exported from
the shared library.
x86_64-unknown-linux-gnu
------------------------
Symbol added: _ZNKSt3__14__fs10filesystem18directory_iterator13__dereferenceEv
Symbol added: _ZNKSt3__14__fs10filesystem28recursive_directory_iterator13__dereferenceEv
Symbol added: _ZNKSt3__14__fs10filesystem28recursive_directory_iterator5depthEv
Symbol added: _ZNKSt3__14__fs10filesystem28recursive_directory_iterator7optionsEv
Symbol added: _ZNKSt3__14__fs10filesystem4path10__filenameEv
Symbol added: _ZNKSt3__14__fs10filesystem4path11__extensionEv
Symbol added: _ZNKSt3__14__fs10filesystem4path11__root_nameEv
Symbol added: _ZNKSt3__14__fs10filesystem4path13__parent_pathEv
Symbol added: _ZNKSt3__14__fs10filesystem4path15__relative_pathEv
Symbol added: _ZNKSt3__14__fs10filesystem4path15__root_path_rawEv
Symbol added: _ZNKSt3__14__fs10filesystem4path16__root_directoryEv
Symbol added: _ZNKSt3__14__fs10filesystem4path16lexically_normalEv
Symbol added: _ZNKSt3__14__fs10filesystem4path18lexically_relativeERKS2_
Symbol added: _ZNKSt3__14__fs10filesystem4path3endEv
Symbol added: _ZNKSt3__14__fs10filesystem4path5beginEv
Symbol added: _ZNKSt3__14__fs10filesystem4path6__stemEv
Symbol added: _ZNKSt3__14__fs10filesystem4path9__compareENS_17basic_string_viewIcNS_11char_traitsIcEEEE
Symbol added: _ZNSt3__14__fs10filesystem10__absoluteERKNS1_4pathEPNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem10hash_valueERKNS1_4pathE
Symbol added: _ZNSt3__14__fs10filesystem11__canonicalERKNS1_4pathEPNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem11__copy_fileERKNS1_4pathES4_NS1_12copy_optionsEPNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem11__file_sizeERKNS1_4pathEPNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem12__equivalentERKNS1_4pathES4_PNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem12__remove_allERKNS1_4pathEPNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem13__fs_is_emptyERKNS1_4pathEPNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem13__permissionsERKNS1_4pathENS1_5permsENS1_12perm_optionsEPNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem13__resize_fileERKNS1_4pathEmPNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem14__copy_symlinkERKNS1_4pathES4_PNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem14__current_pathEPNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem14__current_pathERKNS1_4pathEPNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem14__read_symlinkERKNS1_4pathEPNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem15directory_entry12__do_refreshEv
Symbol added: _ZNSt3__14__fs10filesystem16_FilesystemClock3nowEv
Symbol added: _ZNSt3__14__fs10filesystem16_FilesystemClock9is_steadyE
Symbol added: _ZNSt3__14__fs10filesystem16__create_symlinkERKNS1_4pathES4_PNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem16__symlink_statusERKNS1_4pathEPNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem16filesystem_error13__create_whatEi
Symbol added: _ZNSt3__14__fs10filesystem16filesystem_errorD0Ev
Symbol added: _ZNSt3__14__fs10filesystem16filesystem_errorD1Ev
Symbol added: _ZNSt3__14__fs10filesystem16filesystem_errorD2Ev
Symbol added: _ZNSt3__14__fs10filesystem17__hard_link_countERKNS1_4pathEPNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem17__last_write_timeERKNS1_4pathENS_6chrono10time_pointINS1_16_FilesystemClockENS5_8durationInNS_5ratioILl1ELl1000000000EEEEEEEPNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem17__last_write_timeERKNS1_4pathEPNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem18__create_directoryERKNS1_4pathEPNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem18__create_directoryERKNS1_4pathES4_PNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem18__create_hard_linkERKNS1_4pathES4_PNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem18__weakly_canonicalERKNS1_4pathEPNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem18directory_iterator11__incrementEPNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem18directory_iteratorC1ERKNS1_4pathEPNS_10error_codeENS1_17directory_optionsE
Symbol added: _ZNSt3__14__fs10filesystem18directory_iteratorC2ERKNS1_4pathEPNS_10error_codeENS1_17directory_optionsE
Symbol added: _ZNSt3__14__fs10filesystem20__create_directoriesERKNS1_4pathEPNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem21__temp_directory_pathEPNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem26__create_directory_symlinkERKNS1_4pathES4_PNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem28recursive_directory_iterator11__incrementEPNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem28recursive_directory_iterator15__try_recursionEPNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem28recursive_directory_iterator5__popEPNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem28recursive_directory_iterator9__advanceEPNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem28recursive_directory_iteratorC1ERKNS1_4pathENS1_17directory_optionsEPNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem28recursive_directory_iteratorC2ERKNS1_4pathENS1_17directory_optionsEPNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem4path17replace_extensionERKS2_
Symbol added: _ZNSt3__14__fs10filesystem4path19preferred_separatorE
Symbol added: _ZNSt3__14__fs10filesystem4path8iterator11__decrementEv
Symbol added: _ZNSt3__14__fs10filesystem4path8iterator11__incrementEv
Symbol added: _ZNSt3__14__fs10filesystem6__copyERKNS1_4pathES4_NS1_12copy_optionsEPNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem7__spaceERKNS1_4pathEPNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem8__removeERKNS1_4pathEPNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem8__renameERKNS1_4pathES4_PNS_10error_codeE
Symbol added: _ZNSt3__14__fs10filesystem8__statusERKNS1_4pathEPNS_10error_codeE
Symbol added: _ZTINSt3__14__fs10filesystem16filesystem_errorE
Symbol added: _ZTSNSt3__14__fs10filesystem16filesystem_errorE
Symbol added: _ZTVNSt3__14__fs10filesystem16filesystem_errorE
x86_64-apple-apple-darwin
-------------------------
Symbol added: __ZNKSt3__14__fs10filesystem18directory_iterator13__dereferenceEv
Symbol added: __ZNKSt3__14__fs10filesystem28recursive_directory_iterator13__dereferenceEv
Symbol added: __ZNKSt3__14__fs10filesystem28recursive_directory_iterator5depthEv
Symbol added: __ZNKSt3__14__fs10filesystem28recursive_directory_iterator7optionsEv
Symbol added: __ZNKSt3__14__fs10filesystem4path10__filenameEv
Symbol added: __ZNKSt3__14__fs10filesystem4path11__extensionEv
Symbol added: __ZNKSt3__14__fs10filesystem4path11__root_nameEv
Symbol added: __ZNKSt3__14__fs10filesystem4path13__parent_pathEv
Symbol added: __ZNKSt3__14__fs10filesystem4path15__relative_pathEv
Symbol added: __ZNKSt3__14__fs10filesystem4path15__root_path_rawEv
Symbol added: __ZNKSt3__14__fs10filesystem4path16__root_directoryEv
Symbol added: __ZNKSt3__14__fs10filesystem4path16lexically_normalEv
Symbol added: __ZNKSt3__14__fs10filesystem4path18lexically_relativeERKS2_
Symbol added: __ZNKSt3__14__fs10filesystem4path3endEv
Symbol added: __ZNKSt3__14__fs10filesystem4path5beginEv
Symbol added: __ZNKSt3__14__fs10filesystem4path6__stemEv
Symbol added: __ZNKSt3__14__fs10filesystem4path9__compareENS_17basic_string_viewIcNS_11char_traitsIcEEEE
Symbol added: __ZNSt3__14__fs10filesystem10__absoluteERKNS1_4pathEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem10hash_valueERKNS1_4pathE
Symbol added: __ZNSt3__14__fs10filesystem11__canonicalERKNS1_4pathEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem11__copy_fileERKNS1_4pathES4_NS1_12copy_optionsEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem11__file_sizeERKNS1_4pathEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem12__equivalentERKNS1_4pathES4_PNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem12__remove_allERKNS1_4pathEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem13__fs_is_emptyERKNS1_4pathEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem13__permissionsERKNS1_4pathENS1_5permsENS1_12perm_optionsEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem13__resize_fileERKNS1_4pathEmPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem14__copy_symlinkERKNS1_4pathES4_PNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem14__current_pathEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem14__current_pathERKNS1_4pathEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem14__read_symlinkERKNS1_4pathEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem15directory_entry12__do_refreshEv
Symbol added: __ZNSt3__14__fs10filesystem16__create_symlinkERKNS1_4pathES4_PNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem16__symlink_statusERKNS1_4pathEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem16_FilesystemClock3nowEv
Symbol added: __ZNSt3__14__fs10filesystem16filesystem_error13__create_whatEi
Symbol added: __ZNSt3__14__fs10filesystem16filesystem_errorD0Ev
Symbol added: __ZNSt3__14__fs10filesystem16filesystem_errorD1Ev
Symbol added: __ZNSt3__14__fs10filesystem16filesystem_errorD2Ev
Symbol added: __ZNSt3__14__fs10filesystem17__hard_link_countERKNS1_4pathEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem17__last_write_timeERKNS1_4pathENS_6chrono10time_pointINS1_16_FilesystemClockENS5_8durationInNS_5ratioILl1ELl1000000000EEEEEEEPNS_10error_codeE
Symbol added: __ZNKSt3__14__fs10filesystem28recursive_directory_iterator5depthEv
Symbol added: __ZNKSt3__14__fs10filesystem28recursive_directory_iterator7optionsEv
Symbol added: __ZNKSt3__14__fs10filesystem4path10__filenameEv
Symbol added: __ZNKSt3__14__fs10filesystem4path11__extensionEv
Symbol added: __ZNKSt3__14__fs10filesystem4path11__root_nameEv
Symbol added: __ZNKSt3__14__fs10filesystem4path13__parent_pathEv
Symbol added: __ZNKSt3__14__fs10filesystem4path15__relative_pathEv
Symbol added: __ZNKSt3__14__fs10filesystem4path15__root_path_rawEv
Symbol added: __ZNKSt3__14__fs10filesystem4path16__root_directoryEv
Symbol added: __ZNKSt3__14__fs10filesystem4path16lexically_normalEv
Symbol added: __ZNKSt3__14__fs10filesystem4path18lexically_relativeERKS2_
Symbol added: __ZNKSt3__14__fs10filesystem4path3endEv
Symbol added: __ZNKSt3__14__fs10filesystem4path5beginEv
Symbol added: __ZNKSt3__14__fs10filesystem4path6__stemEv
Symbol added: __ZNKSt3__14__fs10filesystem4path9__compareENS_17basic_string_viewIcNS_11char_traitsIcEEEE
Symbol added: __ZNSt3__14__fs10filesystem10__absoluteERKNS1_4pathEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem10hash_valueERKNS1_4pathE
Symbol added: __ZNSt3__14__fs10filesystem11__canonicalERKNS1_4pathEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem11__copy_fileERKNS1_4pathES4_NS1_12copy_optionsEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem11__file_sizeERKNS1_4pathEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem12__equivalentERKNS1_4pathES4_PNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem12__remove_allERKNS1_4pathEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem13__fs_is_emptyERKNS1_4pathEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem13__permissionsERKNS1_4pathENS1_5permsENS1_12perm_optionsEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem13__resize_fileERKNS1_4pathEmPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem14__copy_symlinkERKNS1_4pathES4_PNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem14__current_pathEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem14__current_pathERKNS1_4pathEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem14__read_symlinkERKNS1_4pathEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem15directory_entry12__do_refreshEv
Symbol added: __ZNSt3__14__fs10filesystem16__create_symlinkERKNS1_4pathES4_PNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem16__symlink_statusERKNS1_4pathEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem16_FilesystemClock3nowEv
Symbol added: __ZNSt3__14__fs10filesystem16filesystem_error13__create_whatEi
Symbol added: __ZNSt3__14__fs10filesystem16filesystem_errorD0Ev
Symbol added: __ZNSt3__14__fs10filesystem16filesystem_errorD1Ev
Symbol added: __ZNSt3__14__fs10filesystem16filesystem_errorD2Ev
Symbol added: __ZNSt3__14__fs10filesystem17__hard_link_countERKNS1_4pathEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem17__last_write_timeERKNS1_4pathENS_6chrono10time_pointINS1_16_FilesystemClockENS5_8durationInNS_5ratioILl1ELl1000000000EEEEEEEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem17__last_write_timeERKNS1_4pathEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem18__create_directoryERKNS1_4pathEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem18__create_directoryERKNS1_4pathES4_PNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem18__create_hard_linkERKNS1_4pathES4_PNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem18__weakly_canonicalERKNS1_4pathEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem18directory_iterator11__incrementEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem18directory_iteratorC1ERKNS1_4pathEPNS_10error_codeENS1_17directory_optionsE
Symbol added: __ZNSt3__14__fs10filesystem18directory_iteratorC2ERKNS1_4pathEPNS_10error_codeENS1_17directory_optionsE
Symbol added: __ZNSt3__14__fs10filesystem20__create_directoriesERKNS1_4pathEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem21__temp_directory_pathEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem26__create_directory_symlinkERKNS1_4pathES4_PNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem28recursive_directory_iterator11__incrementEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem28recursive_directory_iterator15__try_recursionEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem28recursive_directory_iterator5__popEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem28recursive_directory_iterator9__advanceEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem28recursive_directory_iteratorC1ERKNS1_4pathENS1_17directory_optionsEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem28recursive_directory_iteratorC2ERKNS1_4pathENS1_17directory_optionsEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem4path17replace_extensionERKS2_
Symbol added: __ZNSt3__14__fs10filesystem4path8iterator11__decrementEv
Symbol added: __ZNSt3__14__fs10filesystem4path8iterator11__incrementEv
Symbol added: __ZNSt3__14__fs10filesystem6__copyERKNS1_4pathES4_NS1_12copy_optionsEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem7__spaceERKNS1_4pathEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem8__removeERKNS1_4pathEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem8__renameERKNS1_4pathES4_PNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem8__statusERKNS1_4pathEPNS_10error_codeE
Symbol added: __ZNSt3__14__fs10filesystem16_FilesystemClock9is_steadyE
Symbol added: __ZNSt3__14__fs10filesystem4path19preferred_separatorE
Symbol added: __ZTINSt3__14__fs10filesystem16filesystem_errorE
Symbol added: __ZTSNSt3__14__fs10filesystem16filesystem_errorE
Symbol added: __ZTVNSt3__14__fs10filesystem16filesystem_errorE
* r356417 - Remove exception throwing debug mode handler support.
The reason libc++ implemented a throwing debug mode handler was for ease of testing. Specifically,
I thought that if a debug violation aborted, we could only test one violation per file. This made
it impossible to test debug mode. Which throwing behavior we could test more!
However, the throwing approach didn't work either, since there are debug violations underneath noexcept
functions. This lead to the introduction of `_NOEXCEPT_DEBUG`, which was only noexcept when debug
mode was off.
Having thought more and having grown wiser, `_NOEXCEPT_DEBUG` was a horrible decision. It was
viral, it didn't cover all the cases it needed to, and it was observable to the user -- at worst
changing the behavior of their program.
This patch removes the throwing debug handler, and rewrites the debug tests using 'fork-ing' style
death tests.
All Platforms (ignoring versioning namespaces)
----------------------------------------------
Symbol added: _ZNKSt3__119__libcpp_debug_info4whatEv
Symbol removed: _ZNKSt3__124__libcpp_debug_exception4whatEv
Symbol removed: _ZNSt3__124__libcpp_debug_exceptionC1ERKNS_19__libcpp_debug_infoE
Symbol removed: _ZNSt3__124__libcpp_debug_exceptionC1ERKS0_
Symbol removed: _ZNSt3__124__libcpp_debug_exceptionC1Ev
Symbol removed: _ZNSt3__124__libcpp_debug_exceptionC2ERKNS_19__libcpp_debug_infoE
Symbol removed: _ZNSt3__124__libcpp_debug_exceptionC2ERKS0_
Symbol removed: _ZNSt3__124__libcpp_debug_exceptionC2Ev
Symbol removed: _ZNSt3__124__libcpp_debug_exceptionD0Ev
Symbol removed: _ZNSt3__124__libcpp_debug_exceptionD1Ev
Symbol removed: _ZNSt3__124__libcpp_debug_exceptionD2Ev
Symbol removed: _ZNSt3__129__libcpp_throw_debug_functionERKNS_19__libcpp_debug_infoE
Symbol removed: _ZTINSt3__124__libcpp_debug_exceptionE
Symbol removed: _ZTSNSt3__124__libcpp_debug_exceptionE
Symbol removed: _ZTVNSt3__124__libcpp_debug_exceptionE
x86_64-apple-apple-darwin
-------------------------
Symbol added: __ZNSt3__111__libcpp_db10__insert_cEPvPFPNS_8__c_nodeES1_S1_S3_E
Symbol removed: __ZNSt3__111__libcpp_db10__insert_cEPv
* r355367 - Fix -fsanitize=vptr badness in <__debug>
This patch fixes a lifetime bug when inserting a new container into the debug database. It is
diagnosed by UBSAN when debug mode is enabled. This patch corrects how nodes are constructed
during insertion.
The fix requires unconditionally breaking the debug mode ABI. Users should not expect ABI
stability from debug mode.
x86_64-unknown-linux-gnu
------------------------
Symbol added: _ZNSt3__111__libcpp_db10__insert_cEPvPFPNS_8__c_nodeES1_S1_S3_E
Symbol removed: _ZNSt3__111__libcpp_db10__insert_cEPv
x86_64-apple-apple-darwin
-------------------------
Symbol added: __ZNSt3__111__libcpp_db10__insert_cEPvPFPNS_8__c_nodeES1_S1_S3_E
Symbol removed: __ZNSt3__111__libcpp_db10__insert_cEPv
-----------
Version 8.0
-----------
* r347903 - Remove std::bad_array_length
The change removes the definition of std::bad_array_length (which never made
it into the standard) from the headers and the dylib. This is technically an
ABI break because the symbols are shipped starting with mac OSX 10.13, however
users couldn't be relying on the functionality because it is marked as being
unavailable using Clang's availability attribute.
x86_64-apple-darwin16.0
-----------------------
Symbol removed: __ZNKSt16bad_array_length4whatEv
Symbol removed: __ZNKSt16bad_array_length4whatEv
Symbol removed: __ZNSt16bad_array_lengthC1Ev
Symbol removed: __ZNSt16bad_array_lengthC1Ev
Symbol removed: __ZNSt16bad_array_lengthC2Ev
Symbol removed: __ZNSt16bad_array_lengthC2Ev
Symbol removed: __ZNSt16bad_array_lengthD0Ev
Symbol removed: __ZNSt16bad_array_lengthD0Ev
Symbol removed: __ZNSt16bad_array_lengthD1Ev
Symbol removed: __ZNSt16bad_array_lengthD1Ev
Symbol removed: __ZNSt16bad_array_lengthD2Ev
Symbol removed: __ZNSt16bad_array_lengthD2Ev
Symbol removed: __ZTISt16bad_array_length
Symbol removed: __ZTISt16bad_array_length
Symbol removed: __ZTSSt16bad_array_length
Symbol removed: __ZTSSt16bad_array_length
Symbol removed: __ZTVSt16bad_array_length
Symbol removed: __ZTVSt16bad_array_length
* r347395 - Making libc++ build under -fvisibility=hidden on Linux
The change marks several function templates as hidden. This removes symbols
from the shared library, but this is not an ABI break because it's impossible
for programs linking against libc++.so to actually depend on that symbol.
The reason is that the symbol is exported from the shared library through
an implicit instantiation present in the shared object itself only. Furthermore,
if a user's shared object was implicitly instantiating one of these functions,
marking that symbol as hidden would not be an ABI break for them because none
of their users could actually be using the symbol in their dylib (because
it's an implicit instantiation).
x86_64-linux-gnu
----------------
Symbol removed: _ZNSt3__125__num_get_signed_integralIlEET_PKcS3_Rji
Symbol removed: _ZNSt3__125__num_get_signed_integralIxEET_PKcS3_Rji
Symbol removed: _ZNSt3__127__num_get_unsigned_integralIjEET_PKcS3_Rji
Symbol removed: _ZNSt3__127__num_get_unsigned_integralImEET_PKcS3_Rji
Symbol removed: _ZNSt3__127__num_get_unsigned_integralItEET_PKcS3_Rji
Symbol removed: _ZNSt3__127__num_get_unsigned_integralIyEET_PKcS3_Rji
Symbol removed: _ZNSt3__17__sort5IRNS_6__lessIaaEEPaEEjT0_S5_S5_S5_S5_T_
Symbol removed: _ZNSt3__17__sort5IRNS_6__lessIccEEPcEEjT0_S5_S5_S5_S5_T_
Symbol removed: _ZNSt3__17__sort5IRNS_6__lessIddEEPdEEjT0_S5_S5_S5_S5_T_
Symbol removed: _ZNSt3__17__sort5IRNS_6__lessIffEEPfEEjT0_S5_S5_S5_S5_T_
Symbol removed: _ZNSt3__17__sort5IRNS_6__lessIhhEEPhEEjT0_S5_S5_S5_S5_T_
Symbol removed: _ZNSt3__17__sort5IRNS_6__lessIiiEEPiEEjT0_S5_S5_S5_S5_T_
Symbol removed: _ZNSt3__17__sort5IRNS_6__lessIjjEEPjEEjT0_S5_S5_S5_S5_T_
Symbol removed: _ZNSt3__17__sort5IRNS_6__lessIllEEPlEEjT0_S5_S5_S5_S5_T_
Symbol removed: _ZNSt3__17__sort5IRNS_6__lessImmEEPmEEjT0_S5_S5_S5_S5_T_
Symbol removed: _ZNSt3__17__sort5IRNS_6__lessIssEEPsEEjT0_S5_S5_S5_S5_T_
Symbol removed: _ZNSt3__17__sort5IRNS_6__lessIttEEPtEEjT0_S5_S5_S5_S5_T_
Symbol removed: _ZNSt3__17__sort5IRNS_6__lessIwwEEPwEEjT0_S5_S5_S5_S5_T_
Symbol removed: _ZNSt3__17__sort5IRNS_6__lessIxxEEPxEEjT0_S5_S5_S5_S5_T_
Symbol removed: _ZNSt3__17__sort5IRNS_6__lessIyyEEPyEEjT0_S5_S5_S5_S5_T_
Symbol removed: _ZNSt3__1plIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_12basic_stringIT_T0_T1_EERKS9_PKS6_
Symbol removed: _ZSt18make_exception_ptrINSt3__112future_errorEESt13exception_ptrT_
* r345260 - Making libc++ build under -fvisibility=hidden on Mac OS
The change marks __thread_specific_ptr<__thread_struct>::__at_thread_exit(void*)
with hidden visibility. This removes a symbol from the shared libraries,
however this is not an ABI break because it's impossible for programs linking
against libc++.dylib to actually depend on that symbol. The reason is that
the symbol is exported from the shared library through an implicit
instantiation present in the dylib itself only. Furthermore, if a user's
dylib was implicitly instantiating __thread_specific_ptr<T>::__at_thread_exit
(because it's defined in the headers), marking that symbol as hidden would
not be an ABI break for them because none of their users could actually be
using the symbol in their dylib (because it's an implicit instantiation).
This change also marks __start_std_streams as hidden -- this variable is
only required to initialize the streams, and nobody should depend on it
from outside the dylib.
x86_64-linux-gnu
----------------
Symbol removed: _ZNSt3__121__thread_specific_ptrINS_15__thread_structEE16__at_thread_exitEPv
Symbol removed: _ZNSt3__119__start_std_streamsE
x86_64-apple-darwin16.0
-----------------------
Symbol removed: __ZNSt3__221__thread_specific_ptrINS_15__thread_structEE16__at_thread_exitEPv
Symbol removed: __ZNSt3__119__start_std_streamsE
-----------
Version 7.0
-----------
* r338479 - Elementary string conversions for integral types
The change emits __u64toa and __u32toa under std::__1::__itoa.
x86_64-linux-gnu
----------------
Symbol added: _ZNSt3__16__itoa8__u64toaEmPc
Symbol added: _ZNSt3__16__itoa8__u32toaEjPc
x86_64-apple-darwin16.0
-----------------------
Symbol added: __ZNSt3__16__itoa8__u64toaEyPc
Symbol added: __ZNSt3__16__itoa8__u32toaEjPc
* r333467 - Fix embarrasing typo in uncaught_exceptions.
This bug caused __uncaught_exception to be ODR used instead of
__uncaught_exceptions. This change is non-ABI breaking because the symbols
for std::uncaught_exception and std::uncaught_exceptions haven't changed,
and because users shouldn't be depending directly on libc++ exporting
__uncaught_exception/__uncaught_exceptions.
All Platforms
----------------
SYMBOL REMOVED: __cxa_uncaught_exception
Symbol added: __cxa_uncaught_exceptions
-----------
Version 5.0
-----------
* r313500 - Fix undefined "___cxa_deleted_virtual" symbol in macosx
x86_64-linux-gnu
----------------
No changes
x86_64-apple-darwin16.0
-----------------------
Symbol added: ___cxa_deleted_virtual
* r296729 - Remove std::num_get template methods which should be inline
These functions should never have had visible definitions in the dylib but
since they were previously not specified with 'inline' they accidentally
got emitted. This change is non-ABI breaking because every "linkage unit"
must contain its own definition.
x86_64-linux-gnu
----------------
SYMBOL REMOVED: _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE15__do_get_signedIlEES4_S4_S4_RNS_8ios_baseERjRT_
SYMBOL REMOVED: _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE15__do_get_signedIxEES4_S4_S4_RNS_8ios_baseERjRT_
SYMBOL REMOVED: _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__do_get_unsignedIjEES4_S4_S4_RNS_8ios_baseERjRT_
SYMBOL REMOVED: _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__do_get_unsignedImEES4_S4_S4_RNS_8ios_baseERjRT_
SYMBOL REMOVED: _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__do_get_unsignedItEES4_S4_S4_RNS_8ios_baseERjRT_
SYMBOL REMOVED: _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__do_get_unsignedIyEES4_S4_S4_RNS_8ios_baseERjRT_
SYMBOL REMOVED: _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE23__do_get_floating_pointIdEES4_S4_S4_RNS_8ios_baseERjRT_
SYMBOL REMOVED: _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE23__do_get_floating_pointIeEES4_S4_S4_RNS_8ios_baseERjRT_
SYMBOL REMOVED: _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE23__do_get_floating_pointIfEES4_S4_S4_RNS_8ios_baseERjRT_
SYMBOL REMOVED: _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE15__do_get_signedIlEES4_S4_S4_RNS_8ios_baseERjRT_
SYMBOL REMOVED: _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE15__do_get_signedIxEES4_S4_S4_RNS_8ios_baseERjRT_
SYMBOL REMOVED: _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_get_unsignedIjEES4_S4_S4_RNS_8ios_baseERjRT_
SYMBOL REMOVED: _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_get_unsignedImEES4_S4_S4_RNS_8ios_baseERjRT_
SYMBOL REMOVED: _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_get_unsignedItEES4_S4_S4_RNS_8ios_baseERjRT_
SYMBOL REMOVED: _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_get_unsignedIyEES4_S4_S4_RNS_8ios_baseERjRT_
SYMBOL REMOVED: _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE23__do_get_floating_pointIdEES4_S4_S4_RNS_8ios_baseERjRT_
SYMBOL REMOVED: _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE23__do_get_floating_pointIeEES4_S4_S4_RNS_8ios_baseERjRT_
SYMBOL REMOVED: _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE23__do_get_floating_pointIfEES4_S4_S4_RNS_8ios_baseERjRT_
x86_64-apple-darwin16.0
-----------------------
No changes
-----------
Version 4.0
-----------
* r290651 - Add _LIBCPP_ASSERT debug handling functions
All Platforms
-------------
Symbol added: _ZNSt3__124__libcpp_debug_exceptionC2ERKNS_19__libcpp_debug_infoE
Symbol added: _ZNSt3__124__libcpp_debug_exceptionD1Ev
Symbol added: _ZTINSt3__124__libcpp_debug_exceptionE
Symbol added: _ZNSt3__129__libcpp_throw_debug_functionERKNS_19__libcpp_debug_infoE
Symbol added: _ZNSt3__124__libcpp_debug_exceptionD2Ev
Symbol added: _ZNSt3__129__libcpp_abort_debug_functionERKNS_19__libcpp_debug_infoE
Symbol added: _ZNSt3__124__libcpp_debug_exceptionC2ERKS0_
Symbol added: _ZNSt3__124__libcpp_debug_exceptionC1Ev
Symbol added: _ZNSt3__124__libcpp_debug_exceptionC1ERKNS_19__libcpp_debug_infoE
Symbol added: _ZNSt3__124__libcpp_debug_exceptionC2Ev
Symbol added: _ZTSNSt3__124__libcpp_debug_exceptionE
Symbol added: _ZNSt3__123__libcpp_debug_functionE
Symbol added: _ZNKSt3__124__libcpp_debug_exception4whatEv
Symbol added: _ZNSt3__124__libcpp_debug_exceptionC1ERKS0_
Symbol added: _ZNSt3__124__libcpp_debug_exceptionD0Ev
Symbol added: _ZTVNSt3__124__libcpp_debug_exceptionE
Symbol added: _ZNSt3__127__libcpp_set_debug_functionEPFvRKNS_19__libcpp_debug_infoEE
* r288547 - Implement C++17 <variant>
All Platforms
-------------
Symbol added: _ZTVSt18bad_variant_access
Symbol added: _ZTISt18bad_variant_access
Symbol added: _ZTSSt18bad_variant_access
Symbol added: _ZNKSt18bad_variant_access4whatEv
* r285537 - Remove std::string::append template methods which should be inline
These functions should never have had visible definitions in the dylib but
since they were previously not specified with 'inline' they accidentally
got emitted. This change is non-ABI breaking because every "linkage unit"
must contain its own definition.
x86_64-linux-gnu
----------------
SYMBOL REMOVED: _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendIPcEENS_9enable_ifIXaasr21__is_forward_iteratorIT_EE5valuesr38__libcpp_string_gets_noexcept_iteratorIS9_EE5valueERS5_E4typeES9_S9_
SYMBOL REMOVED: _ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6appendIPwEENS_9enable_ifIXaasr21__is_forward_iteratorIT_EE5valuesr38__libcpp_string_gets_noexcept_iteratorIS9_EE5valueERS5_E4typeES9_S9_
x86_64-apple-darwin16.0
-----------------------
No changes
* r285101 - Add -fvisibility-inlines-hidden when building libc++.
Although this change removes symbols, it should still be non-ABI breaking
since all of the definitions removed are inline functions. For this reason
removing these symbols is safe because every "linkage unit" which uses these
functions will contain their own definition.
x86_64-linux-gnu
----------------
SYMBOL REMOVED: _ZNSt12bad_any_castD0Ev
SYMBOL REMOVED: _ZNSt12experimental15fundamentals_v112bad_any_castD0Ev
SYMBOL REMOVED: _ZNSt3__114__codecvt_utf8IDiED0Ev
SYMBOL REMOVED: _ZNSt3__114__codecvt_utf8IDsED0Ev
SYMBOL REMOVED: _ZNSt3__114__codecvt_utf8IwED0Ev
SYMBOL REMOVED: _ZNSt3__115__codecvt_utf16IDiLb0EED0Ev
SYMBOL REMOVED: _ZNSt3__115__codecvt_utf16IDiLb1EED0Ev
SYMBOL REMOVED: _ZNSt3__115__codecvt_utf16IDsLb0EED0Ev
SYMBOL REMOVED: _ZNSt3__115__codecvt_utf16IDsLb1EED0Ev
SYMBOL REMOVED: _ZNSt3__115__codecvt_utf16IwLb0EED0Ev
SYMBOL REMOVED: _ZNSt3__115__codecvt_utf16IwLb1EED0Ev
SYMBOL REMOVED: _ZNSt3__117__assoc_sub_stateD0Ev
SYMBOL REMOVED: _ZNSt3__117__assoc_sub_stateD2Ev
SYMBOL REMOVED: _ZNSt3__117__libcpp_sscanf_lEPKcP15__locale_structS1_z
SYMBOL REMOVED: _ZNSt3__119__libcpp_asprintf_lEPPcP15__locale_structPKcz
SYMBOL REMOVED: _ZNSt3__119__libcpp_snprintf_lEPcmP15__locale_structPKcz
SYMBOL REMOVED: _ZNSt3__120__codecvt_utf8_utf16IDiED0Ev
SYMBOL REMOVED: _ZNSt3__120__codecvt_utf8_utf16IDsED0Ev
SYMBOL REMOVED: _ZNSt3__120__codecvt_utf8_utf16IwED0Ev
x86_64-apple-darwin16.0
-----------------------
No Changes - inline symbols are already hidden
* r284206 - Implement C++17 aligned allocation in <new>
x86_64-linux-gnu
----------------
Symbol added: posix_memalign@GLIBC_2.2.5
Symbol added: _ZdaPvSt11align_val_t
Symbol added: _ZdlPvSt11align_val_t
Symbol added: _ZnamSt11align_val_t
Symbol added: _ZdaPvmSt11align_val_t
Symbol added: _ZdlPvmSt11align_val_t
Symbol added: _ZdlPvSt11align_val_tRKSt9nothrow_t
Symbol added: _ZnwmSt11align_val_tRKSt9nothrow_t
Symbol added: _ZnamSt11align_val_tRKSt9nothrow_t
Symbol added: _ZdaPvSt11align_val_tRKSt9nothrow_t
Symbol added: _ZnwmSt11align_val_t
* r283980 - Implement C++17 <optional>
x86_64-linux-gnu
----------------
Symbol added: _ZTISt19bad_optional_access
Symbol added: _ZNSt19bad_optional_accessD0Ev
Symbol added: _ZNSt19bad_optional_accessD1Ev
Symbol added: _ZNSt19bad_optional_accessD2Ev
Symbol added: _ZTVSt19bad_optional_access
Symbol added: _ZTSSt19bad_optional_access
* r278310 - Implement C++17 <any>
x86_64-linux-gnu
----------------
Symbol added: _ZNKSt12bad_any_cast4whatEv
Symbol added: _ZNSt12bad_any_castD0Ev
Symbol added: _ZTISt12bad_any_cast
Symbol added: _ZTSSt12bad_any_cast
Symbol added: _ZTVSt12bad_any_cast
* r295398 - Remove basic_string::insert and basic_string::replace template methods
which should be inline.
These functions should never have had visible definitions in the dylib but
since they were previously not specified with 'inline' they accidentally
got emitted. This change is non-ABI breaking because every "linkage unit"
must contain its own definition.
x86_64-linux-gnu
----------------
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_
SYMBOL REMOVED: _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7replaceIPKcEENS_9enable_ifIXsr19__is_input_iteratorIT_EE5valueERS5_E4typeENS_11__wrap_iterIS8_EESF_SA_SA_
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_
SYMBOL REMOVED: _ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7replaceIPKwEENS_9enable_ifIXsr19__is_input_iteratorIT_EE5valueERS5_E4typeENS_11__wrap_iterIS8_EESF_SA_SA_