diff options
author | Cary Coutant <ccoutant@google.com> | 2012-05-11 18:18:34 +0000 |
---|---|---|
committer | Cary Coutant <ccoutant@google.com> | 2012-05-11 18:18:34 +0000 |
commit | 4723351a020971562868ce3d500be1824e820a51 (patch) | |
tree | 28bbdf737a49a2fc81caef9aee9092d3459eb3fa /binutils/dwarf.h | |
parent | 6dea1fbd79e621463ba1eba5b4b417ecdf16b3eb (diff) | |
download | binutils-4723351a020971562868ce3d500be1824e820a51.zip binutils-4723351a020971562868ce3d500be1824e820a51.tar.gz binutils-4723351a020971562868ce3d500be1824e820a51.tar.bz2 |
* doc/binutils.texi: Add --dwarf-check option.
* dwarf.c (dwarf_check): New global flag.
(fetch_indexed_string): New function.
(fetch_indexed_value): New function.
(get_FORM_name): Add DW_FORM_GNU_str_index and DW_FORM_GNU_addr_index.
(decode_location_expression): Add DW_OP_GNU_addr_index.
(read_and_display_attr_value): Add DW_FORM_GNU_str_index,
DW_FORM_GNU_addr_index, DW_AT_GNU_addr_base, and DW_AT_GNU_ranges_base.
(get_AT_name): Add new attributes for Fission.
(process_debug_info): Load new debug sections for Fission.
(load_debug_info): Check for .debug_info.dwo section.
(display_loc_list, display_loc_list_dwo): New functions.
(display_debug_loc): Move logic to above two functions.
(display_debug_info): Choose abbrev section based on info section.
(display_debug_types): Likewise.
(display_trace_info): Likewise.
(comp_addr_base): New function.
(display_debug_addr): New function.
(display_debug_str_offsets): New function.
(display_debug_ranges): Allow missing range lists. Suppress
diagnostics if dwarf_check not set.
(debug_displays): Add column to select abbrev section.
* dwarf.h (enum dwarf_section_display_enum): Add new debug sections
for Fission.
(struct dwarf_section): Add abbrev_sec field.
(struct dwarf_section_display): New type.
(debug_info): Add addr_base, ranges_base fields.
(dwarf_check): New global variable.
* objdump.c (usage): Add --dwarf-check option.
(enum option_values): Add OPTION_DWARF_CHECK.
(long_options): Add --dwarf-check.
(main): Likewise.
* readelf.c (OPTION_DWARF_CHECK): New macro.
(options): Add --dwarf-check.
(parse_args): Likewise.
(process_section_headers): Use const_strneq instead of
streq.
Diffstat (limited to 'binutils/dwarf.h')
-rw-r--r-- | binutils/dwarf.h | 68 |
1 files changed, 44 insertions, 24 deletions
diff --git a/binutils/dwarf.h b/binutils/dwarf.h index 75d93c8..84f5080 100644 --- a/binutils/dwarf.h +++ b/binutils/dwarf.h @@ -109,30 +109,6 @@ typedef struct } DWARF2_Internal_ARange; -struct dwarf_section -{ - /* A debug section has a different name when it's stored compressed - or not. COMPRESSED_NAME and UNCOMPRESSED_NAME are the two - possibilities. NAME is set to whichever one is used for this - input file, as determined by load_debug_section(). */ - const char *uncompressed_name; - const char *compressed_name; - const char *name; - unsigned char *start; - dwarf_vma address; - dwarf_size_type size; -}; - -/* A structure containing the name of a debug section - and a pointer to a function that can decode it. */ -struct dwarf_section_display -{ - struct dwarf_section section; - int (*display) (struct dwarf_section *, void *); - int *enabled; - unsigned int relocate : 1; -}; - enum dwarf_section_display_enum { abbrev = 0, @@ -156,9 +132,45 @@ enum dwarf_section_display_enum trace_info, trace_abbrev, trace_aranges, + info_dwo, + abbrev_dwo, + types_dwo, + line_dwo, + loc_dwo, + macro_dwo, + macinfo_dwo, + str_dwo, + str_index, + str_index_dwo, + debug_addr, max }; +struct dwarf_section +{ + /* A debug section has a different name when it's stored compressed + or not. COMPRESSED_NAME and UNCOMPRESSED_NAME are the two + possibilities. NAME is set to whichever one is used for this + input file, as determined by load_debug_section(). */ + const char *uncompressed_name; + const char *compressed_name; + const char *name; + unsigned char *start; + dwarf_vma address; + dwarf_size_type size; + enum dwarf_section_display_enum abbrev_sec; +}; + +/* A structure containing the name of a debug section + and a pointer to a function that can decode it. */ +struct dwarf_section_display +{ + struct dwarf_section section; + int (*display) (struct dwarf_section *, void *); + int *enabled; + unsigned int relocate : 1; +}; + extern struct dwarf_section_display debug_displays []; /* This structure records the information that @@ -170,6 +182,12 @@ typedef struct int dwarf_version; dwarf_vma cu_offset; dwarf_vma base_address; + /* This field is filled in when reading the attribute DW_AT_GNU_addr_base and + is used with the form DW_AT_GNU_FORM_addr_index. */ + dwarf_vma addr_base; + /* This field is filled in when reading the attribute DW_AT_GNU_ranges_base and + is used when calculating ranges. */ + dwarf_vma ranges_base; /* This is an array of offsets to the location list table. */ dwarf_vma * loc_offsets; int * have_frame_base; @@ -205,6 +223,8 @@ extern int do_wide; extern int dwarf_cutoff_level; extern unsigned long dwarf_start_die; +extern int dwarf_check; + extern void init_dwarf_regnames (unsigned int); extern void init_dwarf_regnames_i386 (void); extern void init_dwarf_regnames_x86_64 (void); |