* patch: improve decode-to-name of additional dwarf2/dwarf3 codes
@ 2006-11-22 21:46 Gary Funck
2006-11-22 22:29 ` Jim Blandy
0 siblings, 1 reply; 4+ messages in thread
From: Gary Funck @ 2006-11-22 21:46 UTC (permalink / raw)
To: gdb-patches
[-- Attachment #1: Type: text/plain, Size: 1237 bytes --]
While debugging GDB, I noticed the routines in dwarf2read.c that
decode Dwarf2 and Dwarf3 codes into their corresponding string
names have not been updated to include the various encodings
that have been added over the past few years. This primarily
impacts the diagnostic output that assists when debugging GDB.
Attached is a suggested patch (to gdb 6.5), which brings the
various *_name routines up to date with include/elf/dwarf2.h.
There is a small problem in the decoding caused by the
following (in dwarf2.h):
/* GNU extensions. */
DW_OP_GNU_push_tls_address = 0xe0,
/* HP extensions. */
DW_OP_HP_unknown = 0xe0, /* Ouch, the same as GNU_push_tls_address.
*/
I arbitrarily chose to decode 0xe0 as "DW_OP_GNU_push_tls_address".
Also, I preserved the "#ifdef MIPS" inside dwarf_attr_name(), but
it wasn't clear to me that it is needed. If it is, then for
consistency, perhaps ifdef's for HP, GNU, DWARF3, and other
extensions to Dwarf2 would also be required.
ChangeLog:
* dwarf2read.c (dwarf_attr_name dwarf_cfi_name dwarf_stack_op_name
dwarf_tag_name dwarf_type_encoding_name): decode additional Dwarf2
and Dwarf3 codes into their corresponding string names.
Diffs attached.
[-- Attachment #2: improve-decode-to-name-dwarf2read.c.patch --]
[-- Type: application/octet-stream, Size: 9709 bytes --]
Index: dwarf2read.c
===================================================================
RCS file: /storage/cvs/upc/gdb-upc/gdb/dwarf2read.c,v
retrieving revision 1.1
diff -u -p -r1.1 dwarf2read.c
--- dwarf2read.c 13 May 2006 15:46:38 -0000 1.1
+++ dwarf2read.c 22 Nov 2006 20:00:48 -0000
@@ -7753,14 +7753,34 @@ dwarf_tag_name (unsigned tag)
return "DW_TAG_partial_unit";
case DW_TAG_imported_unit:
return "DW_TAG_imported_unit";
+ case DW_TAG_condition:
+ return "DW_TAG_condition";
+ case DW_TAG_shared_type:
+ return "DW_TAG_shared_type";
case DW_TAG_MIPS_loop:
return "DW_TAG_MIPS_loop";
+ case DW_TAG_HP_array_descriptor:
+ return "DW_TAG_HP_array_descriptor";
case DW_TAG_format_label:
return "DW_TAG_format_label";
case DW_TAG_function_template:
return "DW_TAG_function_template";
case DW_TAG_class_template:
return "DW_TAG_class_template";
+ case DW_TAG_GNU_BINCL:
+ return "DW_TAG_GNU_BINCL";
+ case DW_TAG_GNU_EINCL:
+ return "DW_TAG_GNU_EINCL";
+ 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";
+ case DW_TAG_PGI_kanji_type:
+ return "DW_TAG_PGI_kanji_type";
+ case DW_TAG_PGI_interface_block:
+ return "DW_TAG_PGI_interface_block";
default:
return "DW_TAG_<unknown>";
}
@@ -7897,6 +7917,7 @@ dwarf_attr_name (unsigned attr)
return "DW_AT_virtuality";
case DW_AT_vtable_elem_location:
return "DW_AT_vtable_elem_location";
+ /* DWARF 3 values. */
case DW_AT_allocated:
return "DW_AT_allocated";
case DW_AT_associated:
@@ -7921,7 +7942,38 @@ dwarf_attr_name (unsigned attr)
return "DW_AT_call_file";
case DW_AT_call_line:
return "DW_AT_call_line";
+ case DW_AT_description:
+ return "DW_AT_description";
+ case DW_AT_binary_scale:
+ return "DW_AT_binary_scale";
+ case DW_AT_decimal_scale:
+ return "DW_AT_decimal_scale";
+ case DW_AT_small:
+ return "DW_AT_small";
+ case DW_AT_decimal_sign:
+ return "DW_AT_decimal_sign";
+ case DW_AT_digit_count:
+ return "DW_AT_digit_count";
+ case DW_AT_picture_string:
+ return "DW_AT_picture_string";
+ case DW_AT_mutable:
+ return "DW_AT_mutable";
+ case DW_AT_threads_scaled:
+ return "DW_AT_threads_scaled";
+ case DW_AT_explicit:
+ return "DW_AT_explicit";
+ case DW_AT_object_pointer:
+ return "DW_AT_object_pointer";
+ case DW_AT_endianity:
+ return "DW_AT_endianity";
+ case DW_AT_elemental:
+ return "DW_AT_elemental";
+ case DW_AT_pure:
+ return "DW_AT_pure";
+ case DW_AT_recursive:
+ return "DW_AT_recursive";
#ifdef MIPS
+ /* SGI/MIPS extensions. */
case DW_AT_MIPS_fde:
return "DW_AT_MIPS_fde";
case DW_AT_MIPS_loop_begin:
@@ -7934,10 +7986,47 @@ dwarf_attr_name (unsigned attr)
return "DW_AT_MIPS_loop_unroll_factor";
case DW_AT_MIPS_software_pipeline_depth:
return "DW_AT_MIPS_software_pipeline_depth";
-#endif
case DW_AT_MIPS_linkage_name:
return "DW_AT_MIPS_linkage_name";
-
+ case DW_AT_MIPS_stride:
+ return "DW_AT_MIPS_stride";
+ case DW_AT_MIPS_abstract_name:
+ return "DW_AT_MIPS_abstract_name";
+ case DW_AT_MIPS_clone_origin:
+ return "DW_AT_MIPS_clone_origin";
+ case DW_AT_MIPS_has_inlines:
+ return "DW_AT_MIPS_has_inlines";
+#endif
+ /* HP extensions. */
+ case DW_AT_HP_block_index:
+ return "DW_AT_HP_block_index";
+ case DW_AT_HP_unmodifiable:
+ return "DW_AT_HP_unmodifiable";
+ case DW_AT_HP_actuals_stmt_list:
+ return "DW_AT_HP_actuals_stmt_list";
+ case DW_AT_HP_proc_per_section:
+ return "DW_AT_HP_proc_per_section";
+ case DW_AT_HP_raw_data_ptr:
+ return "DW_AT_HP_raw_data_ptr";
+ case DW_AT_HP_pass_by_reference:
+ return "DW_AT_HP_pass_by_reference";
+ case DW_AT_HP_opt_level:
+ return "DW_AT_HP_opt_level";
+ case DW_AT_HP_prof_version_id:
+ return "DW_AT_HP_prof_version_id";
+ case DW_AT_HP_opt_flags:
+ return "DW_AT_HP_opt_flags";
+ case DW_AT_HP_cold_region_low_pc:
+ return "DW_AT_HP_cold_region_low_pc";
+ case DW_AT_HP_cold_region_high_pc:
+ return "DW_AT_HP_cold_region_high_pc";
+ case DW_AT_HP_all_variables_modifiable:
+ return "DW_AT_HP_all_variables_modifiable";
+ case DW_AT_HP_linkage_name:
+ return "DW_AT_HP_linkage_name";
+ case DW_AT_HP_prof_flags:
+ return "DW_AT_HP_prof_flags";
+ /* GNU extensions. */
case DW_AT_sf_names:
return "DW_AT_sf_names";
case DW_AT_src_info:
@@ -7952,6 +8041,19 @@ dwarf_attr_name (unsigned attr)
return "DW_AT_body_end";
case DW_AT_GNU_vector:
return "DW_AT_GNU_vector";
+ /* VMS extensions. */
+ case DW_AT_VMS_rtnbeg_pd_address:
+ return "DW_AT_VMS_rtnbeg_pd_address";
+ /* UPC extension. */
+ case DW_AT_upc_threads_scaled:
+ return "DW_AT_upc_threads_scaled";
+ /* PGI (STMicroelectronics) extensions. */
+ case DW_AT_PGI_lbase:
+ return "DW_AT_PGI_lbase";
+ case DW_AT_PGI_soffset:
+ return "DW_AT_PGI_soffset";
+ case DW_AT_PGI_lstride:
+ return "DW_AT_PGI_lstride";
default:
return "DW_AT_<unknown>";
}
@@ -8308,7 +8410,7 @@ dwarf_stack_op_name (unsigned op)
return "DW_OP_xderef_size";
case DW_OP_nop:
return "DW_OP_nop";
- /* DWARF 3 extensions. */
+ /* DWARF 3 extensions. */
case DW_OP_push_object_address:
return "DW_OP_push_object_address";
case DW_OP_call2:
@@ -8317,9 +8419,28 @@ dwarf_stack_op_name (unsigned op)
return "DW_OP_call4";
case DW_OP_call_ref:
return "DW_OP_call_ref";
- /* GNU extensions. */
+ /* GNU extensions. */
+ case DW_OP_form_tls_address:
+ return "DW_OP_form_tls_address";
+ case DW_OP_call_frame_cfa:
+ return "DW_OP_call_frame_cfa";
+ case DW_OP_bit_piece:
+ return "DW_OP_bit_piece";
case DW_OP_GNU_push_tls_address:
return "DW_OP_GNU_push_tls_address";
+ /* HP extensions. */
+ case DW_OP_HP_is_value:
+ return "DW_OP_HP_is_value";
+ case DW_OP_HP_fltconst4:
+ return "DW_OP_HP_fltconst4";
+ case DW_OP_HP_fltconst8:
+ return "DW_OP_HP_fltconst8";
+ case DW_OP_HP_mod_range:
+ return "DW_OP_HP_mod_range";
+ case DW_OP_HP_unmod_range:
+ return "DW_OP_HP_unmod_range";
+ case DW_OP_HP_tls:
+ return "DW_OP_HP_tls";
default:
return "OP_<unknown>";
}
@@ -8341,6 +8462,8 @@ dwarf_type_encoding_name (unsigned enc)
{
switch (enc)
{
+ case DW_ATE_void:
+ return "DW_ATE_void";
case DW_ATE_address:
return "DW_ATE_address";
case DW_ATE_boolean:
@@ -8357,8 +8480,36 @@ dwarf_type_encoding_name (unsigned enc)
return "DW_ATE_unsigned";
case DW_ATE_unsigned_char:
return "DW_ATE_unsigned_char";
+ /* DWARF 3. */
case DW_ATE_imaginary_float:
return "DW_ATE_imaginary_float";
+ case DW_ATE_packed_decimal:
+ return "DW_ATE_packed_decimal";
+ case DW_ATE_numeric_string:
+ return "DW_ATE_numeric_string";
+ case DW_ATE_edited:
+ return "DW_ATE_edited";
+ case DW_ATE_signed_fixed:
+ return "DW_ATE_signed_fixed";
+ case DW_ATE_unsigned_fixed:
+ return "DW_ATE_unsigned_fixed";
+ case DW_ATE_decimal_float:
+ return "DW_ATE_decimal_float";
+ /* HP extensions. */
+ case DW_ATE_HP_float80:
+ return "DW_ATE_HP_float80";
+ case DW_ATE_HP_complex_float80:
+ return "DW_ATE_HP_complex_float80";
+ case DW_ATE_HP_float128:
+ return "DW_ATE_HP_float128";
+ case DW_ATE_HP_complex_float128:
+ return "DW_ATE_HP_complex_float128";
+ case DW_ATE_HP_floathpintel:
+ return "DW_ATE_HP_floathpintel";
+ case DW_ATE_HP_imaginary_float80:
+ return "DW_ATE_HP_imaginary_float80";
+ case DW_ATE_HP_imaginary_float128:
+ return "DW_ATE_HP_imaginary_float128";
default:
return "DW_ATE_<unknown>";
}
@@ -8408,8 +8559,7 @@ dwarf_cfi_name (unsigned cfi_opc)
return "DW_CFA_def_cfa_register";
case DW_CFA_def_cfa_offset:
return "DW_CFA_def_cfa_offset";
-
- /* DWARF 3 */
+ /* DWARF 3. */
case DW_CFA_def_cfa_expression:
return "DW_CFA_def_cfa_expression";
case DW_CFA_expression:
@@ -8420,19 +8570,22 @@ dwarf_cfi_name (unsigned cfi_opc)
return "DW_CFA_def_cfa_sf";
case DW_CFA_def_cfa_offset_sf:
return "DW_CFA_def_cfa_offset_sf";
-
- /* SGI/MIPS specific */
+ case DW_CFA_val_offset:
+ return "DW_CFA_val_offset";
+ case DW_CFA_val_offset_sf:
+ return "DW_CFA_val_offset_sf";
+ case DW_CFA_val_expression:
+ return "DW_CFA_val_expression";
+ /* SGI/MIPS specific. */
case DW_CFA_MIPS_advance_loc8:
return "DW_CFA_MIPS_advance_loc8";
-
- /* GNU extensions */
+ /* GNU extensions. */
case DW_CFA_GNU_window_save:
return "DW_CFA_GNU_window_save";
case DW_CFA_GNU_args_size:
return "DW_CFA_GNU_args_size";
case DW_CFA_GNU_negative_offset_extended:
return "DW_CFA_GNU_negative_offset_extended";
-
default:
return "DW_CFA_<unknown>";
}
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: patch: improve decode-to-name of additional dwarf2/dwarf3 codes
2006-11-22 21:46 patch: improve decode-to-name of additional dwarf2/dwarf3 codes Gary Funck
@ 2006-11-22 22:29 ` Jim Blandy
2006-11-27 21:24 ` Jim Blandy
2006-11-28 15:37 ` Daniel Jacobowitz
0 siblings, 2 replies; 4+ messages in thread
From: Jim Blandy @ 2006-11-22 22:29 UTC (permalink / raw)
To: Gary Funck; +Cc: gdb-patches
"Gary Funck" <gary@intrepid.com> writes:
> While debugging GDB, I noticed the routines in dwarf2read.c that
> decode Dwarf2 and Dwarf3 codes into their corresponding string
> names have not been updated to include the various encodings
> that have been added over the past few years. This primarily
> impacts the diagnostic output that assists when debugging GDB.
>
> Attached is a suggested patch (to gdb 6.5), which brings the
> various *_name routines up to date with include/elf/dwarf2.h.
>
> There is a small problem in the decoding caused by the
> following (in dwarf2.h):
>
> /* GNU extensions. */
> DW_OP_GNU_push_tls_address = 0xe0,
> /* HP extensions. */
> DW_OP_HP_unknown = 0xe0, /* Ouch, the same as GNU_push_tls_address.
> */
>
> I arbitrarily chose to decode 0xe0 as "DW_OP_GNU_push_tls_address".
> Also, I preserved the "#ifdef MIPS" inside dwarf_attr_name(), but
> it wasn't clear to me that it is needed. If it is, then for
> consistency, perhaps ifdef's for HP, GNU, DWARF3, and other
> extensions to Dwarf2 would also be required.
>
> ChangeLog:
>
> * dwarf2read.c (dwarf_attr_name dwarf_cfi_name dwarf_stack_op_name
> dwarf_tag_name dwarf_type_encoding_name): decode additional Dwarf2
> and Dwarf3 codes into their corresponding string names.
Hi, this looks good. Some minor comments:
- In your ChangeLog entry, put commas between the function names.
It's also standard now to enclose each full line in the list of
function names in its own pair of parens, as was done here, in the
4th through 6th lines:
* target.h (enum target_object): Add TARGET_OBJECT_FLASH.
(target_write_with_progress): Update comment.
(struct target_ops): Add to_flash_erase and to_flash_done.
(target_flash_erase, target_flash_done, struct memory_write_request)
(memory_write_request_s, enum flash_preserve_mode)
(target_write_memory_blocks): New, including a vector type
for memory_write_request_s.
- DWARF is an acronym (Debug With Arbitrary Record Format), so it
needs to be written in all caps. The version number isn't a part of
the name; "DWARF 2" and "DWARF 3" is best.
- Thanks for fixing the indentation, and making the comments end with
a period and two spaces.
Do you have a copyright assignment on file with the FSF? I know this
change is mostly mechanical, but I think it's arguably copyrightable,
and I'd like to stay out of gray areas when it comes to these
intellectual property issues.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: patch: improve decode-to-name of additional dwarf2/dwarf3 codes
2006-11-22 22:29 ` Jim Blandy
@ 2006-11-27 21:24 ` Jim Blandy
2006-11-28 15:37 ` Daniel Jacobowitz
1 sibling, 0 replies; 4+ messages in thread
From: Jim Blandy @ 2006-11-27 21:24 UTC (permalink / raw)
To: Jim Blandy; +Cc: Gary Funck, gdb-patches
On 11/22/06, Jim Blandy <jimb@codesourcery.com> wrote:
> - DWARF is an acronym (Debug With Arbitrary Record Format), so it
> needs to be written in all caps. The version number isn't a part of
> the name; "DWARF 2" and "DWARF 3" is best.
David Anderson has politely told me off-list that it's actually
"Debugging With Attributed Record Formats".
http://dwarf.freestandards.org/faq.php
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: patch: improve decode-to-name of additional dwarf2/dwarf3 codes
2006-11-22 22:29 ` Jim Blandy
2006-11-27 21:24 ` Jim Blandy
@ 2006-11-28 15:37 ` Daniel Jacobowitz
1 sibling, 0 replies; 4+ messages in thread
From: Daniel Jacobowitz @ 2006-11-28 15:37 UTC (permalink / raw)
To: Jim Blandy; +Cc: Gary Funck, gdb-patches
On Wed, Nov 22, 2006 at 02:30:13PM -0800, Jim Blandy wrote:
> Do you have a copyright assignment on file with the FSF? I know this
> change is mostly mechanical, but I think it's arguably copyrightable,
> and I'd like to stay out of gray areas when it comes to these
> intellectual property issues.
I believe that Intrepid has a suitable corporate assignment.
--
Daniel Jacobowitz
CodeSourcery
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2006-11-28 15:37 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-11-22 21:46 patch: improve decode-to-name of additional dwarf2/dwarf3 codes Gary Funck
2006-11-22 22:29 ` Jim Blandy
2006-11-27 21:24 ` Jim Blandy
2006-11-28 15:37 ` Daniel Jacobowitz
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox