1 /* Copyright (C) 2007-2010 The Android Open Source Project
2 **
3 ** This software is licensed under the terms of the GNU General Public
4 ** License version 2, as published by the Free Software Foundation, and
5 ** may be copied, distributed, and modified under those terms.
6 **
7 ** This program is distributed in the hope that it will be useful,
8 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
9 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10 ** GNU General Public License for more details.
11 */
12 
13 /*
14  * Contains declarations of misc. DWARF utility routines.
15  */
16 
17 #ifndef ELFF_DWARF_UTILS_
18 #define ELFF_DWARF_UTILS_
19 
20 #include "dwarf_defs.h"
21 
22 /* Gets DWARF attribute name string (DW_AT_Xxx) for a given attribute ID.
23  * Param:
24  *  at - DWARF attribute ID to get name string for.
25  * Return:
26  *  Attribute name string. Note that this routine returns "DW_AT_Unknown",
27  *  if DWARF attribute value passed to this routine has not been recognized.
28  */
29 const char* dwarf_at_name(Dwarf_At at);
30 
31 /* Gets DWARF form name string (DW_FORM_Xxx) for a given form.
32  * Param:
33  *  form - DWARF form to get name string for.
34  * Return:
35  *  Form name string. Note that this routine returns "DW_FORM_Unknown", if
36  *  DWARF form value passed to this routine has not been recognized.
37  */
38 const char* dwarf_form_name(Dwarf_Form form);
39 
40 /* Gets DWARF tag name string (DW_TAG_Xxx) for a given tag.
41  * Param:
42  *  tag - DWARF tag to get name string for.
43  * Return:
44  *  Tag name string. Note that this routine returns "DW_TAG_Unknown", if DWARF
45  *  tag value passed to this routine has not been recognized.
46  */
47 const char* dwarf_tag_name(Dwarf_Tag tag);
48 
49 /* Dumps DWARF attribute to stdout.
50  * Param:
51  *  at - Attribute ID (DW_AT_Xxx)
52  *  form - Attribute form (DW_FORM_Xxx)
53  *  val - Attribute value.
54  */
55 void dump_attrib(Dwarf_At at, Dwarf_Form form, const Dwarf_Value* val);
56 
57 /* Dumps DWARF attribute value to stdout.
58  * Param:
59  *  val - Attribute value.
60  */
61 void dump_value(const Dwarf_Value* val);
62 
63 #endif  // ELFF_DWARF_UTILS_
64