#define __DBGMANAGER_H__\r
\r
\r
+// Definition for the DWARF status of each source file\r
+typedef enum\r
+{\r
+ DBGSTATUS_OK = 0x0,\r
+ DBGSTATUS_OUTDATEDFILE = 0x1,\r
+ DBGSTATUS_NOFILE = 0x2,\r
+ DBGSTATUS_NOFILEINFO = 0x4,\r
+ DBGSTATUS_UNKNOWN = 0xff\r
+}DBGstatus;\r
+\r
+// Language tag based in the DW_TAG_... list from the dwarf.h\r
+typedef enum {\r
+ DBG_NO_LANG = 0x0,\r
+ DBG_LANG_C89 = 0x1,\r
+ DBG_LANG_C99 = 0xc,\r
+ DBG_LANG_VASM_Assembler = 0x8001, // source from vasm assembler is marked as "DW_LANG_Mips_Assembler" with same value\r
+ DBG_END_LANG\r
+}DBGLANGTAG;\r
+\r
+// Debug types\r
typedef enum {\r
DBG_NO_TYPE = 0x0,\r
DBG_ELF = 0x1,\r
DBGOP;\r
\r
\r
+// Variables internal structure\r
+typedef struct VariablesStruct\r
+{\r
+ size_t Op; // Variable's DW_OP\r
+ union\r
+ {\r
+ size_t Addr; // Variable memory address\r
+ int Offset; // Variable stack offset (signed)\r
+ };\r
+ char *PtrName; // Variable's name\r
+ size_t TypeOffset; // Offset pointing on the Variable's Type\r
+ size_t TypeByteSize; // Variable's Type byte size\r
+ size_t TypeTag; // Variable's Type Tag\r
+ size_t TypeEncoding; // Variable's Type encoding\r
+ char *PtrTypeName; // Variable's Type name\r
+ size_t NbTabVariables; // Number of Variable's members\r
+ VariablesStruct **TabVariables; // Variable's Members (used for structures at the moment)\r
+}S_VariablesStruct;\r
+\r
+\r
// Internal manager\r
extern void DBGManager_Init(void);\r
extern void DBGManager_SetType(size_t DBGTypeSet);\r
extern size_t DBGManager_GetType(void);\r
extern void DBGManager_Reset(void);\r
extern void DBGManager_Close(void);\r
+extern void DBGManager_SourceFileSearchPathsSet(char *ListPaths);\r
+extern size_t DBGManager_GetNbSources(void);\r
\r
-// General manager\r
-extern char *DBGManager_GetSymbolNameFromAdr(size_t Adr);\r
-extern char *DBGManager_GetFullSourceFilenameFromAdr(size_t Adr, bool *Error);\r
+// Source text lines manager\r
extern size_t DBGManager_GetNumLineFromAdr(size_t Adr, size_t Tag);\r
extern char *DBGManager_GetLineSrcFromAdr(size_t Adr, size_t Tag);\r
extern char *DBGManager_GetLineSrcFromAdrNumLine(size_t Adr, size_t NumLine);\r
extern char *DBGManager_GetLineSrcFromNumLineBaseAdr(size_t Adr, size_t NumLine);\r
-extern size_t DBGManager_GetAdrFromSymbolName(char *SymbolName);\r
+extern char **DBGManager_GetSrcListPtrFromIndex(size_t Index, bool Used);\r
+extern size_t DBGManager_GetSrcNbListPtrFromIndex(size_t Index, bool Used);\r
+extern size_t *DBGManager_GetSrcNumLinesPtrFromIndex(size_t Index, bool Used);\r
+\r
+// General manager\r
+extern size_t DBGManager_GetSrcLanguageFromIndex(size_t Index);\r
+\r
+// Functions manager\r
extern char *DBGManager_GetFunctionName(size_t Adr);\r
+\r
+// Symbols manager\r
+extern char *DBGManager_GetSymbolNameFromAdr(size_t Adr);\r
+extern size_t DBGManager_GetAdrFromSymbolName(char *SymbolName);\r
+\r
+// Source text files manager\r
+extern char *DBGManager_GetFullSourceFilenameFromAdr(size_t Adr, DBGstatus *Status);\r
+extern char *DBGManager_GetNumFullSourceFilename(size_t Index);\r
+extern char *DBGManager_GetNumSourceFilename(size_t Index);\r
+\r
+// Variables manager\r
+extern size_t DBGManager_GetNbVariables(size_t Adr);\r
+extern S_VariablesStruct* DBGManager_GetInfosVariable(size_t Adr, size_t Index);\r
extern char *DBGManager_GetVariableValueFromAdr(size_t Adr, size_t TypeEncoding, size_t TypeByteSize);\r
\r
+// Global variables manager\r
+extern size_t DBGManager_GetGlobalVariableAdrFromName(char *VariableName);\r
+\r
+#if 0\r
// Global variables manager\r
extern size_t DBGManager_GetNbGlobalVariables(void);\r
extern char *DBGManager_GetGlobalVariableName(size_t Index);\r
extern char *DBGManager_GetGlobalVariableTypeName(size_t Index);\r
extern size_t DBGManager_GetGlobalVariableTypeByteSize(size_t Index);\r
extern size_t DBGManager_GetGlobalVariableAdr(size_t Index);\r
-extern size_t DBGManager_GetGlobalVariableAdrFromName(char *VariableName);\r
extern char *DBGManager_GetGlobalVariableValue(size_t Index);\r
extern size_t DBGManager_GetGlobalVariableTypeTag(size_t Index);\r
\r
extern size_t DBGManager_GetLocalVariableTypeTag(size_t Adr, size_t Index);\r
extern size_t DBGManager_GetLocalVariableOp(size_t Adr, size_t Index);\r
extern int DBGManager_GetLocalVariableOffset(size_t Adr, size_t Index);\r
+#endif\r
\r
\r
#endif // __DBGMANAGER_H__\r