binutils/
[deliverable/binutils-gdb.git] / binutils / dwarf.h
CommitLineData
1b315056 1/* dwarf.h - DWARF support header file
a262ae96 2 Copyright 2005, 2007, 2008
19e6b90e
L
3 Free Software Foundation, Inc.
4
32866df7 5 This file is part of GNU Binutils.
19e6b90e 6
32866df7
NC
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
19e6b90e 11
32866df7
NC
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
19e6b90e 16
32866df7
NC
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
20 MA 02110-1301, USA. */
19e6b90e 21
19e6b90e
L
22#if __STDC_VERSION__ >= 199901L || (defined(__GNUC__) && __GNUC__ >= 2)
23/* We can't use any bfd types here since readelf may define BFD64 and
24 objdump may not. */
25typedef unsigned long long dwarf_vma;
26typedef unsigned long long dwarf_size_type;
27#else
28typedef unsigned long dwarf_vma;
29typedef unsigned long dwarf_size_type;
30#endif
31
32struct dwarf_section
33{
1b315056
CS
34 /* A debug section has a different name when it's stored compressed
35 * or not. COMPRESSED_NAME and UNCOMPRESSED_NAME are the two
36 * possibilities. NAME is set to whichever one is used for this
37 * input file, as determined by load_debug_section(). */
38 const char *uncompressed_name;
39 const char *compressed_name;
4cb93e3b 40 const char *name;
19e6b90e
L
41 unsigned char *start;
42 dwarf_vma address;
43 dwarf_size_type size;
44};
45
46/* A structure containing the name of a debug section
47 and a pointer to a function that can decode it. */
48struct dwarf_section_display
49{
50 struct dwarf_section section;
51 int (*display) (struct dwarf_section *, void *);
4cb93e3b 52 int *enabled;
19e6b90e 53 unsigned int relocate : 1;
19e6b90e
L
54};
55
56enum dwarf_section_display_enum {
57 abbrev = 0,
58 aranges,
59 frame,
60 info,
61 line,
62 pubnames,
63 eh_frame,
64 macinfo,
65 str,
66 loc,
67 pubtypes,
68 ranges,
69 static_func,
70 static_vars,
71 types,
72 weaknames,
73 max
74};
75
76extern struct dwarf_section_display debug_displays [];
77
78/* This structure records the information that
79 we extract from the.debug_info section. */
80typedef struct
81{
82 unsigned int pointer_size;
83 unsigned long cu_offset;
84 unsigned long base_address;
85 /* This is an array of offsets to the location list table. */
86 unsigned long *loc_offsets;
87 int *have_frame_base;
88 unsigned int num_loc_offsets;
89 unsigned int max_loc_offsets;
01a8f077 90 /* List of .debug_ranges offsets seen in this .debug_info. */
19e6b90e
L
91 unsigned long *range_lists;
92 unsigned int num_range_lists;
93 unsigned int max_range_lists;
94}
95debug_info;
96
97extern dwarf_vma (*byte_get) (unsigned char *, int);
98extern dwarf_vma byte_get_little_endian (unsigned char *, int);
99extern dwarf_vma byte_get_big_endian (unsigned char *, int);
100
2dc4cec1 101extern int eh_addr_size;
19e6b90e
L
102
103extern int do_debug_info;
104extern int do_debug_abbrevs;
105extern int do_debug_lines;
106extern int do_debug_pubnames;
107extern int do_debug_aranges;
108extern int do_debug_ranges;
109extern int do_debug_frames;
110extern int do_debug_frames_interp;
111extern int do_debug_macinfo;
112extern int do_debug_str;
113extern int do_debug_loc;
114
2dc4cec1
L
115extern void init_dwarf_regnames (unsigned int);
116
19e6b90e
L
117extern int load_debug_section (enum dwarf_section_display_enum,
118 void *);
119extern void free_debug_section (enum dwarf_section_display_enum);
120
121extern void free_debug_memory (void);
122
4cb93e3b
TG
123extern void dwarf_select_sections_by_names (const char *names);
124extern void dwarf_select_sections_by_letters (const char *letters);
125extern void dwarf_select_sections_all (void);
126
19e6b90e
L
127void *cmalloc (size_t, size_t);
128void *xcmalloc (size_t, size_t);
129void *xcrealloc (void *, size_t, size_t);
130
131void error (const char *, ...) ATTRIBUTE_PRINTF_1;
132void warn (const char *, ...) ATTRIBUTE_PRINTF_1;
This page took 0.155404 seconds and 4 git commands to generate.