\r
// To Do\r
// To use pointers instead of arrays usage\r
+// To keep sources text file intact wihtout QT/HTML transformation\r
// \r
\r
\r
\r
\r
// Definitions for debugging\r
-//#define DEBUG_NumCU 0x9 // CU number to debug or undefine it\r
+//#define DEBUG_NumCU 0x4d // CU number to debug or undefine it\r
//#define DEBUG_VariableName "sound_death" // Variable name to look for or undefine it\r
//#define DEBUG_TypeName "Cbuf_Execute" // Type name to look for or undefine it\r
//#define DEBUG_TypeDef DW_TAG_typedef // Type def to look for or undefine it (not supported)\r
{\r
PtrCU[NbCU].PtrLinesSrc[i].PtrLineSrc = PtrCU[NbCU].PtrLinesLoadSrc[PtrCU[NbCU].PtrLinesSrc[i].NumLineSrc - 1];\r
}\r
+\r
+ // Setup memory range for the code if CU doesn't have already this information\r
+ // It is taken from the used lines structure\r
+ if (!PtrCU[NbCU].LowPC && (!PtrCU[NbCU].HighPC || (PtrCU[NbCU].HighPC == ~0)))\r
+ {\r
+ PtrCU[NbCU].LowPC = PtrCU[NbCU].PtrLinesSrc[0].StartPC;\r
+ PtrCU[NbCU].HighPC = PtrCU[NbCU].PtrLinesSrc[PtrCU[NbCU].NbLinesSrc - 1].StartPC;\r
+ }\r
}\r
}\r
\r
PtrVariables->TypeTag |= TypeTag_structure;\r
if (!(PtrVariables->TypeTag & TypeTag_typedef))\r
{\r
- strcat(PtrVariables->PtrTypeName, PtrCU[NbCU].PtrTypes[j].PtrName);\r
+ if (PtrCU[NbCU].PtrTypes[j].PtrName)\r
+ {\r
+ strcat(PtrVariables->PtrTypeName, PtrCU[NbCU].PtrTypes[j].PtrName);\r
+ }\r
}\r
if ((TypeOffset = PtrCU[NbCU].PtrTypes[j].TypeOffset))\r
{\r
#endif\r
}\r
}\r
+\r
+ // Check if a used line is found with the address\r
+ for (size_t j = 0; j < PtrCU[i].NbLinesSrc; j++)\r
+ {\r
+ if (PtrCU[i].PtrLinesSrc[j].StartPC == Adr)\r
+ {\r
+ return PtrCU[i].PtrLinesSrc[j].NumLineSrc;\r
+ }\r
+ }\r
}\r
}\r
\r