Merge branch 'develop'
[clinton/Virtual-Jaguar-Rx.git] / src / debugger / DBGManager.h
index f034621..8cd45b0 100644 (file)
@@ -4,6 +4,26 @@
 #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
@@ -220,6 +240,26 @@ typedef enum {
 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
@@ -227,15 +267,19 @@ extern size_t DBGManager_GetType(void);
 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
 // 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 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 char *DBGManager_GetVariableValueFromAdr(size_t Adr, size_t TypeEncoding, size_t TypeByteSize);\r
+extern size_t DBGManager_GetSrcLanguageFromIndex(size_t Index);\r
 \r
 // Functions manager\r
 extern char *DBGManager_GetFunctionName(size_t Adr);\r
@@ -245,10 +289,19 @@ extern char       *DBGManager_GetSymbolNameFromAdr(size_t Adr);
 extern size_t DBGManager_GetAdrFromSymbolName(char *SymbolName);\r
 \r
 // Source text files manager\r
-extern char    *DBGManager_GetFullSourceFilenameFromAdr(size_t Adr, bool *Error);\r
-extern size_t DBGManager_GetNbFullSourceFilename(void);\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
@@ -256,7 +309,6 @@ extern size_t DBGManager_GetGlobalVariableTypeEncoding(size_t Index);
 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
@@ -269,6 +321,7 @@ extern size_t DBGManager_GetLocalVariableTypeByteSize(size_t Adr, size_t Index);
 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