PR libstdc++/20534 (contd)

2005-05-31  Paolo Carlini  <pcarlini@suse.de>

	PR libstdc++/20534 (contd)
	* include/debug/macros.h: Add _GLIBCXX_DEBUG_ABORT, using
	__gnu_debug::__fancy_abort.
	* src/debug.cc: Define the latter.
	* include/debug/debug.h: Use _GLIBCXX_DEBUG_ABORT instead of
	assert.
	* config/linker-map.gnu (__gnu_debug::__fancy_abort): Add.

From-SVN: r100405
This commit is contained in:
Paolo Carlini 2005-05-31 18:31:55 +00:00 committed by Paolo Carlini
parent 8bd46447b3
commit 87d33b419b
5 changed files with 33 additions and 8 deletions

View file

@ -1,3 +1,13 @@
2005-05-31 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/20534 (contd)
* include/debug/macros.h: Add _GLIBCXX_DEBUG_ABORT, using
__gnu_debug::__fancy_abort.
* src/debug.cc: Define the latter.
* include/debug/debug.h: Use _GLIBCXX_DEBUG_ABORT instead of
assert.
* config/linker-map.gnu (__gnu_debug::__fancy_abort): Add.
2005-05-30 Paolo Carlini <pcarlini@suse.de>
* include/std/std_complex.h (log(const complex<_Tp>&)): When

View file

@ -310,6 +310,7 @@ GLIBCXX_3.4.5 {
_ZNSt8ios_base17_M_call_callbacksENS_5eventE;
_ZNSt8ios_base20_M_dispose_callbacksEv;
_ZNSt6locale5facet13_S_get_c_nameEv;
_ZN11__gnu_debug13__fancy_abortEPKciS1_S1_;
} GLIBCXX_3.4.4;

View file

@ -41,15 +41,10 @@
#ifdef _GLIBCXX_DEBUG
# include <debug/macros.h>
// The debug mode requires assert functionality, but keep this include
// conditionalized, so that non-debug use doesn't mandate exposure to the
// assert macro.
# include <cassert>
# define _GLIBCXX_DEBUG_ASSERT(_Condition) assert(_Condition)
# define _GLIBCXX_DEBUG_ASSERT(_Condition) _GLIBCXX_DEBUG_ABORT(_Condition)
# ifdef _GLIBCXX_DEBUG_PEDANTIC
# define _GLIBCXX_DEBUG_PEDASSERT(_Condition) assert(_Condition)
# define _GLIBCXX_DEBUG_PEDASSERT(_Condition) _GLIBCXX_DEBUG_ABORT(_Condition)
# else
# define _GLIBCXX_DEBUG_PEDASSERT(_Condition)
# endif

View file

@ -40,7 +40,17 @@
* the user error and where the error is reported.
*
*/
#define _GLIBCXX_DEBUG_VERIFY(_Condition,_ErrorMessage) \
namespace __gnu_debug
{ void __fancy_abort(const char*, int, const char*, const char*); }
#define _GLIBCXX_DEBUG_ABORT(_Condition) \
do { \
if (! (_Condition)) \
::__gnu_debug::__fancy_abort(__FILE__, __LINE__, \
__PRETTY_FUNCTION__, \
#_Condition); \
} while (false)
#define _GLIBCXX_DEBUG_VERIFY(_Condition,_ErrorMessage) \
do { \
if (! (_Condition)) \
::__gnu_debug::_Error_formatter::_M_at(__FILE__, __LINE__) \

View file

@ -48,6 +48,15 @@ namespace __gnu_internal
namespace __gnu_debug
{
void
__fancy_abort(const char* __file, int __line, const char* __function,
const char* __condition)
{
printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line,
__function, __condition);
abort();
}
const char* _S_debug_messages[] =
{
"function requires a valid iterator range [%1.name;, %2.name;)",