* dwarf.c (dw_TAG_name): Handle DW_TAG_GNU_call_site_parameter.
authorJakub Jelinek <jakub@redhat.com>
Wed, 16 Mar 2011 13:00:10 +0000 (13:00 +0000)
committerJakub Jelinek <jakub@redhat.com>
Wed, 16 Mar 2011 13:00:10 +0000 (13:00 +0000)
(read_and_display_attr_value): Handle DW_AT_GNU_call_site_data_value,
DW_AT_GNU_call_site_target and DW_AT_GNU_call_site_target_clobbered.
(get_AT_name): Handle DW_AT_GNU_call_site_value,
DW_AT_GNU_call_site_data_value, DW_AT_GNU_call_site_target,
DW_AT_GNU_call_site_target_clobbered, DW_AT_GNU_tail_call,
DW_AT_GNU_all_tail_call_sites, DW_AT_GNU_all_call_sites and
DW_AT_GNU_all_source_call_sites.
(decode_location_expression) <case DW_OP_GNU_entry_value>: Adjust
handling.

* dwarf.c (get_TAG_name): Handle DW_TAG_GNU_call_site.
(decode_location_expression): Handle DW_OP_GNU_entry_value.
(read_and_display_attr_value): Handle DW_AT_GNU_call_site_value.
(get_AT_name): Likewise.

binutils/ChangeLog
binutils/dwarf.c

index 894df92..e83935a 100644 (file)
@@ -1,3 +1,23 @@
+2011-03-16  Jakub Jelinek  <jakub@redhat.com>
+
+       * dwarf.c (dw_TAG_name): Handle DW_TAG_GNU_call_site_parameter.
+       (read_and_display_attr_value): Handle DW_AT_GNU_call_site_data_value,
+       DW_AT_GNU_call_site_target and DW_AT_GNU_call_site_target_clobbered.
+       (get_AT_name): Handle DW_AT_GNU_call_site_value,
+       DW_AT_GNU_call_site_data_value, DW_AT_GNU_call_site_target,
+       DW_AT_GNU_call_site_target_clobbered, DW_AT_GNU_tail_call,
+       DW_AT_GNU_all_tail_call_sites, DW_AT_GNU_all_call_sites and
+       DW_AT_GNU_all_source_call_sites.
+       (decode_location_expression) <case DW_OP_GNU_entry_value>: Adjust
+       handling.
+
+2011-03-16  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+       * dwarf.c (get_TAG_name): Handle DW_TAG_GNU_call_site.
+       (decode_location_expression): Handle DW_OP_GNU_entry_value.
+       (read_and_display_attr_value): Handle DW_AT_GNU_call_site_value.
+       (get_AT_name): Likewise.
+
 2011-03-14  Michael Snyder  <msnyder@vmware.com>
 
        * objcopy.c (set_pe_subsystem): Free subsystem.
index 36d4ac2..130a295 100644 (file)
@@ -1,5 +1,5 @@
 /* dwarf.c -- display DWARF contents of a BFD binary file
-   Copyright 2005, 2006, 2007, 2008, 2009, 2010
+   Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011
    Free Software Foundation, Inc.
 
    This file is part of GNU Binutils.
@@ -563,6 +563,9 @@ get_TAG_name (unsigned long tag)
     case DW_TAG_upc_shared_type:       return "DW_TAG_upc_shared_type";
     case DW_TAG_upc_strict_type:       return "DW_TAG_upc_strict_type";
     case DW_TAG_upc_relaxed_type:      return "DW_TAG_upc_relaxed_type";
+      /* GNU values.  */
+    case DW_TAG_GNU_call_site:         return "DW_TAG_GNU_call_site";
+    case DW_TAG_GNU_call_site_parameter:return "DW_TAG_GNU_call_site_parameter";
     default:
       {
        static char buffer[100];
@@ -1004,6 +1007,17 @@ decode_location_expression (unsigned char * data,
          display_block (data, uvalue);
          data += uvalue;
          break;
+       case DW_OP_GNU_entry_value:
+         uvalue = read_leb128 (data, &bytes_read, 0);
+         data += bytes_read;
+         printf ("DW_OP_GNU_entry_value: (");
+         if (decode_location_expression (data, pointer_size, offset_size,
+                                         dwarf_version, uvalue,
+                                         cu_offset, section))
+           need_frame_base = 1;
+         putchar (')');
+         data += uvalue;
+         break;
 
          /* GNU extensions.  */
        case DW_OP_GNU_push_tls_address:
@@ -1343,6 +1357,10 @@ read_and_display_attr_value (unsigned long attribute,
        case DW_AT_segment:
        case DW_AT_static_link:
        case DW_AT_use_location:
+       case DW_AT_GNU_call_site_value:
+       case DW_AT_GNU_call_site_data_value:
+       case DW_AT_GNU_call_site_target:
+       case DW_AT_GNU_call_site_target_clobbered:
          if (form == DW_FORM_data4
              || form == DW_FORM_data8
              || form == DW_FORM_sec_offset)
@@ -1587,6 +1605,10 @@ read_and_display_attr_value (unsigned long attribute,
     case DW_AT_segment:
     case DW_AT_static_link:
     case DW_AT_use_location:
+    case DW_AT_GNU_call_site_value:
+    case DW_AT_GNU_call_site_data_value:
+    case DW_AT_GNU_call_site_target:
+    case DW_AT_GNU_call_site_target_clobbered:
       if (form == DW_FORM_data4
          || form == DW_FORM_data8
          || form == DW_FORM_sec_offset)
@@ -1805,6 +1827,14 @@ get_AT_name (unsigned long attribute)
     case DW_AT_GNU_odr_signature:              return "DW_AT_GNU_odr_signature";
     case DW_AT_use_GNAT_descriptive_type:      return "DW_AT_use_GNAT_descriptive_type";
     case DW_AT_GNAT_descriptive_type:          return "DW_AT_GNAT_descriptive_type";
+    case DW_AT_GNU_call_site_value:            return "DW_AT_GNU_call_site_value";
+    case DW_AT_GNU_call_site_data_value:       return "DW_AT_GNU_call_site_data_value";
+    case DW_AT_GNU_call_site_target:           return "DW_AT_GNU_call_site_target";
+    case DW_AT_GNU_call_site_target_clobbered: return "DW_AT_GNU_call_site_target_clobbered";
+    case DW_AT_GNU_tail_call:                  return "DW_AT_GNU_tail_call";
+    case DW_AT_GNU_all_tail_call_sites:                return "DW_AT_GNU_all_tail_call_sites";
+    case DW_AT_GNU_all_call_sites:             return "DW_AT_GNU_all_call_sites";
+    case DW_AT_GNU_all_source_call_sites:      return "DW_AT_GNU_all_source_call_sites";
 
       /* UPC extension.  */
     case DW_AT_upc_threads_scaled:     return "DW_AT_upc_threads_scaled";