Index: include/functional =================================================================== --- include/functional +++ include/functional @@ -1387,6 +1387,10 @@ class _LIBCPP_EXCEPTION_ABI bad_function_call : public exception { +public: + virtual ~bad_function_call() _NOEXCEPT; + + virtual const char* what() const _NOEXCEPT; }; _LIBCPP_NORETURN inline _LIBCPP_ALWAYS_INLINE Index: lib/CMakeLists.txt =================================================================== --- lib/CMakeLists.txt +++ lib/CMakeLists.txt @@ -159,7 +159,7 @@ split_list(LIBCXX_COMPILE_FLAGS) split_list(LIBCXX_LINK_FLAGS) -# Add a object library that contains the compiled source files. +# Add an object library that contains the compiled source files. add_library(cxx_objects OBJECT ${exclude_from_all} ${LIBCXX_SOURCES} ${LIBCXX_HEADERS}) set_target_properties(cxx_objects Index: lib/abi/x86_64-apple-darwin16.0.0.abilist =================================================================== --- lib/abi/x86_64-apple-darwin16.0.0.abilist +++ lib/abi/x86_64-apple-darwin16.0.0.abilist @@ -182,6 +182,7 @@ {'type': 'FUNC', 'is_defined': True, 'name': '__ZNKSt3__115basic_streambufIcNS_11char_traitsIcEEE6getlocEv'} {'type': 'FUNC', 'is_defined': True, 'name': '__ZNKSt3__115basic_streambufIwNS_11char_traitsIwEEE6getlocEv'} {'type': 'FUNC', 'is_defined': True, 'name': '__ZNKSt3__115error_condition7messageEv'} +{'type': 'FUNC', 'is_defined': True, 'name': '__ZNKSt3__117bad_function_call4whatEv'} {'type': 'FUNC', 'is_defined': True, 'name': '__ZNKSt3__117moneypunct_bynameIcLb0EE11do_groupingEv'} {'type': 'FUNC', 'is_defined': True, 'name': '__ZNKSt3__117moneypunct_bynameIcLb0EE13do_neg_formatEv'} {'type': 'FUNC', 'is_defined': True, 'name': '__ZNKSt3__117moneypunct_bynameIcLb0EE13do_pos_formatEv'} @@ -1146,6 +1147,9 @@ {'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__117__widen_from_utf8ILm32EED0Ev'} {'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__117__widen_from_utf8ILm32EED1Ev'} {'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__117__widen_from_utf8ILm32EED2Ev'} +{'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__117bad_function_callD0Ev'} +{'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__117bad_function_callD1Ev'} +{'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__117bad_function_callD2Ev'} {'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__117declare_reachableEPv'} {'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__117iostream_categoryEv'} {'type': 'FUNC', 'is_defined': True, 'name': '__ZNSt3__117moneypunct_bynameIcLb0EE4initEPKc'} @@ -1639,6 +1643,7 @@ {'type': 'OBJECT', 'is_defined': True, 'name': '__ZTINSt3__117__assoc_sub_stateE', 'size': 0} {'type': 'OBJECT', 'is_defined': True, 'name': '__ZTINSt3__117__widen_from_utf8ILm16EEE', 'size': 0} {'type': 'OBJECT', 'is_defined': True, 'name': '__ZTINSt3__117__widen_from_utf8ILm32EEE', 'size': 0} +{'type': 'OBJECT', 'is_defined': True, 'name': '__ZTINSt3__117bad_function_callE', 'size': 0} {'type': 'OBJECT', 'is_defined': True, 'name': '__ZTINSt3__117moneypunct_bynameIcLb0EEE', 'size': 0} {'type': 'OBJECT', 'is_defined': True, 'name': '__ZTINSt3__117moneypunct_bynameIcLb1EEE', 'size': 0} {'type': 'OBJECT', 'is_defined': True, 'name': '__ZTINSt3__117moneypunct_bynameIwLb0EEE', 'size': 0} @@ -1902,6 +1907,7 @@ {'type': 'OBJECT', 'is_defined': True, 'name': '__ZTSNSt3__115time_get_bynameIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEE', 'size': 0} {'type': 'OBJECT', 'is_defined': True, 'name': '__ZTSNSt3__115time_put_bynameIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEE', 'size': 0} {'type': 'OBJECT', 'is_defined': True, 'name': '__ZTSNSt3__115time_put_bynameIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEE', 'size': 0} +{'type': 'OBJECT', 'is_defined': True, 'name': '__ZTSNSt3__117bad_function_callE', 'size': 0} {'type': 'OBJECT', 'is_defined': True, 'name': '__ZTSNSt3__117moneypunct_bynameIcLb0EEE', 'size': 0} {'type': 'OBJECT', 'is_defined': True, 'name': '__ZTSNSt3__117moneypunct_bynameIcLb1EEE', 'size': 0} {'type': 'OBJECT', 'is_defined': True, 'name': '__ZTSNSt3__117moneypunct_bynameIwLb0EEE', 'size': 0} @@ -2174,6 +2180,7 @@ {'type': 'OBJECT', 'is_defined': True, 'name': '__ZTVNSt3__117__assoc_sub_stateE', 'size': 0} {'type': 'OBJECT', 'is_defined': True, 'name': '__ZTVNSt3__117__widen_from_utf8ILm16EEE', 'size': 0} {'type': 'OBJECT', 'is_defined': True, 'name': '__ZTVNSt3__117__widen_from_utf8ILm32EEE', 'size': 0} +{'type': 'OBJECT', 'is_defined': True, 'name': '__ZTVNSt3__117bad_function_callE', 'size': 0} {'type': 'OBJECT', 'is_defined': True, 'name': '__ZTVNSt3__117moneypunct_bynameIcLb0EEE', 'size': 0} {'type': 'OBJECT', 'is_defined': True, 'name': '__ZTVNSt3__117moneypunct_bynameIcLb1EEE', 'size': 0} {'type': 'OBJECT', 'is_defined': True, 'name': '__ZTVNSt3__117moneypunct_bynameIwLb0EEE', 'size': 0} Index: lib/abi/x86_64-unknown-linux-gnu.abilist =================================================================== --- lib/abi/x86_64-unknown-linux-gnu.abilist +++ lib/abi/x86_64-unknown-linux-gnu.abilist @@ -172,6 +172,7 @@ {'is_defined': True, 'type': 'FUNC', 'name': '_ZNKSt3__115basic_streambufIcNS_11char_traitsIcEEE6getlocEv'} {'is_defined': True, 'type': 'FUNC', 'name': '_ZNKSt3__115basic_streambufIwNS_11char_traitsIwEEE6getlocEv'} {'is_defined': True, 'type': 'FUNC', 'name': '_ZNKSt3__115error_condition7messageEv'} +{'is_defined': True, 'type': 'FUNC', 'name': '_ZNKSt3__117bad_function_call4whatEv'} {'is_defined': True, 'type': 'FUNC', 'name': '_ZNKSt3__117moneypunct_bynameIcLb0EE11do_groupingEv'} {'is_defined': True, 'type': 'FUNC', 'name': '_ZNKSt3__117moneypunct_bynameIcLb0EE13do_neg_formatEv'} {'is_defined': True, 'type': 'FUNC', 'name': '_ZNKSt3__117moneypunct_bynameIcLb0EE13do_pos_formatEv'} @@ -1073,6 +1074,9 @@ {'is_defined': True, 'type': 'FUNC', 'name': '_ZNSt3__117__widen_from_utf8ILm32EED0Ev'} {'is_defined': True, 'type': 'FUNC', 'name': '_ZNSt3__117__widen_from_utf8ILm32EED1Ev'} {'is_defined': True, 'type': 'FUNC', 'name': '_ZNSt3__117__widen_from_utf8ILm32EED2Ev'} +{'is_defined': True, 'type': 'FUNC', 'name': '_ZNSt3__117bad_function_callD0Ev'} +{'is_defined': True, 'type': 'FUNC', 'name': '_ZNSt3__117bad_function_callD1Ev'} +{'is_defined': True, 'type': 'FUNC', 'name': '_ZNSt3__117bad_function_callD2Ev'} {'is_defined': True, 'type': 'FUNC', 'name': '_ZNSt3__117declare_reachableEPv'} {'is_defined': True, 'type': 'FUNC', 'name': '_ZNSt3__117iostream_categoryEv'} {'is_defined': True, 'type': 'FUNC', 'name': '_ZNSt3__117moneypunct_bynameIcLb0EE4initEPKc'} @@ -1545,6 +1549,7 @@ {'is_defined': True, 'type': 'OBJECT', 'name': '_ZTINSt3__117__assoc_sub_stateE', 'size': 24} {'is_defined': True, 'type': 'OBJECT', 'name': '_ZTINSt3__117__widen_from_utf8ILm16EEE', 'size': 24} {'is_defined': True, 'type': 'OBJECT', 'name': '_ZTINSt3__117__widen_from_utf8ILm32EEE', 'size': 24} +{'is_defined': True, 'type': 'OBJECT', 'name': '_ZTINSt3__117bad_function_callE', 'size': 24} {'is_defined': True, 'type': 'OBJECT', 'name': '_ZTINSt3__117moneypunct_bynameIcLb0EEE', 'size': 24} {'is_defined': True, 'type': 'OBJECT', 'name': '_ZTINSt3__117moneypunct_bynameIcLb1EEE', 'size': 24} {'is_defined': True, 'type': 'OBJECT', 'name': '_ZTINSt3__117moneypunct_bynameIwLb0EEE', 'size': 24} @@ -1670,6 +1675,7 @@ {'is_defined': True, 'type': 'OBJECT', 'name': '_ZTSNSt3__117__assoc_sub_stateE', 'size': 28} {'is_defined': True, 'type': 'OBJECT', 'name': '_ZTSNSt3__117__widen_from_utf8ILm16EEE', 'size': 35} {'is_defined': True, 'type': 'OBJECT', 'name': '_ZTSNSt3__117__widen_from_utf8ILm32EEE', 'size': 35} +{'is_defined': True, 'type': 'OBJECT', 'name': '_ZTSNSt3__117bad_function_callE', 'size': 28} {'is_defined': True, 'type': 'OBJECT', 'name': '_ZTSNSt3__117moneypunct_bynameIcLb0EEE', 'size': 35} {'is_defined': True, 'type': 'OBJECT', 'name': '_ZTSNSt3__117moneypunct_bynameIcLb1EEE', 'size': 35} {'is_defined': True, 'type': 'OBJECT', 'name': '_ZTSNSt3__117moneypunct_bynameIwLb0EEE', 'size': 35} @@ -1785,6 +1791,7 @@ {'is_defined': True, 'type': 'OBJECT', 'name': '_ZTVNSt3__117__assoc_sub_stateE', 'size': 48} {'is_defined': True, 'type': 'OBJECT', 'name': '_ZTVNSt3__117__widen_from_utf8ILm16EEE', 'size': 96} {'is_defined': True, 'type': 'OBJECT', 'name': '_ZTVNSt3__117__widen_from_utf8ILm32EEE', 'size': 96} +{'is_defined': True, 'type': 'OBJECT', 'name': '_ZTVNSt3__117bad_function_callE', 'size': 40} {'is_defined': True, 'type': 'OBJECT', 'name': '_ZTVNSt3__117moneypunct_bynameIcLb0EEE', 'size': 112} {'is_defined': True, 'type': 'OBJECT', 'name': '_ZTVNSt3__117moneypunct_bynameIcLb1EEE', 'size': 112} {'is_defined': True, 'type': 'OBJECT', 'name': '_ZTVNSt3__117moneypunct_bynameIwLb0EEE', 'size': 112} Index: src/functional.cpp =================================================================== --- /dev/null +++ src/functional.cpp @@ -0,0 +1,24 @@ +//===----------------------- functional.cpp -------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "functional" + +_LIBCPP_BEGIN_NAMESPACE_STD + +bad_function_call::~bad_function_call() _NOEXCEPT +{ +} + +const char* +bad_function_call::what() const _NOEXCEPT +{ + return "std::bad_function_call"; +} + +_LIBCPP_END_NAMESPACE_STD