3 #ifndef __DBGMANAGER_H__
4 #define __DBGMANAGER_H__
7 // Language tag based in the DW_TAG_... list from the dwarf.h
12 DBG_LANG_VASM_Assembler
= 0x8001, // source from vasm assembler is marked as "DW_LANG_Mips_Assembler" with same value
26 // Tag based in the DW_TAG_... list from the dwarf.h
29 DBG_TAG_pointer_type
= 0x0f,
30 DBG_TAG_compile_unit
= 0x11,
31 DBG_TAG_base_type
= 0x24,
32 DBG_TAG_subprogram
= 0x2e,
38 DBG_TAG_TYPE_structure
= 0x1, // structure
39 DBG_TAG_TYPE_pointer
= 0x2, // pointer
40 DBG_TAG_TYPE_subrange
= 0x4, // (subrange_type?)
41 DBG_TAG_TYPE_array
= 0x8, // array type
42 DBG_TAG_TYPE_const
= 0x10, // const type
43 DBG_TAG_TYPE_typedef
= 0x20, // typedef
44 DBG_TAG_TYPE_enumeration_type
= 0x40, // enumeration
45 DBG_TAG_TYPE_subroutine_type
= 0x80 // subroutine
48 // Encoding based in the DW_ATE_... list from the dwarf.h
49 // Except for the DBG_ATE_ptr
52 DBG_ATE_address
= 0x1, // linear machine address
53 DBG_ATE_boolean
= 0x2, // true or false
54 DBG_ATE_complex_float
= 0x3, // complex floating-point number
55 DBG_ATE_float
= 0x4, // floating-point number
56 DBG_ATE_signed
= 0x5, // signed binary integer
57 DBG_ATE_signed_char
= 0x6, // signed character
58 DBG_ATE_unsigned
= 0x7, // unsigned binary integer
59 DBG_ATE_unsigned_char
= 0x8, // unsigned character
60 DBG_ATE_imaginary_float
= 0x9, /* DWARF3 */
61 DBG_ATE_packed_decimal
= 0xa, /* DWARF3f */
62 DBG_ATE_numeric_string
= 0xb, /* DWARF3f */
63 DBG_ATE_edited
= 0xc, /* DWARF3f */
64 DBG_ATE_signed_fixed
= 0xd, /* DWARF3f */
65 DBG_ATE_unsigned_fixed
= 0xe, /* DWARF3f */
66 DBG_ATE_decimal_float
= 0xf, /* DWARF3f */
67 DBG_ATE_ptr
= 0x10, // Specific to DBG Manager to represent pointer type
71 // Encoding based in the DW_OP_... list from the dwarf.h
76 DBG_OP_const1u
= 0x08,
77 DBG_OP_const1s
= 0x09,
78 DBG_OP_const2u
= 0x0a,
79 DBG_OP_const2s
= 0x0b,
80 DBG_OP_const4u
= 0x0c,
81 DBG_OP_const4s
= 0x0d,
82 DBG_OP_const8u
= 0x0e,
83 DBG_OP_const8s
= 0x0f,
103 DBG_OP_plus_uconst
= 0x23,
190 DBG_OP_breg10
= 0x7a,
191 DBG_OP_breg11
= 0x7b,
192 DBG_OP_breg12
= 0x7c,
193 DBG_OP_breg13
= 0x7d,
194 DBG_OP_breg14
= 0x7e,
195 DBG_OP_breg15
= 0x7f,
196 DBG_OP_breg16
= 0x80,
197 DBG_OP_breg17
= 0x81,
198 DBG_OP_breg18
= 0x82,
199 DBG_OP_breg19
= 0x83,
200 DBG_OP_breg20
= 0x84,
201 DBG_OP_breg21
= 0x85,
202 DBG_OP_breg22
= 0x86,
203 DBG_OP_breg23
= 0x87,
204 DBG_OP_breg24
= 0x88,
205 DBG_OP_breg25
= 0x89,
206 DBG_OP_breg26
= 0x8a,
207 DBG_OP_breg27
= 0x8b,
208 DBG_OP_breg28
= 0x8c,
209 DBG_OP_breg29
= 0x8d,
210 DBG_OP_breg30
= 0x8e,
211 DBG_OP_breg31
= 0x8f,
216 DBG_OP_deref_size
= 0x94,
217 DBG_OP_xderef_size
= 0x95,
219 DBG_OP_push_object_address
= 0x97, /* DWARF3 */
220 DBG_OP_call2
= 0x98, /* DWARF3 */
221 DBG_OP_call4
= 0x99, /* DWARF3 */
222 DBG_OP_call_ref
= 0x9a, /* DWARF3 */
223 DBG_OP_form_tls_address
= 0x9b, /* DWARF3f */
224 DBG_OP_call_frame_cfa
= 0x9c, /* DWARF3f */
225 DBG_OP_bit_piece
= 0x9d, /* DWARF3f */
226 DBG_OP_implicit_value
= 0x9e, /* DWARF4 */
227 DBG_OP_stack_value
= 0x9f, /* DWARF4 */
234 extern void DBGManager_Init(void);
235 extern void DBGManager_SetType(size_t DBGTypeSet
);
236 extern size_t DBGManager_GetType(void);
237 extern void DBGManager_Reset(void);
238 extern void DBGManager_Close(void);
239 extern void DBGManager_SourceFileSearchPathsSet(char *ListPaths
);
240 extern size_t DBGManager_GetNbSources(void);
242 // Source text lines manager
243 extern size_t DBGManager_GetNumLineFromAdr(size_t Adr
, size_t Tag
);
244 extern char *DBGManager_GetLineSrcFromAdr(size_t Adr
, size_t Tag
);
245 extern char *DBGManager_GetLineSrcFromAdrNumLine(size_t Adr
, size_t NumLine
);
246 extern char *DBGManager_GetLineSrcFromNumLineBaseAdr(size_t Adr
, size_t NumLine
);
247 extern char **DBGManager_GetSrcListPtrFromIndex(size_t Index
, bool Used
);
248 extern size_t DBGManager_GetSrcNbListPtrFromIndex(size_t Index
, bool Used
);
249 extern size_t *DBGManager_GetSrcNumLinesPtrFromIndex(size_t Index
, bool Used
);
252 extern char *DBGManager_GetVariableValueFromAdr(size_t Adr
, size_t TypeEncoding
, size_t TypeByteSize
);
253 extern size_t DBGManager_GetSrcLanguageFromIndex(size_t Index
);
256 extern char *DBGManager_GetFunctionName(size_t Adr
);
259 extern char *DBGManager_GetSymbolNameFromAdr(size_t Adr
);
260 extern size_t DBGManager_GetAdrFromSymbolName(char *SymbolName
);
262 // Source text files manager
263 extern char *DBGManager_GetFullSourceFilenameFromAdr(size_t Adr
, bool *Error
);
264 extern char *DBGManager_GetNumFullSourceFilename(size_t Index
);
265 extern char *DBGManager_GetNumSourceFilename(size_t Index
);
267 // Global variables manager
268 extern size_t DBGManager_GetNbGlobalVariables(void);
269 extern char *DBGManager_GetGlobalVariableName(size_t Index
);
270 extern size_t DBGManager_GetGlobalVariableTypeEncoding(size_t Index
);
271 extern char *DBGManager_GetGlobalVariableTypeName(size_t Index
);
272 extern size_t DBGManager_GetGlobalVariableTypeByteSize(size_t Index
);
273 extern size_t DBGManager_GetGlobalVariableAdr(size_t Index
);
274 extern size_t DBGManager_GetGlobalVariableAdrFromName(char *VariableName
);
275 extern char *DBGManager_GetGlobalVariableValue(size_t Index
);
276 extern size_t DBGManager_GetGlobalVariableTypeTag(size_t Index
);
278 // Local variables manager
279 extern size_t DBGManager_GetNbLocalVariables(size_t Adr
);
280 extern char *DBGManager_GetLocalVariableName(size_t Adr
, size_t Index
);
281 extern size_t DBGManager_GetLocalVariableTypeEncoding(size_t Adr
, size_t Index
);
282 extern char *DBGManager_GetLocalVariableTypeName(size_t Adr
, size_t Index
);
283 extern size_t DBGManager_GetLocalVariableTypeByteSize(size_t Adr
, size_t Index
);
284 extern size_t DBGManager_GetLocalVariableTypeTag(size_t Adr
, size_t Index
);
285 extern size_t DBGManager_GetLocalVariableOp(size_t Adr
, size_t Index
);
286 extern int DBGManager_GetLocalVariableOffset(size_t Adr
, size_t Index
);
289 #endif // __DBGMANAGER_H__