summaryrefslogtreecommitdiffstats
path: root/libcxx/lib/abi
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix debug mode build w/o exceptionsEric Fiselier2016-12-281-1/+1
| | | | llvm-svn: 290652
* Implement a throwing version of _LIBCPP_ASSERT.Eric Fiselier2016-12-283-0/+55
| | | | | | | | | | | | | | | | | | | | | | | | | This patch implements changes to allow _LIBCPP_ASSERT to throw on failure instead of aborting. The main changes needed to do this are: 1. Change _LIBCPP_ASSERT to call a handler via a replacable function pointer instead of calling abort directly. Additionally this patch implements two handler functions, one which aborts and another that throws an exception. 2. Add _NOEXCEPT_DEBUG macro for disabling noexcept spec on function which contain _LIBCPP_ASSERT. This is required in order to prevent assertion failures throwing through a noexcept function. This macro has no effect unless _LIBCPP_DEBUG_USE_EXCEPTIONS is defined. Having a non-aborting _LIBCPP_ASSERT is very important to allow sane testing of debug mode. Currently we can only have one test case per file, since the test case will cause the program to abort. Testing debug mode this way would require thousands of test files, most of which would be 95% boiler plate. I don't think this is a feasible strategy. Fortunately using a throwing debug handler solves these issues. Additionally this patch rewrites the documentation for debug mode. llvm-svn: 290651
* [libc++] Make __num_get_float hiddenShoaib Meenai2016-12-241-3/+0
| | | | | | | | | | | It's an internal function and shouldn't be exported. It's also a source of discrepancy in the published ABI list; these symbols aren't exported for me on CentOS 7 or Ubuntu 16.04, leading to spurious check-cxx-abilist failures. Differential Revision: https://reviews.llvm.org/D27153 llvm-svn: 290503
* Update darwin ABI list for <variant>Eric Fiselier2016-12-021-0/+4
| | | | llvm-svn: 288551
* Update ABI lists for <variant>Eric Fiselier2016-12-022-1/+13
| | | | llvm-svn: 288550
* update Apples ABI list to ignore non-std symbolsEric Fiselier2016-11-181-2470/+2355
| | | | llvm-svn: 287301
* Change sym_check to filter non-stdlib symbols.Eric Fiselier2016-11-182-2011/+1889
| | | | | | | | | | | Currently sym_check almost all names found in the binary, including those which are defined in other libraries. This makes our ABI lists harder to maintain. This patch adds a --only-stdlib-symbols option to sym_check which removes all symbols which aren't possibly provided by libc++. It also re-generates the linux ABI list after making this change. llvm-svn: 287294
* Fix ABI configuration detection on OS XEric Fiselier2016-11-141-2/+4
| | | | llvm-svn: 286792
* Fix CMake set syntaxEric Fiselier2016-11-141-2/+2
| | | | llvm-svn: 286791
* Add check-cxx-abilist target when supported.Eric Fiselier2016-11-143-0/+26
| | | | | | | | | | | | | This patch adds a `check-cxx-abilist` target which verifies the libc++.so ABI when the current build configuration matches the configuration used to generate the ABI lists. In order to make this change `HandleOutOfTreeLLVM.cmake` needed to be modified to include `LLVMConfig.cmake` so that `TARGET_TRIPLE` is defined. Hopefully the changes needed to accommodate this won't break existing build configurations. llvm-svn: 286789
* Remove additional function template definitions from the dylibEric Fiselier2016-10-312-2/+15
| | | | llvm-svn: 285537
* Revert addition of __libcpp_library_versionEric Fiselier2016-10-283-7/+0
| | | | llvm-svn: 285466
* Update mac ABI listEric Fiselier2016-10-282-1/+2
| | | | llvm-svn: 285383
* Add __libcpp_version file and __libcpp_library_version function.Eric Fiselier2016-10-282-0/+6
| | | | | | | | | | | | | | | This patch does two seperate things. First it adds a file called "__libcpp_version" which only contains the current libc++ version (currently 4000). This file is not intended for use as a header. This file is used by Clang in order to easily determine the installed libc++ version. This allows Clang to enable/disable certain language features only when the library supports them. The second change is the addition of _LIBCPP_LIBRARY_VERSION macro, which returns the version of the installed dylib since it may be different than the headers. llvm-svn: 285382
* Update revision number in CHANGELOG.TXTEric Fiselier2016-10-251-1/+1
| | | | llvm-svn: 285102
* [libcxx] Build with -fvisibility-inlines-hidden -- Remove 20 inline ↵Eric Fiselier2016-10-252-19/+35
| | | | | | | | | | | | | | | | | | | | | definitions from the dylib Summary: This patch turns on `-fvisibility-inlines-hidden` when building the dylib. This is important so that libc++.dylib doesn't accidentally export inline-functions which are ODR used somewhere in the dylib. On OS X this change has no effect on the current ABI of the dylib. Unfortunately on Linux there are already ~20 inline functions which are unintentionally exported by the dylib. Almost all of these are implicitly generated destructors. I believe removing these function definitions is safe because every "linkage unit" which uses these functions has its own definition, and therefore shouldn't be dependent on libc++.dylib to provide them. Also could a FreeBSD maintainer comment on the ABI compatibility of this patch? Reviewers: mclow.lists, emaste, dexonsmith, joker-eph-DISABLED, jroelofs, danalbert, mehdi_amini, compnerd, dim Subscribers: beanz, mgorny, cfe-commits, modocache Differential Revision: https://reviews.llvm.org/D25593 llvm-svn: 285101
* Update OS X ABI listEric Fiselier2016-10-141-0/+11
| | | | llvm-svn: 284208
* Correct ABI changelog revision numberEric Fiselier2016-10-141-1/+1
| | | | llvm-svn: 284207
* Implement P0035R4 -- Add C++17 aligned allocation functionsEric Fiselier2016-10-142-0/+27
| | | | | | | | | | | | | | | | Summary: This patch implements the library side of P0035R4. The implementation is thanks to @rsmith. In addition to the C++17 implementation, the library implementation can be explicitly turned on using `-faligned-allocation` in all dialects. Reviewers: mclow.lists, rsmith Subscribers: rsmith, cfe-commits Differential Revision: https://reviews.llvm.org/D25591 llvm-svn: 284206
* Remove two ABI symbols added after the 3.9 releaseEric Fiselier2016-10-141-2/+0
| | | | llvm-svn: 284200
* Add ABI changelog entry for <any>Eric Fiselier2016-10-141-0/+10
| | | | llvm-svn: 284199
* Sort ABI lists by name so that changes don't generate big diffsEric Fiselier2016-10-144-5191/+5191
| | | | llvm-svn: 284198
* Revert r284193 - it is not correct on OS XEric Fiselier2016-10-141-22/+20
| | | | llvm-svn: 284194
* Re-export two previously exported std::string functions.Eric Fiselier2016-10-141-20/+22
| | | | | | | These functions were removed from the dylib sometime between the 3.9 release and now. This patch manually exports them to re-gain ABI compatibility. llvm-svn: 284193
* Add ABI list for 3.9 linuxEric Fiselier2016-10-141-0/+2010
| | | | llvm-svn: 284192
* Add 3.9 symbol list for OS XEric Fiselier2016-10-141-0/+2448
| | | | llvm-svn: 284189
* Fix CMake configuration error and add ABI lists for OS X.Eric Fiselier2016-10-141-0/+552
| | | | | | | | | | | | The primary reason for this patch is to add the OS X ABI lists for 3.9 and ToT. However while working on that I discovered that we incorrectly exported the libc++abi symbols. Previously we had chosen the wrong CMake configuration path and that caused us to re-export the c++abi binary instead of using the symbol lists. llvm-svn: 284188
* Add OS X abi listEric Fiselier2016-10-141-0/+1907
| | | | llvm-svn: 284186
* Add ABI Changelog and current symbol list for LinuxEric Fiselier2016-10-143-0/+2058
llvm-svn: 284185
OpenPOWER on IntegriCloud