OSDN Git Service

2007-07-03 Paolo Carlini <pcarlini@suse.de>
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 4 Jul 2007 00:09:22 +0000 (00:09 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 4 Jul 2007 00:09:22 +0000 (00:09 +0000)
PR libstdc++/31518
* include/debug/formatter.h (_Error_formatter::_M_get_max_length): New.
(_Error_formatter::_Error_formatter): Use it.
* src/debug.cc: Define.
(_Error_formatter::_M_error): Tweak.
* configure.ac: Adjust version to 6:10:0.
* config/abi/pre/gnu.ver: Export _Error_formatter::_M_get_max_length
at GLIBCXX_3.4.10.
* testsuite/util/testsuite_abi.cc: Add GLIBCXX_3.4.10.
* docs/html/debug.html: Document.
* configure: Regenerate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@126287 138bc75d-0d04-0410-961f-82ee72b054a4

libstdc++-v3/ChangeLog
libstdc++-v3/config/abi/pre/gnu.ver
libstdc++-v3/configure
libstdc++-v3/configure.ac
libstdc++-v3/docs/html/debug.html
libstdc++-v3/include/debug/formatter.h
libstdc++-v3/src/debug.cc
libstdc++-v3/testsuite/util/testsuite_abi.cc

index 6ee0d59..e467b5e 100644 (file)
@@ -1,3 +1,17 @@
+2007-07-03  Paolo Carlini  <pcarlini@suse.de>
+
+       PR libstdc++/31518
+       * include/debug/formatter.h (_Error_formatter::_M_get_max_length): New.
+       (_Error_formatter::_Error_formatter): Use it.
+       * src/debug.cc: Define.
+       (_Error_formatter::_M_error): Tweak.
+       * configure.ac: Adjust version to 6:10:0.
+       * config/abi/pre/gnu.ver: Export _Error_formatter::_M_get_max_length
+       at GLIBCXX_3.4.10.
+       * testsuite/util/testsuite_abi.cc: Add GLIBCXX_3.4.10.
+       * docs/html/debug.html: Document.
+       * configure: Regenerate.
+
 2007-07-02  Douglas Gregor  <doug.gregor@gmail.com>
 
        * testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
index 92c85e5..a7f378d 100644 (file)
@@ -122,8 +122,8 @@ GLIBCXX_3.4 {
       std::__num_base::_S_atoms_out;
       std::__moneypunct_cache*;
       std::__numpunct_cache*;
-      std::__timepunct_cache*;
-      __gnu_debug::_Error_formatter*
+      std::__timepunct_cache*
+#     __gnu_debug::_Error_formatter*
     };
 
     # Names not in an 'extern' block are mangled names.
@@ -138,6 +138,13 @@ GLIBCXX_3.4 {
     _ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv;
     _ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_;
 
+    # __gnu_debug::_Error_formatter
+    _ZNK11__gnu_debug16_Error_formatter10_M_message*;
+    _ZNK11__gnu_debug16_Error_formatter10_Parameter*;
+    _ZNK11__gnu_debug16_Error_formatter13_M_print_word*;
+    _ZNK11__gnu_debug16_Error_formatter15_M_print_string*;
+    _ZNK11__gnu_debug16_Error_formatter8_M_error*;
+    
     # std::string
     _ZNSsC*;
     _ZNSsD*;
@@ -708,6 +715,12 @@ GLIBCXX_3.4.9 {
 
 } GLIBCXX_3.4.8;
 
+GLIBCXX_3.4.10 {
+
+    _ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv;
+
+} GLIBCXX_3.4.9;
+
 # Symbols in the support library (libsupc++) have their own tag.
 CXXABI_1.3 {
 
index d58168b..56368b1 100755 (executable)
@@ -1547,7 +1547,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 ### am handles this now?  ORIGINAL_LD_FOR_MULTILIBS=$LD
 
 # For libtool versioning info, format is CURRENT:REVISION:AGE
-libtool_VERSION=6:9:0
+libtool_VERSION=6:10:0
 
 
 # Find the rest of the source tree framework.
index 5299480..bbef6c1 100644 (file)
@@ -12,7 +12,7 @@ AC_CONFIG_HEADER(config.h)
 ### am handles this now?  ORIGINAL_LD_FOR_MULTILIBS=$LD
 
 # For libtool versioning info, format is CURRENT:REVISION:AGE
-libtool_VERSION=6:9:0
+libtool_VERSION=6:10:0
 AC_SUBST(libtool_VERSION)
 
 # Find the rest of the source tree framework.
index 09a1677..6013115 100644 (file)
   instantiation of a container is passed between the two translation
   units.</p>
 
+<p>By default, error messages are formatted to fit on lines of about
+  78 characters.  The environment variable
+  <code>GLIBCXX_DEBUG_MESSAGE_LENGTH</code> can be used to request a
+  different length.</p>
+
 <p>For information about the design of the libstdc++ debug mode,
   please see the <a href="debug_mode.html">libstdc++ debug mode design
   document</a>.</p>
index 8975285..8a0565f 100644 (file)
@@ -1,6 +1,6 @@
 // Debug-mode error formatting implementation -*- C++ -*-
 
-// Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+// Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
@@ -359,7 +359,7 @@ namespace __gnu_debug
     _Error_formatter(const char* __file, size_t __line)
     : _M_file(__file), _M_line(__line), _M_num_parameters(0), _M_text(0),
       _M_max_length(78), _M_column(1), _M_first_line(true), _M_wordwrap(false)
-    { }
+    { _M_get_max_length(); }
 
     template<typename _Tp>
       void
@@ -371,6 +371,9 @@ namespace __gnu_debug
     void
     _M_print_string(const char* __string) const;
 
+    void
+    _M_get_max_length() const;
+
     enum { __max_parameters = 9 };
 
     const char*         _M_file;
index 4129f68..0391368 100644 (file)
@@ -36,6 +36,7 @@
 #include <cstring>
 #include <cctype>
 #include <cstdio>
+#include <cstdlib>
 
 using namespace std;
 
@@ -496,7 +497,8 @@ namespace __gnu_debug
        _M_column += strlen(__buf);
       }
     
-    _M_wordwrap = true;
+    if (_M_max_length)
+      _M_wordwrap = true;
     _M_print_word("error: ");
     
     // Print the error message
@@ -671,6 +673,19 @@ namespace __gnu_debug
       }
   }
 
+  void
+  _Error_formatter::_M_get_max_length() const
+  {
+    const char* __nptr = std::getenv("GLIBCXX_DEBUG_MESSAGE_LENGTH");
+    if (__nptr)
+      {
+       char* __endptr;
+       const unsigned long __ret = std::strtoul(__nptr, &__endptr, 0);
+       if (*__nptr != '\0' && *__endptr == '\0')
+         _M_max_length = __ret;
+      }
+  }
+
   // Instantiations.
   template
     void
index 64c9011..5c49cbb 100644 (file)
@@ -189,6 +189,7 @@ check_version(symbol& test, bool added)
       known_versions.push_back("GLIBCXX_3.4.7");
       known_versions.push_back("GLIBCXX_3.4.8");
       known_versions.push_back("GLIBCXX_3.4.9");
+      known_versions.push_back("GLIBCXX_3.4.10");
       known_versions.push_back("GLIBCXX_LDBL_3.4");
       known_versions.push_back("GLIBCXX_LDBL_3.4.7");
       known_versions.push_back("CXXABI_1.3");