3 #ifndef __DBGMANAGER_H__
4 #define __DBGMANAGER_H__
16 // Tag based in the DW_TAG_... list from the dwarf.h
19 DBG_TAG_pointer_type
= 0x0f,
20 DBG_TAG_compile_unit
= 0x11,
21 DBG_TAG_base_type
= 0x24,
22 DBG_TAG_subprogram
= 0x2e,
28 DBG_TAG_TYPE_structure
= 0x1, // structure
29 DBG_TAG_TYPE_pointer
= 0x2, // pointer
30 DBG_TAG_TYPE_subrange
= 0x4, // (subrange_type?)
31 DBG_TAG_TYPE_array
= 0x8, // array type
32 DBG_TAG_TYPE_const
= 0x10, // const type
33 DBG_TAG_TYPE_typedef
= 0x20, // typedef
34 DBG_TAG_TYPE_enumeration_type
= 0x40, // enumeration
35 DBG_TAG_TYPE_subroutine_type
= 0x80 // subroutine
38 // Encoding based in the DW_ATE_... list from the dwarf.h
39 // Except for the DBG_ATE_ptr
42 DBG_ATE_address
= 0x1, // linear machine address
43 DBG_ATE_boolean
= 0x2, // true or false
44 DBG_ATE_complex_float
= 0x3, // complex floating-point number
45 DBG_ATE_float
= 0x4, // floating-point number
46 DBG_ATE_signed
= 0x5, // signed binary integer
47 DBG_ATE_signed_char
= 0x6, // signed character
48 DBG_ATE_unsigned
= 0x7, // unsigned binary integer
49 DBG_ATE_unsigned_char
= 0x8, // unsigned character
50 DBG_ATE_imaginary_float
= 0x9, /* DWARF3 */
51 DBG_ATE_packed_decimal
= 0xa, /* DWARF3f */
52 DBG_ATE_numeric_string
= 0xb, /* DWARF3f */
53 DBG_ATE_edited
= 0xc, /* DWARF3f */
54 DBG_ATE_signed_fixed
= 0xd, /* DWARF3f */
55 DBG_ATE_unsigned_fixed
= 0xe, /* DWARF3f */
56 DBG_ATE_decimal_float
= 0xf, /* DWARF3f */
57 DBG_ATE_ptr
= 0x10, // Specific to DBG Manager to represent pointer type
61 // Encoding based in the DW_OP_... list from the dwarf.h
66 DBG_OP_const1u
= 0x08,
67 DBG_OP_const1s
= 0x09,
68 DBG_OP_const2u
= 0x0a,
69 DBG_OP_const2s
= 0x0b,
70 DBG_OP_const4u
= 0x0c,
71 DBG_OP_const4s
= 0x0d,
72 DBG_OP_const8u
= 0x0e,
73 DBG_OP_const8s
= 0x0f,
93 DBG_OP_plus_uconst
= 0x23,
180 DBG_OP_breg10
= 0x7a,
181 DBG_OP_breg11
= 0x7b,
182 DBG_OP_breg12
= 0x7c,
183 DBG_OP_breg13
= 0x7d,
184 DBG_OP_breg14
= 0x7e,
185 DBG_OP_breg15
= 0x7f,
186 DBG_OP_breg16
= 0x80,
187 DBG_OP_breg17
= 0x81,
188 DBG_OP_breg18
= 0x82,
189 DBG_OP_breg19
= 0x83,
190 DBG_OP_breg20
= 0x84,
191 DBG_OP_breg21
= 0x85,
192 DBG_OP_breg22
= 0x86,
193 DBG_OP_breg23
= 0x87,
194 DBG_OP_breg24
= 0x88,
195 DBG_OP_breg25
= 0x89,
196 DBG_OP_breg26
= 0x8a,
197 DBG_OP_breg27
= 0x8b,
198 DBG_OP_breg28
= 0x8c,
199 DBG_OP_breg29
= 0x8d,
200 DBG_OP_breg30
= 0x8e,
201 DBG_OP_breg31
= 0x8f,
206 DBG_OP_deref_size
= 0x94,
207 DBG_OP_xderef_size
= 0x95,
209 DBG_OP_push_object_address
= 0x97, /* DWARF3 */
210 DBG_OP_call2
= 0x98, /* DWARF3 */
211 DBG_OP_call4
= 0x99, /* DWARF3 */
212 DBG_OP_call_ref
= 0x9a, /* DWARF3 */
213 DBG_OP_form_tls_address
= 0x9b, /* DWARF3f */
214 DBG_OP_call_frame_cfa
= 0x9c, /* DWARF3f */
215 DBG_OP_bit_piece
= 0x9d, /* DWARF3f */
216 DBG_OP_implicit_value
= 0x9e, /* DWARF4 */
217 DBG_OP_stack_value
= 0x9f, /* DWARF4 */
224 extern void DBGManager_Init(void);
225 extern void DBGManager_SetType(size_t DBGTypeSet
);
226 extern size_t DBGManager_GetType(void);
227 extern void DBGManager_Reset(void);
228 extern void DBGManager_Close(void);
229 extern void DBGManager_SourceFileSearchPathsSet(char *ListPaths
);
231 // Source text lines manager
232 extern size_t DBGManager_GetNumLineFromAdr(size_t Adr
, size_t Tag
);
233 extern char *DBGManager_GetLineSrcFromAdr(size_t Adr
, size_t Tag
);
234 extern char *DBGManager_GetLineSrcFromAdrNumLine(size_t Adr
, size_t NumLine
);
235 extern char *DBGManager_GetLineSrcFromNumLineBaseAdr(size_t Adr
, size_t NumLine
);
238 extern char *DBGManager_GetFunctionName(size_t Adr
);
239 extern char *DBGManager_GetVariableValueFromAdr(size_t Adr
, size_t TypeEncoding
, size_t TypeByteSize
);
242 extern char *DBGManager_GetSymbolNameFromAdr(size_t Adr
);
243 extern size_t DBGManager_GetAdrFromSymbolName(char *SymbolName
);
245 // Source text files manager
246 extern char *DBGManager_GetFullSourceFilenameFromAdr(size_t Adr
, bool *Error
);
247 extern size_t DBGManager_GetNbFullSourceFilename(void);
248 extern char *DBGManager_GetNumFullSourceFilename(size_t Index
);
250 // Global variables manager
251 extern size_t DBGManager_GetNbGlobalVariables(void);
252 extern char *DBGManager_GetGlobalVariableName(size_t Index
);
253 extern size_t DBGManager_GetGlobalVariableTypeEncoding(size_t Index
);
254 extern char *DBGManager_GetGlobalVariableTypeName(size_t Index
);
255 extern size_t DBGManager_GetGlobalVariableTypeByteSize(size_t Index
);
256 extern size_t DBGManager_GetGlobalVariableAdr(size_t Index
);
257 extern size_t DBGManager_GetGlobalVariableAdrFromName(char *VariableName
);
258 extern char *DBGManager_GetGlobalVariableValue(size_t Index
);
259 extern size_t DBGManager_GetGlobalVariableTypeTag(size_t Index
);
261 // Local variables manager
262 extern size_t DBGManager_GetNbLocalVariables(size_t Adr
);
263 extern char *DBGManager_GetLocalVariableName(size_t Adr
, size_t Index
);
264 extern size_t DBGManager_GetLocalVariableTypeEncoding(size_t Adr
, size_t Index
);
265 extern char *DBGManager_GetLocalVariableTypeName(size_t Adr
, size_t Index
);
266 extern size_t DBGManager_GetLocalVariableTypeByteSize(size_t Adr
, size_t Index
);
267 extern size_t DBGManager_GetLocalVariableTypeTag(size_t Adr
, size_t Index
);
268 extern size_t DBGManager_GetLocalVariableOp(size_t Adr
, size_t Index
);
269 extern int DBGManager_GetLocalVariableOffset(size_t Adr
, size_t Index
);
272 #endif // __DBGMANAGER_H__