-
Notifications
You must be signed in to change notification settings - Fork 3
/
dwarf_info.h
82 lines (75 loc) · 2.94 KB
/
dwarf_info.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/*
* dwarf_info.h
*
* Copyright (C) 2011 NEC Corporation
*
* 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.
*/
#ifndef _DWARF_INFO_H
#define _DWARF_INFO_H
#define NOT_FOUND_LONG_VALUE (-1)
#define FAILED_DWARFINFO (-2)
#define INVALID_STRUCTURE_DATA (-3)
#define FOUND_ARRAY_TYPE (LONG_MAX - 1)
#define NOT_FOUND_SYMBOL (0)
#define NOT_FOUND_STRUCTURE (NOT_FOUND_LONG_VALUE)
#define NOT_FOUND_NUMBER (NOT_FOUND_LONG_VALUE)
/* flags for dwarf_info.type_flag */
#define TYPE_BASE 0x01
#define TYPE_ARRAY 0x02
#define TYPE_PTR 0x04
#define TYPE_STRUCT 0x08
#define TYPE_LIST_HEAD 0x10
enum {
DWARF_INFO_GET_STRUCT_SIZE,
DWARF_INFO_GET_MEMBER_OFFSET,
DWARF_INFO_GET_MEMBER_OFFSET_1ST_UNION,
DWARF_INFO_GET_MEMBER_ARRAY_LENGTH,
DWARF_INFO_GET_SYMBOL_ARRAY_LENGTH,
DWARF_INFO_GET_TYPEDEF_SIZE,
DWARF_INFO_GET_TYPEDEF_SRCNAME,
DWARF_INFO_GET_ENUM_NUMBER,
DWARF_INFO_CHECK_SYMBOL_ARRAY_TYPE,
DWARF_INFO_GET_SYMBOL_TYPE,
DWARF_INFO_GET_MEMBER_TYPE,
DWARF_INFO_GET_ENUMERATION_TYPE_SIZE,
DWARF_INFO_GET_DOMAIN_STRUCT,
DWARF_INFO_GET_DOMAIN_TYPEDEF,
DWARF_INFO_GET_DOMAIN_ARRAY,
DWARF_INFO_GET_DOMAIN_UNION,
DWARF_INFO_GET_DOMAIN_ENUM,
DWARF_INFO_GET_DOMAIN_REF,
DWARF_INFO_GET_DOMAIN_STRING,
DWARF_INFO_GET_DOMAIN_BASE,
DWARF_INFO_GET_DIE,
};
char *get_dwarf_module_name(void);
void get_fileinfo_of_debuginfo(int *fd, char **name);
unsigned long long get_symbol_addr(char *symname);
unsigned long get_next_symbol_addr(char *symname);
long get_structure_size(char *structname, int flag_typedef);
long get_pointer_size(void);
char *get_symbol_type_name(char *symname, int cmd, long *size, unsigned long *flag);
long get_member_offset(char *structname, char *membername, int cmd);
char *get_member_type_name(char *structname, char *membername, int cmd, long *size, unsigned long *flag);
long get_array_length(char *name01, char *name02, unsigned int cmd);
long get_enum_number(char *enum_name);
long get_domain(char *symname, int cmd, unsigned long long *die);
int get_die_nfields(unsigned long long die_off);
int get_die_member(unsigned long long die_off, int index, long *offset,
char **name, int *nbits, int *fbits, unsigned long long *m_die);
int get_die_attr_type(unsigned long long die_off, int *type_flag,
unsigned long long *die_attr_off);
char *get_die_name(unsigned long long die_off);
unsigned long long get_die_offset(char *sysname);
int get_die_length(unsigned long long die_off, int flag);
int set_dwarf_debuginfo(char *mod_name, char *os_release, char *name_debuginfo, int fd_debuginfo);
#endif /* DWARF_INFO_H */