X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=binutils%2Fdwarf.h;h=db235a9112c28f7686a91fd5702f7745e64907cd;hb=d0ae9fbda7513c1cab463bf1a9b21fdef40e7c56;hp=344cc4278679334bda3d4d8758c81262b4605ab2;hpb=47704ddfbe1f16a1b4291040ca095e0c16b7e5e4;p=binutils-gdb.git diff --git a/binutils/dwarf.h b/binutils/dwarf.h index 344cc427867..db235a9112c 100644 --- a/binutils/dwarf.h +++ b/binutils/dwarf.h @@ -1,6 +1,5 @@ /* dwarf.h - DWARF support header file - Copyright 2005, 2007, 2008, 2009, 2010 - Free Software Foundation, Inc. + Copyright (C) 2005-2014 Free Software Foundation, Inc. This file is part of GNU Binutils. @@ -19,8 +18,9 @@ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ -typedef unsigned HOST_WIDEST_INT dwarf_vma; -typedef unsigned HOST_WIDEST_INT dwarf_size_type; +typedef unsigned HOST_WIDEST_INT dwarf_vma; +typedef HOST_WIDEST_INT dwarf_signed_vma; +typedef unsigned HOST_WIDEST_INT dwarf_size_type; /* Structure found in the .debug_line section. */ typedef struct @@ -38,7 +38,7 @@ DWARF2_External_LineInfo; typedef struct { - bfd_vma li_length; + dwarf_vma li_length; unsigned short li_version; unsigned int li_prologue_length; unsigned char li_min_insn_length; @@ -62,10 +62,10 @@ DWARF2_External_PubNames; typedef struct { - bfd_vma pn_length; + dwarf_vma pn_length; unsigned short pn_version; - bfd_vma pn_offset; - bfd_vma pn_size; + dwarf_vma pn_offset; + dwarf_vma pn_size; } DWARF2_Internal_PubNames; @@ -81,9 +81,9 @@ DWARF2_External_CompUnit; typedef struct { - bfd_vma cu_length; + dwarf_vma cu_length; unsigned short cu_version; - bfd_vma cu_abbrev_offset; + dwarf_vma cu_abbrev_offset; unsigned char cu_pointer_size; } DWARF2_Internal_CompUnit; @@ -100,37 +100,15 @@ DWARF2_External_ARange; typedef struct { - bfd_vma ar_length; + dwarf_vma ar_length; unsigned short ar_version; - bfd_vma ar_info_offset; + dwarf_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(). */ - 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; -}; +/* N.B. The order here must match the order in debug_displays. */ enum dwarf_section_display_enum { @@ -140,22 +118,64 @@ enum dwarf_section_display_enum info, line, pubnames, + gnu_pubnames, eh_frame, macinfo, + macro, str, loc, pubtypes, + gnu_pubtypes, ranges, static_func, static_vars, types, weaknames, + gdb_index, 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, + dwp_cu_index, + dwp_tu_index, 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 @@ -165,15 +185,21 @@ typedef struct unsigned int pointer_size; unsigned int offset_size; int dwarf_version; - bfd_vma cu_offset; - bfd_vma base_address; + 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. */ - bfd_vma *loc_offsets; - int *have_frame_base; + dwarf_vma * loc_offsets; + int * have_frame_base; unsigned int num_loc_offsets; unsigned int max_loc_offsets; /* List of .debug_ranges offsets seen in this .debug_info. */ - bfd_vma *range_lists; + dwarf_vma * range_lists; unsigned int num_range_lists; unsigned int max_range_lists; } @@ -197,14 +223,20 @@ extern int do_gdb_index; extern int do_trace_info; extern int do_trace_abbrevs; extern int do_trace_aranges; +extern int do_debug_addr; +extern int do_debug_cu_index; 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); -extern int load_debug_section (enum dwarf_section_display_enum, - void *); +extern int load_debug_section (enum dwarf_section_display_enum, void *); extern void free_debug_section (enum dwarf_section_display_enum); extern void free_debug_memory (void); @@ -213,9 +245,10 @@ 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); +unsigned int * find_cu_tu_set (void *, unsigned int); + +void * cmalloc (size_t, size_t); +void * xcmalloc (size_t, size_t); +void * xcrealloc (void *, size_t, size_t); -bfd_vma read_leb128 (unsigned char *data, - unsigned int *length_return, int sign); +extern dwarf_vma read_leb128 (unsigned char *, unsigned int *, bfd_boolean, const unsigned char * const);