diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2005-09-30 14:55:05 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2005-09-30 14:55:05 +0000 |
commit | 19e6b90ed846a3d7bbbd43ecee86df86a55a59a6 (patch) | |
tree | f2ab34d0006e3d2d5ba56fd277f7867442183fe5 /binutils/dwarf.h | |
parent | 1007acb31dab630af1c33753224c009931bff6f5 (diff) | |
download | gdb-19e6b90ed846a3d7bbbd43ecee86df86a55a59a6.zip gdb-19e6b90ed846a3d7bbbd43ecee86df86a55a59a6.tar.gz gdb-19e6b90ed846a3d7bbbd43ecee86df86a55a59a6.tar.bz2 |
2005-09-30 H.J. Lu <hongjiu.lu@intel.com>
* Makefile.am (CFILES): Add dwarf.c.
(readelf_SOURCES): Likewise.
* Makefile.in: Regenerated.
* dwarf.c: New file.
* dwarf.h. Likewise.
* readelf.c: Include "dwarf.h" instead of "bfd.h".
(do_debug_info): Remove the static definition.
(do_debug_abbrevs): Likewise.
(do_debug_lines): Likewise.
(do_debug_pubnames): Likewise.
(do_debug_aranges): Likewise.
(do_debug_ranges): Likewise.
(do_debug_frames): Likewise.
(do_debug_frames_interp): Likewise.
(do_debug_macinfo): Likewise.
(do_debug_str): Likewise.
(do_debug_loc): Likewise.
(is_relocatable): Likewise.
(have_frame_base): Likewise.
(need_base_address): Likewise.
(eh_addr_size): Likewise.
(error): Likewise.
(warn): Likewise.
(cmalloc): Likewise.
(xcmalloc): Likewise.
(xcrealloc): Likewise.
(dwarf_section): Removed.
(byte_get_little_endian): Likewise.
(byte_get_signed): Likewise.
(byte_get_big_endian): Likewise.
(read_leb128): Likewise.
(State_Machine_Registers): Likewise.
(state_machine_regs): Likewise.
(reset_state_machine): Likewise.
(process_extended_line_op): Likewise.
(debug_str_section): Likewise.
(fetch_indirect_string): Likewise.
(debug_abbrev_section): Likewise.
(abbrev_attr): Likewise.
(first_abbrev): Likewise.
(last_abbrev): Likewise.
(free_abbrevs): Likewise.
(add_abbrev_attr): Likewise.
(process_abbrev_section): Likewise.
(get_TAG_name): Likewise.
(get_FORM_name): Likewise.
(display_block): Likewise.
(decode_location_expression): Likewise.
(debug_info): Likewise.
(debug_information): Likewise.
(num_debug_info_entries): Likewise.
(last_pointer_size): Likewise.
(warned_about_missing_comp_units): Likewise.
(read_and_display_attr_value): Likewise.
(get_AT_name): Likewise.
(read_and_display_attr): Likewise.
(process_debug_info): Likewise.
(get_pointer_size_and_offset_of_comp_unit): Likewise.
(get_debug_info): Likewise.
(display_debug_lines): Likewise.
(display_debug_pubnames): Likewise.
(display_debug_macinfo): Likewise.
(display_debug_abbrev): Likewise.
(display_debug_loc): Likewise.
(display_debug_str): Likewise.
(display_debug_aranges): Likewise.
(display_debug_ranges): Likewise.
(Frame_Chunk): Likewise.
(DW_CFA_unreferenced): Likewise.
(frame_need_space): Likewise.
(frame_display_row): Likewise.
(size_of_encoded_value): Likewise.
(get_encoded_value): Likewise.
(GET): Likewise.
(LEB): Likewise.
(SLEB): Likewise.
(display_debug_frames): Likewise.
(display_debug_not_supported): Likewise.
(debug_displays): Likewise.
(load_debug_section): Updated.
(free_debug_section): Likewise.
(display_debug_section): Likewise.
(process_object): Call free_debug_memory to free debug memory.
Diffstat (limited to 'binutils/dwarf.h')
-rw-r--r-- | binutils/dwarf.h | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/binutils/dwarf.h b/binutils/dwarf.h new file mode 100644 index 0000000..907ac93 --- /dev/null +++ b/binutils/dwarf.h @@ -0,0 +1,122 @@ +/* dwwrf.h - DWARF support header file + Copyright 2005 + Free Software Foundation, Inc. + +This file is part of GNU Binutils. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ + +#include "bfd.h" +#include "elf/dwarf2.h" + +#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 + +struct dwarf_section +{ + 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 *); + unsigned int relocate : 1; + unsigned int eh_frame : 1; +}; + +enum dwarf_section_display_enum { + abbrev = 0, + aranges, + frame, + info, + line, + pubnames, + eh_frame, + macinfo, + str, + loc, + pubtypes, + ranges, + static_func, + static_vars, + types, + weaknames, + max +}; + +extern struct dwarf_section_display debug_displays []; + +/* This structure records the information that + we extract from the.debug_info section. */ +typedef struct +{ + unsigned int pointer_size; + unsigned long cu_offset; + unsigned long base_address; + /* This is an array of offsets to the location list table. */ + unsigned long *loc_offsets; + int *have_frame_base; + unsigned int num_loc_offsets; + unsigned int max_loc_offsets; + unsigned long *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 dwarf_vma eh_addr_size; +extern int is_relocatable; + +extern int do_debug_info; +extern int do_debug_abbrevs; +extern int do_debug_lines; +extern int do_debug_pubnames; +extern int do_debug_aranges; +extern int do_debug_ranges; +extern int do_debug_frames; +extern int do_debug_frames_interp; +extern int do_debug_macinfo; +extern int do_debug_str; +extern int do_debug_loc; + +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); + +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; |