aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2011-03-16 13:00:10 +0000
committerJakub Jelinek <jakub@redhat.com>2011-03-16 13:00:10 +0000
commit629e7ca8ec7498a538a5a21e6689eedeb28207ca (patch)
tree2d54fd6b1c37f9d886d16de8938f43acc123aa4c
parent21be61f5885f889c05f0bc9c36125a68e4995810 (diff)
downloadgdb-629e7ca8ec7498a538a5a21e6689eedeb28207ca.zip
gdb-629e7ca8ec7498a538a5a21e6689eedeb28207ca.tar.gz
gdb-629e7ca8ec7498a538a5a21e6689eedeb28207ca.tar.bz2
* 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. * 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.
-rw-r--r--binutils/ChangeLog20
-rw-r--r--binutils/dwarf.c32
2 files changed, 51 insertions, 1 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 894df92..e83935a 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -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.
diff --git a/binutils/dwarf.c b/binutils/dwarf.c
index 36d4ac2..130a295 100644
--- a/binutils/dwarf.c
+++ b/binutils/dwarf.c
@@ -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";