12) Create a directory for EEPROMs (based on the EEPROMs setting) if it doesn't already exist\r
13) Keep the scrollbar position in accordance of the M68K PC pointer\r
-- UI displays the source without the need to move down/up the scrollbar\r
-14) Fixed a crash when DWARF report a source line number exceeding the number of lines present in the source file\r
+14) Fixed a crash when DWARF information report a source line number exceeding the number of lines present in a source file\r
-- This may come from the linker vlink\r
15) Improved the .heap section detection to avoid a detection error\r
-- Depend vlink version, .heap section may have an Alloc flag\r
+16) Fixed a crash when DWARF information does references to missing source code files\r
\r
Release 2 (3rd September 2017)\r
------------------------------\r
\r
\r
//\r
-//#define DEBUG_NumCU 0x42 // CU number to debug or undefine it\r
+//#define DEBUG_NumCU 0x6 // CU number to debug or undefine it\r
\r
\r
// Source line internal structure\r
PtrCU[NbCU].PtrLinesLoadSrc[j] = (char *)realloc(PtrCU[NbCU].PtrLinesLoadSrc[j], i + 1);\r
}\r
}\r
+\r
+ // Init lines source information based on each source code line numbers\r
+ for (j = 0; j < PtrCU[NbCU].NbSubProgs; j++)\r
+ {\r
+ // Check if the subprog / function's line exists in the source code\r
+ if (PtrCU[NbCU].PtrSubProgs[j].NumLineSrc <= PtrCU[NbCU].NbLinesLoadSrc)\r
+ {\r
+ PtrCU[NbCU].PtrSubProgs[j].PtrLineSrc = PtrCU[NbCU].PtrLinesLoadSrc[PtrCU[NbCU].PtrSubProgs[j].NumLineSrc - 1];\r
+ }\r
+\r
+ for (k = 0; k < PtrCU[NbCU].PtrSubProgs[j].NbLinesSrc; k++)\r
+ {\r
+ if (PtrCU[NbCU].PtrSubProgs[j].PtrLinesSrc[k].NumLineSrc <= PtrCU[NbCU].NbLinesLoadSrc)\r
+ {\r
+ PtrCU[NbCU].PtrSubProgs[j].PtrLinesSrc[k].PtrLineSrc = PtrCU[NbCU].PtrLinesLoadSrc[PtrCU[NbCU].PtrSubProgs[j].PtrLinesSrc[k].NumLineSrc - 1];\r
+ }\r
+ }\r
+ }\r
}\r
}\r
else\r
// Set each source lines pointer to NULL\r
if (PtrCU[NbCU].NbSubProgs)\r
{\r
- i = PtrCU[NbCU].PtrSubProgs[PtrCU[NbCU].NbSubProgs - 1].PtrLinesSrc[PtrCU[NbCU].PtrSubProgs[PtrCU[NbCU].NbSubProgs - 1].NbLinesSrc - 1].NumLineSrc;\r
- if (PtrCU[NbCU].PtrLinesLoadSrc = (char **)calloc(i, sizeof(char *)))\r
+ // Check the presence of source lines dedicated to the sub progs\r
+ if (PtrCU[NbCU].PtrSubProgs[PtrCU[NbCU].NbSubProgs - 1].NbLinesSrc)\r
{\r
- for (j = 0; j < i; j++)\r
+ i = PtrCU[NbCU].PtrSubProgs[PtrCU[NbCU].NbSubProgs - 1].PtrLinesSrc[PtrCU[NbCU].PtrSubProgs[PtrCU[NbCU].NbSubProgs - 1].NbLinesSrc - 1].NumLineSrc;\r
+ if (PtrCU[NbCU].PtrLinesLoadSrc = (char **)calloc(i, sizeof(char *)))\r
{\r
- PtrCU[NbCU].PtrLinesLoadSrc[j] = NULL;\r
+ for (j = 0; j < i; j++)\r
+ {\r
+ PtrCU[NbCU].PtrLinesLoadSrc[j] = NULL;\r
+ }\r
}\r
}\r
}\r
}\r
\r
- // Init lines source information based on each source code line numbers\r
- for (j = 0; j < PtrCU[NbCU].NbSubProgs; j++)\r
- {\r
- // Check if the subprog / function's line exists in the source code\r
- if (PtrCU[NbCU].PtrSubProgs[j].NumLineSrc <= PtrCU[NbCU].NbLinesLoadSrc)\r
- {\r
- PtrCU[NbCU].PtrSubProgs[j].PtrLineSrc = PtrCU[NbCU].PtrLinesLoadSrc[PtrCU[NbCU].PtrSubProgs[j].NumLineSrc - 1];\r
- }\r
-\r
- for (k = 0; k < PtrCU[NbCU].PtrSubProgs[j].NbLinesSrc; k++)\r
- {\r
- PtrCU[NbCU].PtrSubProgs[j].PtrLinesSrc[k].PtrLineSrc = PtrCU[NbCU].PtrLinesLoadSrc[PtrCU[NbCU].PtrSubProgs[j].PtrLinesSrc[k].NumLineSrc - 1];\r
- }\r
- }\r
-\r
// Init variables information based on types information\r
for (i = 0; i < PtrCU[NbCU].NbVariables; i++)\r
{\r