This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[patch] C++11: Observers for the three 'handler functions'


This patch implements
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3189.htm

The function pointer holding the current new handler was exposed as an
extern variable, which is unnecessary now there's an accessor for it.
Atomic operations are used to set and retrieve the handlers to avoid
data races, as required by the standard.

        * libsupc++/exception (get_terminate(), get_unexpected()): Declare.
        * libsupc++/eh_terminate.cc (get_terminate() , set_unexpected()):
        Define.
        (set_terminate(terminate_handler)): Set atomically.
        (set_unexpected(terminate_handler)): Likewise.
        * libsupc++/new (get_new_handler()): Declare.
        * libsupc++/new_handler.cc (get_new_handler()): Define.
        (set_new_handler(new_handler)): Set atomically.
        (__new_handler): Use internal linkage.
        * libsupc++/new_op.cc (operator new): Use get_new_handler().
        * libsupc++/new_opnt.cc (operator new): Likewise.
        * acinclude.m4: Bump libtool_VERSION to 6:19:0.
        * configure: Regenerate.
        * libsupc++/Makefile.am: Compile above files with -std=gnu++11.
        * libsupc++/Makefile.in: Regenerate.
        * config/abi/pre/gnu.ver: Add new exports.
        * doc/xml/manual/status_cxx2011.xml: Update.
        * testsuite/18_support/headers/exception/synopsis.cc: Check accessors
        for handlers.
        * testsuite/18_support/headers/new/synopsis.cc: Likewise.
        * testsuite/18_support/new_handler.cc: New.
        * testsuite/18_support/terminate_handler.cc: New.
        * testsuite/18_support/unexpected_handler.cc: New.

Tested x86_64-linux, committed to trunk.

Attachment: patch.txt
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]