libdwP.h revision 35f08c4d52d0ffd9f8aa50f47b84de5603842b1f
1b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper/* Internal definitions for libdwarf.
243da9895c6d828ceae65a47f2337e8ef24eb97c1Roland McGrath   Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Red Hat, Inc.
3361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   This file is part of Red Hat elfutils.
4b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper   Written by Ulrich Drepper <drepper@redhat.com>, 2002.
5b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
6361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   Red Hat elfutils is free software; you can redistribute it and/or modify
7361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   it under the terms of the GNU General Public License as published by the
8361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   Free Software Foundation; version 2 of the License.
9b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
10361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   Red Hat elfutils is distributed in the hope that it will be useful, but
11361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   WITHOUT ANY WARRANTY; without even the implied warranty of
12361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   General Public License for more details.
14361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper
15361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   You should have received a copy of the GNU General Public License along
16361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   with Red Hat elfutils; if not, write to the Free Software Foundation,
171e9ef50681e20ef14c2ba38aef37a71ff148be08Ulrich Drepper   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
18361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper
19361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   In addition, as a special exception, Red Hat, Inc. gives You the
20361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   additional right to link the code of Red Hat elfutils with code licensed
21361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   under any Open Source Initiative certified open source license
22361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   (http://www.opensource.org/licenses/index.php) which requires the
23361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   distribution of source code with any binary distribution and to
24361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   distribute linked combinations of the two.  Non-GPL Code permitted under
25361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   this exception must only link to the code of Red Hat elfutils through
26361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   those well defined interfaces identified in the file named EXCEPTION
27361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   found in the source code files (the "Approved Interfaces").  The files
28361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   of Non-GPL Code may instantiate templates or use macros or inline
29361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   functions from the Approved Interfaces without causing the resulting
30361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   work to be covered by the GNU General Public License.  Only Red Hat,
31361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   Inc. may make changes or additions to the list of Approved Interfaces.
32361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   Red Hat's grant of this exception is conditioned upon your not adding
33361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   any new exceptions.  If you wish to add a new Approved Interface or
34361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   exception, please contact Red Hat.  You must obey the GNU General Public
35361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   License in all respects for all of the Red Hat elfutils code and other
36361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   code used in conjunction with Red Hat elfutils except the Non-GPL Code
37361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   covered by this exception.  If you modify this file, you may extend this
38361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   exception to your version of the file, but you are not obligated to do
39361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   so.  If you do not wish to provide this exception without modification,
40361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   you must delete this exception statement from your version and license
41361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   this file solely under the GPL without exception.
42361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper
43361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   Red Hat elfutils is an included package of the Open Invention Network.
44361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   An included package of the Open Invention Network is a package for which
45361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   Open Invention Network licensees cross-license their patents.  No patent
46361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   license is granted, either expressly or impliedly, by designation as an
47361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   included package.  Should you wish to participate in the Open Invention
48361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   Network licensing program, please visit www.openinventionnetwork.com
49361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper   <http://www.openinventionnetwork.com>.  */
50b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
51b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper#ifndef _LIBDWP_H
52b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper#define _LIBDWP_H 1
53b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
54b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper#include <libintl.h>
55b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper#include <stdbool.h>
56b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
57b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper#include <libdw.h>
58b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
59b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
60b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper/* gettext helper macros.  */
61b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper#define _(Str) dgettext ("elfutils", Str)
62b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
63b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
64b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper/* Version of the DWARF specification we support.  */
6535f08c4d52d0ffd9f8aa50f47b84de5603842b1fUlrich Drepper#define DWARF_VERSION 3
66b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
67b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper/* Version of the CIE format.  */
68b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper#define CIE_VERSION 1
69b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
70b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
716724c90d02659f7466b67b357563042e403d154eRoland McGrath/* Known location expressions already decoded.  */
72b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepperstruct loc_s
73b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper{
74b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  void *addr;
756724c90d02659f7466b67b357563042e403d154eRoland McGrath  Dwarf_Op *loc;
76b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  size_t nloc;
77b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper};
78b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
79b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper/* Valid indeces for the section data.  */
80b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepperenum
81b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  {
82b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    IDX_debug_info = 0,
83b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    IDX_debug_abbrev,
84b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    IDX_debug_aranges,
85b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    IDX_debug_line,
86b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    IDX_debug_frame,
87b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    IDX_eh_frame,
88b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    IDX_debug_loc,
89b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    IDX_debug_pubnames,
90b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    IDX_debug_str,
91b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    IDX_debug_funcnames,
92b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    IDX_debug_typenames,
93b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    IDX_debug_varnames,
94b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    IDX_debug_weaknames,
95b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    IDX_debug_macinfo,
96b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    IDX_debug_ranges,
97b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    IDX_last
98b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  };
99b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
100b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
101b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper/* Error values.  */
102b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepperenum
103b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper{
104b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_NOERROR = 0,
105b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_UNKNOWN_ERROR,
106b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_INVALID_ACCESS,
107b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_NO_REGFILE,
108b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_IO_ERROR,
109b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_INVALID_ELF,
110b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_NO_DWARF,
111b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_NOELF,
112b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_GETEHDR_ERROR,
113b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_NOMEM,
114b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_UNIMPL,
115b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_INVALID_CMD,
116b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_INVALID_VERSION,
117b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_INVALID_FILE,
118b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_NO_ENTRY,
119b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_INVALID_DWARF,
120b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_NO_STRING,
121b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_NO_ADDR,
122b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_NO_CONSTANT,
123b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_NO_REFERENCE,
124b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_INVALID_REFERENCE,
125b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_NO_DEBUG_LINE,
126b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_INVALID_DEBUG_LINE,
127b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_TOO_BIG,
128b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_VERSION,
129b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_INVALID_DIR_IDX,
130b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_ADDR_OUTOFRANGE,
131b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_NO_LOCLIST,
132b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_NO_BLOCK,
133b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_INVALID_LINE_IDX,
134b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_INVALID_ARANGE_IDX,
135b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_NO_MATCH,
136b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_NO_FLAG,
137b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_INVALID_OFFSET,
138b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  DWARF_E_NO_DEBUG_RANGES,
139b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper};
140b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
141b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
142b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper/* This is the structure representing the debugging state.  */
143b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepperstruct Dwarf
144b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper{
145b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  /* The underlying ELF file.  */
146b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  Elf *elf;
147b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
148b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  /* The section data.  */
149b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  Elf_Data *sectiondata[IDX_last];
150b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
151b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  /* True if the file has a byte order different from the host.  */
152b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  bool other_byte_order;
153b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
154b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  /* If true, we allocated the ELF descriptor ourselves.  */
155b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  bool free_elf;
156b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
157b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  /* Information for traversing the .debug_pubnames section.  This is
158b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper     an array and separately allocated with malloc.  */
159b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  struct pubnames_s
160b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  {
161b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    Dwarf_Off cu_offset;
162b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    Dwarf_Off set_start;
163b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    unsigned int cu_header_size;
164b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    int address_len;
165b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  } *pubnames_sets;
166b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  size_t pubnames_nsets;
167b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
168b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  /* Search tree for the CUs.  */
169b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  void *cu_tree;
170b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  Dwarf_Off next_cu_offset;
171b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
172b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  /* Address ranges.  */
173b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  Dwarf_Aranges *aranges;
174b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
175b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  /* Internal memory handling.  This is basically a simplified
176b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper     reimplementation of obstacks.  Unfortunately the standard obstack
177b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper     implementation is not usable in libraries.  */
178b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  struct libdw_memblock
179b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  {
180b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    size_t size;
181b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    size_t remaining;
182b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    struct libdw_memblock *prev;
183b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    char mem[0];
184b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  } *mem_tail;
185b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
186b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  /* Default size of allocated memory blocks.  */
187b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  size_t mem_default_size;
188b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
189b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  /* Registered OOM handler.  */
190b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  Dwarf_OOM oom_handler;
191b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper};
192b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
193b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
194b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper/* Abbreviation representation.  */
195b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepperstruct Dwarf_Abbrev
196b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper{
197b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  unsigned int code;
198b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  unsigned int tag;
199b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  int has_children;
200b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  unsigned int attrcnt;
201b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  unsigned char *attrp;
202b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  Dwarf_Off offset;
203b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper};
204b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
205b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper#include "dwarf_abbrev_hash.h"
206b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
207b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
208b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper/* Files in line information records.  */
209b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepperstruct Dwarf_Files_s
210b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  {
211b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    Dwarf *dbg;
21243da9895c6d828ceae65a47f2337e8ef24eb97c1Roland McGrath    unsigned int ndirs;
213b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    unsigned int nfiles;
214b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    struct Dwarf_Fileinfo_s
215b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    {
216b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper      char *name;
217b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper      Dwarf_Word mtime;
218b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper      Dwarf_Word length;
219b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    } info[0];
22043da9895c6d828ceae65a47f2337e8ef24eb97c1Roland McGrath    /* nfiles of those, followed by char *[ndirs].  */
221b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  };
222b08d5a8fb42f4586d756068065186b5af7e48daUlrich Dreppertypedef struct Dwarf_Fileinfo_s Dwarf_Fileinfo;
223b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
224b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
225b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper/* Representation of a row in the line table.  */
226b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepperstruct Dwarf_Lines_s
227b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  {
228b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    size_t nlines;
229b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
230b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    struct Dwarf_Line_s
231b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    {
232b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper      Dwarf_Addr addr;
233b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper      unsigned int file;
234b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper      int line;
235b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper      unsigned short int column;
236b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper      unsigned int is_stmt:1;
237b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper      unsigned int basic_block:1;
238b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper      unsigned int end_sequence:1;
239b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper      unsigned int prologue_end:1;
240b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper      unsigned int epilogue_begin:1;
241b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
242b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper      Dwarf_Files *files;
243b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    } info[0];
244b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  };
245b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
246b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
247b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper/* Representation of address ranges.  */
248b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepperstruct Dwarf_Aranges_s
249b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper{
250b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  Dwarf *dbg;
251b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  size_t naranges;
252b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
253b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  struct Dwarf_Arange_s
254b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  {
255b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    Dwarf_Addr addr;
256b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    Dwarf_Word length;
257b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    Dwarf_Off offset;
258b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  } info[0];
259b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper};
260b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
261b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
262b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper/* CU representation.  */
263b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepperstruct Dwarf_CU
264b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper{
265b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  Dwarf *dbg;
266b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  Dwarf_Off start;
267b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  Dwarf_Off end;
268b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  uint8_t address_size;
269b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  uint8_t offset_size;
270e4c22ea004c02a58f5db5eb53794275344c17958Roland McGrath  uint16_t version;
271b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
272b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  /* Hash table for the abbreviations.  */
273b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  Dwarf_Abbrev_Hash abbrev_hash;
274b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  /* Offset of the first abbreviation.  */
275b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  size_t orig_abbrev_offset;
276b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  /* Offset past last read abbreviation.  */
277b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  size_t last_abbrev_offset;
278b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
279b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  /* The srcline information.  */
280b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  Dwarf_Lines *lines;
281b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
282b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  /* The source file information.  */
283b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  Dwarf_Files *files;
284b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
285b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  /* Known location lists.  */
286b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  void *locs;
287b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper};
288b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
28935f08c4d52d0ffd9f8aa50f47b84de5603842b1fUlrich Drepper/* Compute the offset of a CU's first DIE from its offset.  This
29035f08c4d52d0ffd9f8aa50f47b84de5603842b1fUlrich Drepper   is either:
29135f08c4d52d0ffd9f8aa50f47b84de5603842b1fUlrich Drepper        LEN       VER     OFFSET    ADDR
29235f08c4d52d0ffd9f8aa50f47b84de5603842b1fUlrich Drepper      4-bytes + 2-bytes + 4-bytes + 1-byte  for 32-bit dwarf
29335f08c4d52d0ffd9f8aa50f47b84de5603842b1fUlrich Drepper     12-bytes + 2-bytes + 8-bytes + 1-byte  for 64-bit dwarf
29435f08c4d52d0ffd9f8aa50f47b84de5603842b1fUlrich Drepper
29535f08c4d52d0ffd9f8aa50f47b84de5603842b1fUlrich Drepper   Note the trick in the computation.  If the offset_size is 4
29635f08c4d52d0ffd9f8aa50f47b84de5603842b1fUlrich Drepper   the '- 4' term changes the '3 *' into a '2 *'.  If the
29735f08c4d52d0ffd9f8aa50f47b84de5603842b1fUlrich Drepper   offset_size is 8 it accounts for the 4-byte escape value
29835f08c4d52d0ffd9f8aa50f47b84de5603842b1fUlrich Drepper   used at the start of the length.  */
29935f08c4d52d0ffd9f8aa50f47b84de5603842b1fUlrich Drepper#define DIE_OFFSET_FROM_CU_OFFSET(cu_offset, offset_size) \
30035f08c4d52d0ffd9f8aa50f47b84de5603842b1fUlrich Drepper  ((cu_offset) + 3 * (offset_size) - 4 + 3)
30135f08c4d52d0ffd9f8aa50f47b84de5603842b1fUlrich Drepper
302db1d54386fc38a30eff030517cbbfedf758fa32aUlrich Drepper#define CUDIE(fromcu) \
3036724c90d02659f7466b67b357563042e403d154eRoland McGrath  ((Dwarf_Die)								      \
3046724c90d02659f7466b67b357563042e403d154eRoland McGrath   {									      \
3056724c90d02659f7466b67b357563042e403d154eRoland McGrath     .cu = (fromcu),							      \
3066724c90d02659f7466b67b357563042e403d154eRoland McGrath     .addr = ((char *) (fromcu)->dbg->sectiondata[IDX_debug_info]->d_buf      \
3076724c90d02659f7466b67b357563042e403d154eRoland McGrath	      + (fromcu)->start + 3 * (fromcu)->offset_size - 4 + 3),	      \
3086724c90d02659f7466b67b357563042e403d154eRoland McGrath   })
309b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
310b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
311b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper/* Macro information.  */
312b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepperstruct Dwarf_Macro_s
313b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper{
314b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  unsigned int opcode;
315b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  Dwarf_Word param1;
316b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  union
317b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  {
318b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    Dwarf_Word u;
319b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    const char *s;
320b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  } param2;
321b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper};
322b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
323b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
324b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper/* We have to include the file at this point because the inline
325b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper   functions access internals of the Dwarf structure.  */
326b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper#include "memory-access.h"
327b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
328b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
329b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper/* Set error value.  */
330b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepperextern void __libdw_seterrno (int value) internal_function;
331b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
332b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
333b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper/* Memory handling, the easy parts.  This macro does not do any locking.  */
334db1d54386fc38a30eff030517cbbfedf758fa32aUlrich Drepper#define libdw_alloc(dbg, type, tsize, cnt) \
335b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  ({ struct libdw_memblock *_tail = (dbg)->mem_tail;			      \
336b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper     size_t _required = (tsize) * (cnt);				      \
337b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper     type *_result = (type *) (_tail->mem + (_tail->size - _tail->remaining));\
338b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper     size_t _padding = ((__alignof (type)				      \
339b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper			 - ((uintptr_t) _result & (__alignof (type) - 1)))    \
340b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper			& (__alignof (type) - 1));			      \
341b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper     if (unlikely (_tail->remaining < _required + _padding))		      \
342c373d850ec9ca342f4c71d5e287c8d8bf0723cd6Roland McGrath       _result = (type *) __libdw_allocate (dbg, _required, __alignof (type));\
343b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper     else								      \
344b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper       {								      \
345b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper	 _required += _padding;						      \
346b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper	 _result = (type *) ((char *) _result + _padding);		      \
347c373d850ec9ca342f4c71d5e287c8d8bf0723cd6Roland McGrath	 _tail->remaining -= _required;					      \
348b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper       }								      \
349b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper     _result; })
350b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
351b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper#define libdw_typed_alloc(dbg, type) \
352b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper  libdw_alloc (dbg, type, sizeof (type), 1)
353b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
354b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper/* Callback to allocate more.  */
355c373d850ec9ca342f4c71d5e287c8d8bf0723cd6Roland McGrathextern void *__libdw_allocate (Dwarf *dbg, size_t minsize, size_t align)
356b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper     __attribute__ ((__malloc__)) __nonnull_attribute__ (1);
357b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
358b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper/* Default OOM handler.  */
359b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepperextern void __libdw_oom (void) __attribute ((noreturn, visibility ("hidden")));
360b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
361b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper/* Find CU for given offset.  */
362b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepperextern struct Dwarf_CU *__libdw_findcu (Dwarf *dbg, Dwarf_Off offset)
363b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper     __nonnull_attribute__ (1) internal_function;
364b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
365b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper/* Return tag of given DIE.  */
366b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepperextern Dwarf_Abbrev *__libdw_findabbrev (struct Dwarf_CU *cu,
367b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper					 unsigned int code)
368b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper     __nonnull_attribute__ (1) internal_function;
369b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
370b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper/* Get abbreviation at given offset.  */
371b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepperextern Dwarf_Abbrev *__libdw_getabbrev (Dwarf *dbg, struct Dwarf_CU *cu,
372b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper					Dwarf_Off offset, size_t *lengthp,
373b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper					Dwarf_Abbrev *result)
374b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper     __nonnull_attribute__ (1) internal_function;
375b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
376b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper/* Helper functions for form handling.  */
377b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepperextern size_t __libdw_form_val_len (Dwarf *dbg, struct Dwarf_CU *cu,
378b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper				    unsigned int form,
379b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper				    const unsigned char *valp)
380b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper     __nonnull_attribute__ (1, 2, 4) internal_function;
381b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
382e4c22ea004c02a58f5db5eb53794275344c17958Roland McGrath/* Helper function for DW_FORM_ref* handling.  */
383e4c22ea004c02a58f5db5eb53794275344c17958Roland McGrathextern int __libdw_formref (Dwarf_Attribute *attr, Dwarf_Off *return_offset)
384e4c22ea004c02a58f5db5eb53794275344c17958Roland McGrath     __nonnull_attribute__ (1, 2) internal_function;
385e4c22ea004c02a58f5db5eb53794275344c17958Roland McGrath
386e4c22ea004c02a58f5db5eb53794275344c17958Roland McGrath
387b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper/* Helper function to locate attribute.  */
388b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepperextern unsigned char *__libdw_find_attr (Dwarf_Die *die,
389b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper					 unsigned int search_name,
390b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper					 unsigned int *codep,
391b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper					 unsigned int *formp)
392b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper     __nonnull_attribute__ (1) internal_function;
393b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
394b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper/* Helper function to access integer attribute.  */
3956724c90d02659f7466b67b357563042e403d154eRoland McGrathextern int __libdw_attr_intval (Dwarf_Die *die, int *valp, int attval)
396b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper     __nonnull_attribute__ (1, 2) internal_function;
397b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
3981ecb606f5af22838bf42b50dcc581d2b0f9191feRoland McGrath/* Helper function to walk scopes.  */
39971e15a01742e5d5de9c6260d4526146be54e5a8aRoland McGrathstruct Dwarf_Die_Chain
40071e15a01742e5d5de9c6260d4526146be54e5a8aRoland McGrath{
40171e15a01742e5d5de9c6260d4526146be54e5a8aRoland McGrath  Dwarf_Die die;
40271e15a01742e5d5de9c6260d4526146be54e5a8aRoland McGrath  struct Dwarf_Die_Chain *parent;
40371e15a01742e5d5de9c6260d4526146be54e5a8aRoland McGrath  bool prune;			/* The PREVISIT function can set this.  */
40471e15a01742e5d5de9c6260d4526146be54e5a8aRoland McGrath};
40571e15a01742e5d5de9c6260d4526146be54e5a8aRoland McGrathextern int __libdw_visit_scopes (unsigned int depth,
40671e15a01742e5d5de9c6260d4526146be54e5a8aRoland McGrath				 struct Dwarf_Die_Chain *root,
40771e15a01742e5d5de9c6260d4526146be54e5a8aRoland McGrath				 int (*previsit) (unsigned int depth,
40871e15a01742e5d5de9c6260d4526146be54e5a8aRoland McGrath						  struct Dwarf_Die_Chain *,
40971e15a01742e5d5de9c6260d4526146be54e5a8aRoland McGrath						  void *arg),
41071e15a01742e5d5de9c6260d4526146be54e5a8aRoland McGrath				 int (*postvisit) (unsigned int depth,
41171e15a01742e5d5de9c6260d4526146be54e5a8aRoland McGrath						   struct Dwarf_Die_Chain *,
41271e15a01742e5d5de9c6260d4526146be54e5a8aRoland McGrath						   void *arg),
4131ecb606f5af22838bf42b50dcc581d2b0f9191feRoland McGrath				 void *arg)
4141ecb606f5af22838bf42b50dcc581d2b0f9191feRoland McGrath  __nonnull_attribute__ (2, 3) internal_function;
4151ecb606f5af22838bf42b50dcc581d2b0f9191feRoland McGrath
416b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper/* Return error code of last failing function call.  This value is kept
417b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper   separately for each thread.  */
418b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepperextern int __dwarf_errno_internal (void);
419b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
420b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
421b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper/* Aliases to avoid PLTs.  */
422b08d5a8fb42f4586d756068065186b5af7e48daUlrich DrepperINTDECL (dwarf_attr)
423b08d5a8fb42f4586d756068065186b5af7e48daUlrich DrepperINTDECL (dwarf_attr_integrate)
424b08d5a8fb42f4586d756068065186b5af7e48daUlrich DrepperINTDECL (dwarf_begin_elf)
425b08d5a8fb42f4586d756068065186b5af7e48daUlrich DrepperINTDECL (dwarf_child)
426b08d5a8fb42f4586d756068065186b5af7e48daUlrich DrepperINTDECL (dwarf_dieoffset)
42771e15a01742e5d5de9c6260d4526146be54e5a8aRoland McGrathINTDECL (dwarf_diename)
4284959bf89d92b59ba72bea5786d7b3f9b5564f750Roland McGrathINTDECL (dwarf_end)
42907d4f2fc1cb53f170a71bc13617bbdd9cb1c3c60Roland McGrathINTDECL (dwarf_entrypc)
4304959bf89d92b59ba72bea5786d7b3f9b5564f750Roland McGrathINTDECL (dwarf_errmsg)
431b08d5a8fb42f4586d756068065186b5af7e48daUlrich DrepperINTDECL (dwarf_formaddr)
432b08d5a8fb42f4586d756068065186b5af7e48daUlrich DrepperINTDECL (dwarf_formblock)
433b08d5a8fb42f4586d756068065186b5af7e48daUlrich DrepperINTDECL (dwarf_formref_die)
434b08d5a8fb42f4586d756068065186b5af7e48daUlrich DrepperINTDECL (dwarf_formsdata)
435b08d5a8fb42f4586d756068065186b5af7e48daUlrich DrepperINTDECL (dwarf_formstring)
436b08d5a8fb42f4586d756068065186b5af7e48daUlrich DrepperINTDECL (dwarf_formudata)
437b08d5a8fb42f4586d756068065186b5af7e48daUlrich DrepperINTDECL (dwarf_getarange_addr)
438b08d5a8fb42f4586d756068065186b5af7e48daUlrich DrepperINTDECL (dwarf_getarangeinfo)
439b08d5a8fb42f4586d756068065186b5af7e48daUlrich DrepperINTDECL (dwarf_getaranges)
440b08d5a8fb42f4586d756068065186b5af7e48daUlrich DrepperINTDECL (dwarf_getsrcfiles)
441b08d5a8fb42f4586d756068065186b5af7e48daUlrich DrepperINTDECL (dwarf_getsrclines)
442b08d5a8fb42f4586d756068065186b5af7e48daUlrich DrepperINTDECL (dwarf_hasattr)
443b08d5a8fb42f4586d756068065186b5af7e48daUlrich DrepperINTDECL (dwarf_haschildren)
444b08d5a8fb42f4586d756068065186b5af7e48daUlrich DrepperINTDECL (dwarf_haspc)
445b08d5a8fb42f4586d756068065186b5af7e48daUlrich DrepperINTDECL (dwarf_highpc)
446b08d5a8fb42f4586d756068065186b5af7e48daUlrich DrepperINTDECL (dwarf_lowpc)
447b08d5a8fb42f4586d756068065186b5af7e48daUlrich DrepperINTDECL (dwarf_nextcu)
448b08d5a8fb42f4586d756068065186b5af7e48daUlrich DrepperINTDECL (dwarf_offdie)
44907d4f2fc1cb53f170a71bc13617bbdd9cb1c3c60Roland McGrathINTDECL (dwarf_ranges)
450b08d5a8fb42f4586d756068065186b5af7e48daUlrich DrepperINTDECL (dwarf_siblingof)
451b08d5a8fb42f4586d756068065186b5af7e48daUlrich DrepperINTDECL (dwarf_tag)
452b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
453b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper#endif	/* libdwP.h */
454