3 #ifndef __DBGMANAGER_H__
4 #define __DBGMANAGER_H__
7 // Definition for the DWARF status of each source file
11 DBGSTATUS_OUTDATEDFILE
= 0x1,
12 DBGSTATUS_NOFILE
= 0x2,
13 DBGSTATUS_NOFILEINFO
= 0x4,
14 DBGSTATUS_UNKNOWN
= 0xff
17 // Language tag based in the DW_TAG_... list from the dwarf.h
22 DBG_LANG_VASM_Assembler
= 0x8001, // source from vasm assembler is marked as "DW_LANG_Mips_Assembler" with same value
36 // Tag based in the DW_TAG_... list from the dwarf.h
39 DBG_TAG_pointer_type
= 0x0f,
40 DBG_TAG_compile_unit
= 0x11,
41 DBG_TAG_base_type
= 0x24,
42 DBG_TAG_subprogram
= 0x2e,
48 DBG_TAG_TYPE_structure
= 0x1, // structure
49 DBG_TAG_TYPE_pointer
= 0x2, // pointer
50 DBG_TAG_TYPE_subrange
= 0x4, // (subrange_type?)
51 DBG_TAG_TYPE_array
= 0x8, // array type
52 DBG_TAG_TYPE_const
= 0x10, // const type
53 DBG_TAG_TYPE_typedef
= 0x20, // typedef
54 DBG_TAG_TYPE_enumeration_type
= 0x40, // enumeration
55 DBG_TAG_TYPE_subroutine_type
= 0x80 // subroutine
58 // Encoding based in the DW_ATE_... list from the dwarf.h
59 // Except for the DBG_ATE_ptr
62 DBG_ATE_address
= 0x1, // linear machine address
63 DBG_ATE_boolean
= 0x2, // true or false
64 DBG_ATE_complex_float
= 0x3, // complex floating-point number
65 DBG_ATE_float
= 0x4, // floating-point number
66 DBG_ATE_signed
= 0x5, // signed binary integer
67 DBG_ATE_signed_char
= 0x6, // signed character
68 DBG_ATE_unsigned
= 0x7, // unsigned binary integer
69 DBG_ATE_unsigned_char
= 0x8, // unsigned character
70 DBG_ATE_imaginary_float
= 0x9, /* DWARF3 */
71 DBG_ATE_packed_decimal
= 0xa, /* DWARF3f */
72 DBG_ATE_numeric_string
= 0xb, /* DWARF3f */
73 DBG_ATE_edited
= 0xc, /* DWARF3f */
74 DBG_ATE_signed_fixed
= 0xd, /* DWARF3f */
75 DBG_ATE_unsigned_fixed
= 0xe, /* DWARF3f */
76 DBG_ATE_decimal_float
= 0xf, /* DWARF3f */
77 DBG_ATE_ptr
= 0x10, // Specific to DBG Manager to represent pointer type
81 // Encoding based in the DW_OP_... list from the dwarf.h
86 DBG_OP_const1u
= 0x08,
87 DBG_OP_const1s
= 0x09,
88 DBG_OP_const2u
= 0x0a,
89 DBG_OP_const2s
= 0x0b,
90 DBG_OP_const4u
= 0x0c,
91 DBG_OP_const4s
= 0x0d,
92 DBG_OP_const8u
= 0x0e,
93 DBG_OP_const8s
= 0x0f,
102 DBG_OP_xderef
= 0x18,
113 DBG_OP_plus_uconst
= 0x23,
200 DBG_OP_breg10
= 0x7a,
201 DBG_OP_breg11
= 0x7b,
202 DBG_OP_breg12
= 0x7c,
203 DBG_OP_breg13
= 0x7d,
204 DBG_OP_breg14
= 0x7e,
205 DBG_OP_breg15
= 0x7f,
206 DBG_OP_breg16
= 0x80,
207 DBG_OP_breg17
= 0x81,
208 DBG_OP_breg18
= 0x82,
209 DBG_OP_breg19
= 0x83,
210 DBG_OP_breg20
= 0x84,
211 DBG_OP_breg21
= 0x85,
212 DBG_OP_breg22
= 0x86,
213 DBG_OP_breg23
= 0x87,
214 DBG_OP_breg24
= 0x88,
215 DBG_OP_breg25
= 0x89,
216 DBG_OP_breg26
= 0x8a,
217 DBG_OP_breg27
= 0x8b,
218 DBG_OP_breg28
= 0x8c,
219 DBG_OP_breg29
= 0x8d,
220 DBG_OP_breg30
= 0x8e,
221 DBG_OP_breg31
= 0x8f,
226 DBG_OP_deref_size
= 0x94,
227 DBG_OP_xderef_size
= 0x95,
229 DBG_OP_push_object_address
= 0x97, /* DWARF3 */
230 DBG_OP_call2
= 0x98, /* DWARF3 */
231 DBG_OP_call4
= 0x99, /* DWARF3 */
232 DBG_OP_call_ref
= 0x9a, /* DWARF3 */
233 DBG_OP_form_tls_address
= 0x9b, /* DWARF3f */
234 DBG_OP_call_frame_cfa
= 0x9c, /* DWARF3f */
235 DBG_OP_bit_piece
= 0x9d, /* DWARF3f */
236 DBG_OP_implicit_value
= 0x9e, /* DWARF4 */
237 DBG_OP_stack_value
= 0x9f, /* DWARF4 */
244 extern void DBGManager_Init(void);
245 extern void DBGManager_SetType(size_t DBGTypeSet
);
246 extern size_t DBGManager_GetType(void);
247 extern void DBGManager_Reset(void);
248 extern void DBGManager_Close(void);
249 extern void DBGManager_SourceFileSearchPathsSet(char *ListPaths
);
250 extern size_t DBGManager_GetNbSources(void);
252 // Source text lines manager
253 extern size_t DBGManager_GetNumLineFromAdr(size_t Adr
, size_t Tag
);
254 extern char *DBGManager_GetLineSrcFromAdr(size_t Adr
, size_t Tag
);
255 extern char *DBGManager_GetLineSrcFromAdrNumLine(size_t Adr
, size_t NumLine
);
256 extern char *DBGManager_GetLineSrcFromNumLineBaseAdr(size_t Adr
, size_t NumLine
);
257 extern char **DBGManager_GetSrcListPtrFromIndex(size_t Index
, bool Used
);
258 extern size_t DBGManager_GetSrcNbListPtrFromIndex(size_t Index
, bool Used
);
259 extern size_t *DBGManager_GetSrcNumLinesPtrFromIndex(size_t Index
, bool Used
);
262 extern char *DBGManager_GetVariableValueFromAdr(size_t Adr
, size_t TypeEncoding
, size_t TypeByteSize
);
263 extern size_t DBGManager_GetSrcLanguageFromIndex(size_t Index
);
266 extern char *DBGManager_GetFunctionName(size_t Adr
);
269 extern char *DBGManager_GetSymbolNameFromAdr(size_t Adr
);
270 extern size_t DBGManager_GetAdrFromSymbolName(char *SymbolName
);
272 // Source text files manager
273 extern char *DBGManager_GetFullSourceFilenameFromAdr(size_t Adr
, DBGstatus
*Status
);
274 extern char *DBGManager_GetNumFullSourceFilename(size_t Index
);
275 extern char *DBGManager_GetNumSourceFilename(size_t Index
);
277 // Global variables manager
278 extern size_t DBGManager_GetNbGlobalVariables(void);
279 extern char *DBGManager_GetGlobalVariableName(size_t Index
);
280 extern size_t DBGManager_GetGlobalVariableTypeEncoding(size_t Index
);
281 extern char *DBGManager_GetGlobalVariableTypeName(size_t Index
);
282 extern size_t DBGManager_GetGlobalVariableTypeByteSize(size_t Index
);
283 extern size_t DBGManager_GetGlobalVariableAdr(size_t Index
);
284 extern size_t DBGManager_GetGlobalVariableAdrFromName(char *VariableName
);
285 extern char *DBGManager_GetGlobalVariableValue(size_t Index
);
286 extern size_t DBGManager_GetGlobalVariableTypeTag(size_t Index
);
288 // Local variables manager
289 extern size_t DBGManager_GetNbLocalVariables(size_t Adr
);
290 extern char *DBGManager_GetLocalVariableName(size_t Adr
, size_t Index
);
291 extern size_t DBGManager_GetLocalVariableTypeEncoding(size_t Adr
, size_t Index
);
292 extern char *DBGManager_GetLocalVariableTypeName(size_t Adr
, size_t Index
);
293 extern size_t DBGManager_GetLocalVariableTypeByteSize(size_t Adr
, size_t Index
);
294 extern size_t DBGManager_GetLocalVariableTypeTag(size_t Adr
, size_t Index
);
295 extern size_t DBGManager_GetLocalVariableOp(size_t Adr
, size_t Index
);
296 extern int DBGManager_GetLocalVariableOffset(size_t Adr
, size_t Index
);
299 #endif // __DBGMANAGER_H__