X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=binutils%2Fdwarf.h;h=344cc4278679334bda3d4d8758c81262b4605ab2;hb=29b2c556d2655b11483d07468d1eaf2dff1395ce;hp=88595ba286e127cd8fe6fafcfce0b26bd7e3d86c;hpb=1b315056928c75e989b6a0fa858577141da5cc4f;p=deliverable%2Fbinutils-gdb.git diff --git a/binutils/dwarf.h b/binutils/dwarf.h index 88595ba286..344cc42786 100644 --- a/binutils/dwarf.h +++ b/binutils/dwarf.h @@ -1,5 +1,5 @@ /* dwarf.h - DWARF support header file - Copyright 2005, 2007, 2008 + Copyright 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GNU Binutils. @@ -19,25 +19,104 @@ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ -#if __STDC_VERSION__ >= 199901L || (defined(__GNUC__) && __GNUC__ >= 2) -/* We can't use any bfd types here since readelf may define BFD64 and - objdump may not. */ -typedef unsigned long long dwarf_vma; -typedef unsigned long long dwarf_size_type; -#else -typedef unsigned long dwarf_vma; -typedef unsigned long dwarf_size_type; -#endif +typedef unsigned HOST_WIDEST_INT dwarf_vma; +typedef unsigned HOST_WIDEST_INT dwarf_size_type; + +/* Structure found in the .debug_line section. */ +typedef struct +{ + unsigned char li_length [4]; + unsigned char li_version [2]; + unsigned char li_prologue_length [4]; + unsigned char li_min_insn_length [1]; + unsigned char li_default_is_stmt [1]; + unsigned char li_line_base [1]; + unsigned char li_line_range [1]; + unsigned char li_opcode_base [1]; +} +DWARF2_External_LineInfo; + +typedef struct +{ + bfd_vma li_length; + unsigned short li_version; + unsigned int li_prologue_length; + unsigned char li_min_insn_length; + unsigned char li_max_ops_per_insn; + unsigned char li_default_is_stmt; + int li_line_base; + unsigned char li_line_range; + unsigned char li_opcode_base; +} +DWARF2_Internal_LineInfo; + +/* Structure found in .debug_pubnames section. */ +typedef struct +{ + unsigned char pn_length [4]; + unsigned char pn_version [2]; + unsigned char pn_offset [4]; + unsigned char pn_size [4]; +} +DWARF2_External_PubNames; + +typedef struct +{ + bfd_vma pn_length; + unsigned short pn_version; + bfd_vma pn_offset; + bfd_vma pn_size; +} +DWARF2_Internal_PubNames; + +/* Structure found in .debug_info section. */ +typedef struct +{ + unsigned char cu_length [4]; + unsigned char cu_version [2]; + unsigned char cu_abbrev_offset [4]; + unsigned char cu_pointer_size [1]; +} +DWARF2_External_CompUnit; + +typedef struct +{ + bfd_vma cu_length; + unsigned short cu_version; + bfd_vma cu_abbrev_offset; + unsigned char cu_pointer_size; +} +DWARF2_Internal_CompUnit; + +typedef struct +{ + unsigned char ar_length [4]; + unsigned char ar_version [2]; + unsigned char ar_info_offset [4]; + unsigned char ar_pointer_size [1]; + unsigned char ar_segment_size [1]; +} +DWARF2_External_ARange; + +typedef struct +{ + bfd_vma ar_length; + unsigned short ar_version; + bfd_vma ar_info_offset; + unsigned char ar_pointer_size; + unsigned char ar_segment_size; +} +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(). */ + 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; + const char *name; unsigned char *start; dwarf_vma address; dwarf_size_type size; @@ -49,11 +128,12 @@ struct dwarf_section_display { struct dwarf_section section; int (*display) (struct dwarf_section *, void *); + int *enabled; unsigned int relocate : 1; - unsigned int eh_frame : 1; }; -enum dwarf_section_display_enum { +enum dwarf_section_display_enum +{ abbrev = 0, aranges, frame, @@ -70,6 +150,9 @@ enum dwarf_section_display_enum { static_vars, types, weaknames, + trace_info, + trace_abbrev, + trace_aranges, max }; @@ -80,30 +163,29 @@ extern struct dwarf_section_display debug_displays []; typedef struct { unsigned int pointer_size; - unsigned long cu_offset; - unsigned long base_address; + unsigned int offset_size; + int dwarf_version; + bfd_vma cu_offset; + bfd_vma base_address; /* This is an array of offsets to the location list table. */ - unsigned long *loc_offsets; + bfd_vma *loc_offsets; int *have_frame_base; unsigned int num_loc_offsets; unsigned int max_loc_offsets; - unsigned long *range_lists; + /* List of .debug_ranges offsets seen in this .debug_info. */ + bfd_vma *range_lists; unsigned int num_range_lists; unsigned int max_range_lists; } debug_info; -extern dwarf_vma (*byte_get) (unsigned char *, int); -extern dwarf_vma byte_get_little_endian (unsigned char *, int); -extern dwarf_vma byte_get_big_endian (unsigned char *, int); - extern int eh_addr_size; extern int do_debug_info; extern int do_debug_abbrevs; extern int do_debug_lines; -extern int do_debug_lines_decoded; extern int do_debug_pubnames; +extern int do_debug_pubtypes; extern int do_debug_aranges; extern int do_debug_ranges; extern int do_debug_frames; @@ -111,8 +193,15 @@ extern int do_debug_frames_interp; extern int do_debug_macinfo; extern int do_debug_str; extern int do_debug_loc; +extern int do_gdb_index; +extern int do_trace_info; +extern int do_trace_abbrevs; +extern int do_trace_aranges; +extern int do_wide; extern void init_dwarf_regnames (unsigned int); +extern void init_dwarf_regnames_i386 (void); +extern void init_dwarf_regnames_x86_64 (void); extern int load_debug_section (enum dwarf_section_display_enum, void *); @@ -120,9 +209,13 @@ extern void free_debug_section (enum dwarf_section_display_enum); extern void free_debug_memory (void); +extern void dwarf_select_sections_by_names (const char *); +extern void dwarf_select_sections_by_letters (const char *); +extern void dwarf_select_sections_all (void); + void *cmalloc (size_t, size_t); void *xcmalloc (size_t, size_t); void *xcrealloc (void *, size_t, size_t); -void error (const char *, ...) ATTRIBUTE_PRINTF_1; -void warn (const char *, ...) ATTRIBUTE_PRINTF_1; +bfd_vma read_leb128 (unsigned char *data, + unsigned int *length_return, int sign);