Added a Local browser window for local variables
[clinton/Virtual-Jaguar-Rx.git] / src / debugger / DBGManager.cpp
index 044bd03..cf2847c 100644 (file)
 #include "memory.h"\r
 \r
 \r
-// \r
-char *DBGManager_GetVariableValueFromAdr(uint32_t Adr, uint32_t TypeEncoding, uint32_t TypeByteSize);\r
-\r
-\r
 //\r
 struct Value\r
 {\r
@@ -114,13 +110,28 @@ char *DBGManager_GetFullSourceFilenameFromAdr(size_t Adr, bool *Error)
 }\r
 \r
 \r
-// Get number of external variables\r
+// Get number of local variables\r
+// Return 0 if none has been found\r
+size_t DBGManager_GetNbLocalVariables(size_t Adr)\r
+{\r
+       if ((DBGType & DBG_ELFDWARF))\r
+       {\r
+               return DWARFManager_GetNbLocalVariables(Adr);\r
+       }\r
+       else\r
+       {\r
+               return  0;\r
+       }\r
+}\r
+\r
+\r
+// Get number of global variables\r
 // Return 0 if none has been found\r
-size_t DBGManager_GetNbExternalVariables(void)\r
+size_t DBGManager_GetNbGlobalVariables(void)\r
 {\r
        if ((DBGType & DBG_ELFDWARF))\r
        {\r
-               return DWARFManager_GetNbExternalVariables();\r
+               return DWARFManager_GetNbGlobalVariables();\r
        }\r
        else\r
        {\r
@@ -143,14 +154,14 @@ size_t DBGManager_GetAdrFromSymbolName(char *SymbolName)
 }\r
 \r
 \r
-// Get external variable's Address based on his Name\r
+// Get global variable's Address based on his Name\r
 // Return found Address\r
 // Return NULL if no Address has been found\r
-size_t DBGManager_GetExternalVariableAdrFromName(char *VariableName)\r
+size_t DBGManager_GetGlobalVariableAdrFromName(char *VariableName)\r
 {\r
        if ((DBGType & DBG_ELFDWARF))\r
        {\r
-               return DWARFManager_GetExternalVariableAdrFromName(VariableName);\r
+               return DWARFManager_GetGlobalVariableAdrFromName(VariableName);\r
        }\r
        else\r
        {\r
@@ -159,12 +170,72 @@ size_t DBGManager_GetExternalVariableAdrFromName(char *VariableName)
 }\r
 \r
 \r
+// Get local variable's type encoding based on his address and Index\r
+// Return the type encoding found\r
+// Return 0 if no type encoding has been found\r
+size_t DBGManager_GetLocalVariableTypeEncoding(size_t Adr, size_t Index)\r
+{\r
+       if ((DBGType & DBG_ELFDWARF))\r
+       {\r
+               return DWARFManager_GetLocalVariableTypeEncoding(Adr, Index);\r
+       }\r
+       else\r
+       {\r
+               return  0;\r
+       }\r
+}\r
+\r
+\r
+//\r
+int DBGManager_GetLocalVariableOffset(size_t Adr, size_t Index)\r
+{\r
+       if ((DBGType & DBG_ELFDWARF))\r
+       {\r
+               return DWARFManager_GetLocalVariableOffset(Adr, Index);\r
+       }\r
+       else\r
+       {\r
+               return  0;\r
+       }\r
+}\r
+\r
+\r
+// Get local variable's type byte size based on his address and Index\r
+// Return the type's byte size found\r
+// Return 0 if no type's byte size has been found\r
+size_t DBGManager_GetLocalVariableTypeByteSize(size_t Adr, size_t Index)\r
+{\r
+       if ((DBGType & DBG_ELFDWARF))\r
+       {\r
+               return DWARFManager_GetLocalVariableTypeByteSize(Adr, Index);\r
+       }\r
+       else\r
+       {\r
+               return  0;\r
+       }\r
+}\r
+\r
+\r
+//\r
+size_t DBGManager_GetLocalVariableTypeTag(size_t Adr, size_t Index)\r
+{\r
+       if ((DBGType & DBG_ELFDWARF))\r
+       {\r
+               return DWARFManager_GetLocalVariableTypeTag(Adr, Index);\r
+       }\r
+       else\r
+       {\r
+               return  0;\r
+       }\r
+}\r
+\r
+\r
 //\r
-size_t DBGManager_GetExternalVariableTypeTag(size_t Index)\r
+size_t DBGManager_GetGlobalVariableTypeTag(size_t Index)\r
 {\r
        if ((DBGType & DBG_ELFDWARF))\r
        {\r
-               return DWARFManager_GetExternalVariableTypeTag(Index);\r
+               return DWARFManager_GetGlobalVariableTypeTag(Index);\r
        }\r
        else\r
        {\r
@@ -173,14 +244,14 @@ size_t DBGManager_GetExternalVariableTypeTag(size_t Index)
 }\r
 \r
 \r
-// Get external variable's type name based on his Index\r
+// Get global variable's type name based on his Index\r
 // Return type name's text pointer found\r
 // Return NULL if no type name has been found\r
-char *DBGManager_GetExternalVariableTypeName(size_t Index)\r
+char *DBGManager_GetGlobalVariableTypeName(size_t Index)\r
 {\r
        if ((DBGType & DBG_ELFDWARF))\r
        {\r
-               return DWARFManager_GetExternalVariableTypeName(Index);\r
+               return DWARFManager_GetGlobalVariableTypeName(Index);\r
        }\r
        else\r
        {\r
@@ -189,14 +260,14 @@ char *DBGManager_GetExternalVariableTypeName(size_t Index)
 }\r
 \r
 \r
-// Get external variable's Address based on his Index\r
+// Get global variable's Address based on his Index\r
 // Return the Address found\r
 // Return 0 if no Address has been found\r
-size_t DBGManager_GetExternalVariableAdr(size_t Index)\r
+size_t DBGManager_GetGlobalVariableAdr(size_t Index)\r
 {\r
        if ((DBGType & DBG_ELFDWARF))\r
        {\r
-               return DWARFManager_GetExternalVariableAdr(Index);\r
+               return DWARFManager_GetGlobalVariableAdr(Index);\r
        }\r
        else\r
        {\r
@@ -205,14 +276,14 @@ size_t DBGManager_GetExternalVariableAdr(size_t Index)
 }\r
 \r
 \r
-// Get external variable's type byte size based on his Index\r
+// Get global variable's type byte size based on his Index\r
 // Return the type's byte size found\r
 // Return 0 if no type's byte size has been found\r
-size_t DBGManager_GetExternalVariableTypeByteSize(size_t Index)\r
+size_t DBGManager_GetGlobalVariableTypeByteSize(size_t Index)\r
 {\r
        if ((DBGType & DBG_ELFDWARF))\r
        {\r
-               return DWARFManager_GetExternalVariableTypeByteSize(Index);\r
+               return DWARFManager_GetGlobalVariableTypeByteSize(Index);\r
        }\r
        else\r
        {\r
@@ -221,14 +292,14 @@ size_t DBGManager_GetExternalVariableTypeByteSize(size_t Index)
 }\r
 \r
 \r
-// Get external variable's type encoding based on his Index\r
+// Get global variable's type encoding based on his Index\r
 // Return the type encoding found\r
 // Return 0 if no type encoding has been found\r
-size_t DBGManager_GetExternalVariableTypeEncoding(size_t Index)\r
+size_t DBGManager_GetGlobalVariableTypeEncoding(size_t Index)\r
 {\r
        if ((DBGType & DBG_ELFDWARF))\r
        {\r
-               return DWARFManager_GetExternalVariableTypeEncoding(Index);\r
+               return DWARFManager_GetGlobalVariableTypeEncoding(Index);\r
        }\r
        else\r
        {\r
@@ -237,20 +308,20 @@ size_t DBGManager_GetExternalVariableTypeEncoding(size_t Index)
 }\r
 \r
 \r
-// Get external variable value based on his Index\r
+// Get global variable value based on his Index\r
 // Return value as a text pointer\r
 // Note: Pointer may point on a 0 lenght text\r
-char *DBGManager_GetExternalVariableValue(size_t Index)\r
+char *DBGManager_GetGlobalVariableValue(size_t Index)\r
 {\r
-       uint32_t Adr = 0;\r
-       uint32_t TypeEncoding = DBG_NO_TYPEENCODING;\r
-       uint32_t TypeByteSize = 0;\r
+       size_t Adr = 0;\r
+       size_t TypeEncoding = DBG_NO_TYPEENCODING;\r
+       size_t TypeByteSize = 0;\r
 \r
        if ((DBGType & DBG_ELFDWARF))\r
        {\r
-               Adr = DWARFManager_GetExternalVariableAdr(Index);\r
-               TypeEncoding = DWARFManager_GetExternalVariableTypeEncoding(Index);\r
-               TypeByteSize = DWARFManager_GetExternalVariableTypeByteSize(Index);\r
+               Adr = DWARFManager_GetGlobalVariableAdr(Index);\r
+               TypeEncoding = DWARFManager_GetGlobalVariableTypeEncoding(Index);\r
+               TypeByteSize = DWARFManager_GetGlobalVariableTypeByteSize(Index);\r
        }\r
 \r
        return DBGManager_GetVariableValueFromAdr(Adr, TypeEncoding, TypeByteSize);\r
@@ -260,7 +331,7 @@ char *DBGManager_GetExternalVariableValue(size_t Index)
 // Get variable value based on his Adresse, Encoding Type and Size\r
 // Return value as a text pointer\r
 // Note: Pointer may point on a 0 lenght text if Adress is NULL\r
-char *DBGManager_GetVariableValueFromAdr(uint32_t Adr, uint32_t TypeEncoding, uint32_t TypeByteSize)\r
+char *DBGManager_GetVariableValueFromAdr(size_t Adr, size_t TypeEncoding, size_t TypeByteSize)\r
 {\r
        Value V;\r
        char *Ptrvalue = value;\r
@@ -277,7 +348,7 @@ char *DBGManager_GetVariableValueFromAdr(uint32_t Adr, uint32_t TypeEncoding, ui
                jaguarMainRAM[Adr + TypeByteSize - 1] = 0x10;\r
 #endif\r
 #if 1\r
-               for (uint32_t i = 0, j = TypeByteSize; i < TypeByteSize; i++, j--)\r
+               for (size_t i = 0, j = TypeByteSize; i < TypeByteSize; i++, j--)\r
                {\r
                        V.C[i] = jaguarMainRAM[Adr + j - 1];\r
                }\r
@@ -370,14 +441,78 @@ char *DBGManager_GetVariableValueFromAdr(uint32_t Adr, uint32_t TypeEncoding, ui
 }\r
 \r
 \r
-// Get external variable name based on his Index\r
+// Get local variable's type name based on his Index\r
+// Return type name's text pointer found\r
+// Return NULL if no type name has been found\r
+char *DBGManager_GetLocalVariableTypeName(size_t Adr, size_t Index)\r
+{\r
+       if ((DBGType & DBG_ELFDWARF))\r
+       {\r
+               return DWARFManager_GetLocalVariableTypeName(Adr, Index);\r
+       }\r
+       else\r
+       {\r
+               return  NULL;\r
+       }\r
+}\r
+\r
+\r
+// Get local variable Op based on his Index\r
+// Return variable Op's found\r
+// Return 0 if no variable Op has been found\r
+size_t DBGManager_GetLocalVariableOp(size_t Adr, size_t Index)\r
+{\r
+       if ((DBGType & DBG_ELFDWARF))\r
+       {\r
+               return DWARFManager_GetLocalVariableOp(Adr, Index);\r
+       }\r
+       else\r
+       {\r
+               return  0;\r
+       }\r
+}\r
+\r
+\r
+// Get local variable name based on his Index\r
+// Return variable name's text pointer found\r
+// Return NULL if no variable name has been found\r
+char *DBGManager_GetLocalVariableName(size_t Adr, size_t Index)\r
+{\r
+       if ((DBGType & DBG_ELFDWARF))\r
+       {\r
+               return DWARFManager_GetLocalVariableName(Adr, Index);\r
+       }\r
+       else\r
+       {\r
+               return  NULL;\r
+       }\r
+}\r
+\r
+\r
+// Get global variable name based on his Index\r
 // Return variable name's text pointer found\r
 // Return NULL if no variable name has been found\r
-char *DBGManager_GetExternalVariableName(size_t Index)\r
+char *DBGManager_GetGlobalVariableName(size_t Index)\r
+{\r
+       if ((DBGType & DBG_ELFDWARF))\r
+       {\r
+               return DWARFManager_GetGlobalVariableName(Index);\r
+       }\r
+       else\r
+       {\r
+               return  NULL;\r
+       }\r
+}\r
+\r
+\r
+// Get function name from address\r
+// Return function name found\r
+// Return NULL if no function name has been found\r
+char *DBGManager_GetFunctionName(size_t Adr)\r
 {\r
        if ((DBGType & DBG_ELFDWARF))\r
        {\r
-               return DWARFManager_GetExternalVariableName(Index);\r
+               return DWARFManager_GetFunctionName(Adr);\r
        }\r
        else\r
        {\r
@@ -405,7 +540,7 @@ size_t DBGManager_GetNumLineFromAdr(size_t Adr, size_t Tag)
 // Get symbol name from address\r
 // Return text pointer on the symbol name found\r
 // Return NULL if no symbol name has been found\r
-char *DBGManager_GetSymbolnameFromAdr(size_t Adr)\r
+char *DBGManager_GetSymbolNameFromAdr(size_t Adr)\r
 {\r
        char *Symbolname;\r
 \r