char *PtrName; // Type's name\r
}S_BaseTypeStruct;\r
\r
+// Definitions for the variables's typetag\r
+#define TypeTag_structure 0x01 // structure\r
+#define TypeTag_pointer 0x02 // pointer\r
+#define TypeTag_0x04 0x04\r
+#define TypeTag_arraytype 0x08 // array type\r
+#define TypeTag_consttype 0x10 // const type\r
+#define TypeTag_typedef 0x20 // typedef\r
+\r
// Variables internal structure\r
struct VariablesStruct\r
{\r
case 2:\r
PtrCU[NbCU].PtrSubProgs[PtrCU[NbCU].NbSubProgs].PtrVariables[PtrCU[NbCU].PtrSubProgs[PtrCU[NbCU].NbSubProgs].NbVariables].Offset = *((char *)(return_block->bl_data) + 1);\r
\r
- if (return_tagval == DW_TAG_variable)\r
+ switch (return_tagval)\r
{\r
+ case DW_TAG_variable:\r
PtrCU[NbCU].PtrSubProgs[PtrCU[NbCU].NbSubProgs].PtrVariables[PtrCU[NbCU].PtrSubProgs[PtrCU[NbCU].NbSubProgs].NbVariables].Offset -= 0x80;\r
+ break;\r
+\r
+ case DW_TAG_formal_parameter:\r
+ break;\r
+\r
+ default:\r
+ break;\r
}\r
- break;\r
\r
default:\r
break;\r
}\r
break;\r
\r
+ case DW_AT_decl_file:\r
+ break;\r
+\r
+ case DW_AT_decl_line:\r
+ break;\r
+\r
default:\r
break;\r
}\r
\r
// Release the memory used by the source lines\r
for (i = 0; i < (size_t)cnt; ++i)\r
+ {\r
dwarf_dealloc(dbg, linebuf[i], DW_DLA_LINE);\r
+ }\r
dwarf_dealloc(dbg, linebuf, DW_DLA_LIST);\r
}\r
\r
break;\r
\r
case DW_TAG_typedef:\r
- PtrVariables->TypeTag |= 0x20;\r
- strcat(PtrVariables->PtrTypeName, PtrCU[NbCU].PtrTypes[j].PtrName);\r
+ if (!(PtrVariables->TypeTag & 0x20))\r
+ {\r
+ PtrVariables->TypeTag |= 0x20;\r
+ strcat(PtrVariables->PtrTypeName, PtrCU[NbCU].PtrTypes[j].PtrName);\r
+ }\r
if ((TypeOffset = PtrCU[NbCU].PtrTypes[j].TypeOffset))\r
{\r
j = -1;\r
break;\r
\r
case DW_TAG_base_type:\r
- strcat(PtrVariables->PtrTypeName, PtrCU[NbCU].PtrTypes[j].PtrName);\r
+ if (!(PtrVariables->TypeTag & 0x20))\r
+ {\r
+ strcat(PtrVariables->PtrTypeName, PtrCU[NbCU].PtrTypes[j].PtrName);\r
+ }\r
if ((PtrVariables->TypeTag & 0x2))\r
{\r
strcat(PtrVariables->PtrTypeName, " *");\r