diff options
-rw-r--r-- | binutils/ChangeLog | 20 | ||||
-rw-r--r-- | binutils/dwarf.c | 32 |
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"; |