merge from gcc
authorDJ Delorie <dj@redhat.com>
Tue, 26 Jul 2011 16:04:38 +0000 (16:04 +0000)
committerDJ Delorie <dj@redhat.com>
Tue, 26 Jul 2011 16:04:38 +0000 (16:04 +0000)
libiberty/ChangeLog
libiberty/cp-demangle.c
libiberty/testsuite/demangle-expected

index 97c50c0ea7d587d8e9545bf274ea26cc4fdf7902..1ceb0ee27876225acb99d41a2ce9d2b9486f3bd0 100644 (file)
@@ -1,3 +1,9 @@
+2011-07-26  Ian Lance Taylor  <iant@google.com>
+
+       * cp-demangle.c (d_print_init): Initialize pack_index field.
+       (d_print_comp): Check for NULL template argument.
+       * testsuite/demangle-expected: Add test case.
+
 2011-07-22  Gerald Pfeifer  <gerald@pfeifer.com>
 
        PR target/49817
index 29badbba1875661437d73b499e8d830eaa4bca9d..f41856be6d0f922d1e3c0461163d81baea770175 100644 (file)
@@ -1,5 +1,5 @@
 /* Demangler for g++ V3 ABI.
-   Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+   Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
    Free Software Foundation, Inc.
    Written by Ian Lance Taylor <ian@wasabisystems.com>.
 
@@ -3306,6 +3306,7 @@ d_print_init (struct d_print_info *dpi, demangle_callbackref callback,
   dpi->last_char = '\0';
   dpi->templates = NULL;
   dpi->modifiers = NULL;
+  dpi->pack_index = 0;
   dpi->flush_count = 0;
 
   dpi->callback = callback;
@@ -3893,6 +3894,13 @@ d_print_comp (struct d_print_info *dpi, int options,
            struct demangle_component *a = d_lookup_template_argument (dpi, sub);
            if (a && a->type == DEMANGLE_COMPONENT_TEMPLATE_ARGLIST)
              a = d_index_template_argument (a, dpi->pack_index);
+
+           if (a == NULL)
+             {
+               d_print_error (dpi);
+               return;
+             }
+
            sub = a;
          }
 
index 2dc74beb9e233f425cd601a5ebaa741f9238380b..d3e709924dc12c9e18197fd2b8a1018415121aba 100644 (file)
@@ -4010,6 +4010,12 @@ K<1, &S::m>::f()
 _ZN1KILi1EXadL_ZN1S1mEEEE1fEv
 K<1, &S::m>::f()
 #
+# Used to crash -- binutils PR 13030.
+--format=gnu-v3
+_ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_
+_ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_
+_ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_
+#
 # Ada (GNAT) tests.
 #
 # Simple test.