merge from gcc
authorDJ Delorie <dj@redhat.com>
Sun, 11 Nov 2012 22:37:30 +0000 (22:37 +0000)
committerDJ Delorie <dj@redhat.com>
Sun, 11 Nov 2012 22:37:30 +0000 (22:37 +0000)
include/ChangeLog
include/demangle.h
include/dwarf2.def
include/dwarf2.h
libiberty/ChangeLog
libiberty/cp-demangle.c
libiberty/testsuite/demangle-expected

index 8fb2c4fca86dceeba0ced6215d0ddec02e004599..b85c7edf93895c14f681db032849ca4e1beabbde 100644 (file)
@@ -1,3 +1,16 @@
+2012-11-09  Jason Merrill  <jason@redhat.com>
+
+       * demangle.h (enum demangle_component_type): Add
+       DEMANGLE_COMPONENT_TAGGED_NAME.
+
+2012-10-29  Sterling Augustine <saugustine@google.com>
+            Cary Coutant <ccoutant@google.com>
+
+       * dwarf2.h (dwarf_location_list_entry_type): New enum with fields
+       DW_LLE_GNU_end_of_list_entry, DW_LLE_GNU_base_address_selection_entry,
+       DW_LLE_GNU_start_end_entry and DW_LLE_GNU_start_length_entry.
+
+
 2012-10-26  Shinichiro Hamaji  <shinichiro.hamaji@gmail.com>
 
        * dwarf2.h (DW_AT_APPLE_optimized, DW_AT_APPLE_flags)
index 5da79d85221d303b1cec75904859193b94014c9c..ed019500393859b525e7de0cdcd3246a3f2dd733 100644 (file)
@@ -420,6 +420,8 @@ enum demangle_component_type
   DEMANGLE_COMPONENT_NONTRANSACTION_CLONE,
   /* A pack expansion.  */
   DEMANGLE_COMPONENT_PACK_EXPANSION,
+  /* A name with an ABI tag.  */
+  DEMANGLE_COMPONENT_TAGGED_NAME,
   /* A cloned function.  */
   DEMANGLE_COMPONENT_CLONE
 };
index fd2d0801fee39afbeea29fbaea612f8d350e2530..7fe2df126c5faaae1f4c8811b74fec8f038bec8e 100644 (file)
@@ -403,20 +403,6 @@ DW_AT (DW_AT_upc_threads_scaled, 0x3210)
 DW_AT (DW_AT_PGI_lbase, 0x3a00)
 DW_AT (DW_AT_PGI_soffset, 0x3a01)
 DW_AT (DW_AT_PGI_lstride, 0x3a02)
-/* Apple extensions.  */
-DW_AT (DW_AT_APPLE_optimized, 0x3fe1)
-DW_AT (DW_AT_APPLE_flags, 0x3fe2)
-DW_AT (DW_AT_APPLE_isa, 0x3fe3)
-DW_AT (DW_AT_APPLE_block, 0x3fe4)
-DW_AT (DW_AT_APPLE_major_runtime_vers, 0x3fe5)
-DW_AT (DW_AT_APPLE_runtime_class, 0x3fe6)
-DW_AT (DW_AT_APPLE_omit_frame_ptr, 0x3fe7)
-DW_AT (DW_AT_APPLE_property_name, 0x3fe8)
-DW_AT (DW_AT_APPLE_property_getter, 0x3fe9)
-DW_AT (DW_AT_APPLE_property_setter, 0x3fea)
-DW_AT (DW_AT_APPLE_property_attribute, 0x3feb)
-DW_AT (DW_AT_APPLE_objc_complete_type, 0x3fec)
-DW_AT (DW_AT_APPLE_property, 0x3fed)
 DW_END_AT
 
 DW_FIRST_OP (DW_OP_addr, 0x03)
index 2c1aeb6b912d969c6baaa913884644987704c0db..e98505ac2f928756b5486704c9f25846dbe9b7b3 100644 (file)
@@ -259,6 +259,17 @@ enum dwarf_line_number_hp_sfc_ops
     DW_LNE_HP_SFC_associate = 3
   };
 
+/* Type codes for location list entries.
+   Extension for Fission.  See http://gcc.gnu.org/wiki/DebugFission.  */
+
+enum dwarf_location_list_entry_type
+  {
+    DW_LLE_GNU_end_of_list_entry = 0,
+    DW_LLE_GNU_base_address_selection_entry = 1,
+    DW_LLE_GNU_start_end_entry = 2,
+    DW_LLE_GNU_start_length_entry = 3
+  };
+
 #define DW_CIE_ID        0xffffffff
 #define DW64_CIE_ID      0xffffffffffffffffULL
 #define DW_CIE_VERSION   1
index 303dda23cae01088f4eba47d34e7c5c8ab0fa49b..7ecd6da140e0f91c639aacab545fe221a5128f53 100644 (file)
@@ -1,3 +1,15 @@
+2012-11-10  Jason Merrill  <jason@redhat.com>
+
+       * cp-demangle.c (d_unqualified_name): Handle abi tags here.
+       (d_name): Not here.
+
+2012-11-09  Jason Merrill  <jason@redhat.com>
+
+       * cp-demangle.c (d_dump): Handle DEMANGLE_COMPONENT_TAGGED_NAME.
+       (d_make_comp, d_find_pack, d_print_comp): Likewise.
+       (d_abi_tags): New.
+       (d_name): Call it.
+
 2012-10-08  Jason Merrill  <jason@redhat.com>
 
        * cp-demangle.c (d_special_name, d_dump): Handle TH and TW.
index 32df38c6024b1fa499d06c305b9dd5954772231b..913d4bf09d4bf6f70bde8005409c3d4a801a5068 100644 (file)
@@ -508,6 +508,11 @@ d_dump (struct demangle_component *dc, int indent)
     case DEMANGLE_COMPONENT_NAME:
       printf ("name '%.*s'\n", dc->u.s_name.len, dc->u.s_name.s);
       return;
+    case DEMANGLE_COMPONENT_TAGGED_NAME:
+      printf ("tagged name\n");
+      d_dump (dc->u.s_binary.left, indent + 2);
+      d_dump (dc->u.s_binary.right, indent + 2);
+      return;
     case DEMANGLE_COMPONENT_TEMPLATE_PARAM:
       printf ("template parameter %ld\n", dc->u.s_number.number);
       return;
@@ -809,6 +814,7 @@ d_make_comp (struct d_info *di, enum demangle_component_type type,
     case DEMANGLE_COMPONENT_QUAL_NAME:
     case DEMANGLE_COMPONENT_LOCAL_NAME:
     case DEMANGLE_COMPONENT_TYPED_NAME:
+    case DEMANGLE_COMPONENT_TAGGED_NAME:
     case DEMANGLE_COMPONENT_TEMPLATE:
     case DEMANGLE_COMPONENT_CONSTRUCTION_VTABLE:
     case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:
@@ -1202,6 +1208,23 @@ d_encoding (struct d_info *di, int top_level)
     }
 }
 
+/* <tagged-name> ::= <name> B <source-name> */
+
+static struct demangle_component *
+d_abi_tags (struct d_info *di, struct demangle_component *dc)
+{
+  char peek;
+  while (peek = d_peek_char (di),
+        peek == 'B')
+    {
+      struct demangle_component *tag;
+      d_advance (di, 1);
+      tag = d_source_name (di);
+      dc = d_make_comp (di, DEMANGLE_COMPONENT_TAGGED_NAME, dc, tag);
+    }
+  return dc;
+}
+
 /* <name> ::= <nested-name>
           ::= <unscoped-name>
           ::= <unscoped-template-name> <template-args>
@@ -1416,15 +1439,14 @@ d_prefix (struct d_info *di)
 static struct demangle_component *
 d_unqualified_name (struct d_info *di)
 {
+  struct demangle_component *ret;
   char peek;
 
   peek = d_peek_char (di);
   if (IS_DIGIT (peek))
-    return d_source_name (di);
+    ret = d_source_name (di);
   else if (IS_LOWER (peek))
     {
-      struct demangle_component *ret;
-
       ret = d_operator_name (di);
       if (ret != NULL && ret->type == DEMANGLE_COMPONENT_OPERATOR)
        {
@@ -1433,14 +1455,11 @@ d_unqualified_name (struct d_info *di)
            ret = d_make_comp (di, DEMANGLE_COMPONENT_UNARY, ret,
                               d_source_name (di));
        }
-      return ret;
     }
   else if (peek == 'C' || peek == 'D')
-    return d_ctor_dtor_name (di);
+    ret = d_ctor_dtor_name (di);
   else if (peek == 'L')
     {
-      struct demangle_component * ret;
-
       d_advance (di, 1);
 
       ret = d_source_name (di);
@@ -1448,22 +1467,27 @@ d_unqualified_name (struct d_info *di)
        return NULL;
       if (! d_discriminator (di))
        return NULL;
-      return ret;
     }
   else if (peek == 'U')
     {
       switch (d_peek_next_char (di))
        {
        case 'l':
-         return d_lambda (di);
+         ret = d_lambda (di);
+         break;
        case 't':
-         return d_unnamed_type (di);
+         ret = d_unnamed_type (di);
+         break;
        default:
          return NULL;
        }
     }
   else
     return NULL;
+
+  if (d_peek_char (di) == 'B')
+    ret = d_abi_tags (di, ret);
+  return ret;
 }
 
 /* <source-name> ::= <(positive length) number> <identifier>  */
@@ -3745,6 +3769,7 @@ d_find_pack (struct d_print_info *dpi,
       
     case DEMANGLE_COMPONENT_LAMBDA:
     case DEMANGLE_COMPONENT_NAME:
+    case DEMANGLE_COMPONENT_TAGGED_NAME:
     case DEMANGLE_COMPONENT_OPERATOR:
     case DEMANGLE_COMPONENT_BUILTIN_TYPE:
     case DEMANGLE_COMPONENT_SUB_STD:
@@ -3830,6 +3855,13 @@ d_print_comp (struct d_print_info *dpi, int options,
        d_print_java_identifier (dpi, dc->u.s_name.s, dc->u.s_name.len);
       return;
 
+    case DEMANGLE_COMPONENT_TAGGED_NAME:
+      d_print_comp (dpi, options, d_left (dc));
+      d_append_string (dpi, "[abi:");
+      d_print_comp (dpi, options, d_right (dc));
+      d_append_char (dpi, ']');
+      return;
+
     case DEMANGLE_COMPONENT_QUAL_NAME:
     case DEMANGLE_COMPONENT_LOCAL_NAME:
       d_print_comp (dpi, options, d_left (dc));
index 6b55d30298e54250e9988c5ca50282283894d1a1..5b41b03f9faa1b81b7221ca12a50d143eab6f7de 100644 (file)
@@ -4084,6 +4084,9 @@ auto& f<int>(int const&, int)
 --format=gnu-v3
 _Z1gILi1EEvR1AIXT_EER1BIXscbT_EE
 void g<1>(A<1>&, B<static_cast<bool>(1)>&)
+--format=gnu-v3
+_ZNKSt7complexIiE4realB5cxx11Ev
+std::complex<int>::real[abi:cxx11]() const
 #
 # Ada (GNAT) tests.
 #