BaseTypeStruct *PtrTypes;\r
size_t NbVariables; // Variables number\r
VariablesStruct *PtrVariables; // Pointer to the global variables list information structure\r
BaseTypeStruct *PtrTypes;\r
size_t NbVariables; // Variables number\r
VariablesStruct *PtrVariables; // Pointer to the global variables list information structure\r
if (dwarf_attrlist(return_sib, &atlist, &atcnt, &error) == DW_DLV_OK)\r
{\r
for (Dwarf_Signed i = 0; i < atcnt; ++i)\r
if (dwarf_attrlist(return_sib, &atlist, &atcnt, &error) == DW_DLV_OK)\r
{\r
for (Dwarf_Signed i = 0; i < atcnt; ++i)\r
if (dwarf_lowpc(return_sib, &return_lowpc, &error) == DW_DLV_OK)\r
{\r
PtrCU[NbCU].LowPC = return_lowpc;\r
}\r
break;\r
\r
if (dwarf_lowpc(return_sib, &return_lowpc, &error) == DW_DLV_OK)\r
{\r
PtrCU[NbCU].LowPC = return_lowpc;\r
}\r
break;\r
\r
if (dwarf_highpc(return_sib, &return_highpc, &error) == DW_DLV_OK)\r
{\r
PtrCU[NbCU].HighPC = return_highpc;\r
}\r
break;\r
\r
if (dwarf_highpc(return_sib, &return_highpc, &error) == DW_DLV_OK)\r
{\r
PtrCU[NbCU].HighPC = return_highpc;\r
}\r
break;\r
\r
if (dwarf_formstring(atlist[i], &return_string, &error) == DW_DLV_OK)\r
{\r
PtrCU[NbCU].PtrProducer = (char *)calloc(strlen(return_string) + 1, 1);\r
if (dwarf_formstring(atlist[i], &return_string, &error) == DW_DLV_OK)\r
{\r
PtrCU[NbCU].PtrProducer = (char *)calloc(strlen(return_string) + 1, 1);\r
if (dwarf_formstring(atlist[i], &return_string, &error) == DW_DLV_OK)\r
{\r
SourceFilename = (char *)realloc(SourceFilename, strlen(return_string) + 1);\r
if (dwarf_formstring(atlist[i], &return_string, &error) == DW_DLV_OK)\r
{\r
SourceFilename = (char *)realloc(SourceFilename, strlen(return_string) + 1);\r
if (dwarf_formstring(atlist[i], &return_string, &error) == DW_DLV_OK)\r
{\r
SourceFileDirectory = (char *)realloc(SourceFileDirectory, strlen(return_string) + 1);\r
if (dwarf_formstring(atlist[i], &return_string, &error) == DW_DLV_OK)\r
{\r
SourceFileDirectory = (char *)realloc(SourceFileDirectory, strlen(return_string) + 1);\r
sprintf(SourceFullFilename, "%s\\%s", SourceFileDirectory, SourceFilename);\r
sprintf(SourceFullFilename, "%s\\%s", SourceFileDirectory, SourceFilename);\r
if (dwarf_attrlist(return_die, &atlist, &atcnt, &error) == DW_DLV_OK)\r
{\r
PtrCU[NbCU].PtrVariables = (VariablesStruct *)realloc(PtrCU[NbCU].PtrVariables, ((PtrCU[NbCU].NbVariables + 1) * sizeof(VariablesStruct)));\r
if (dwarf_attrlist(return_die, &atlist, &atcnt, &error) == DW_DLV_OK)\r
{\r
PtrCU[NbCU].PtrVariables = (VariablesStruct *)realloc(PtrCU[NbCU].PtrVariables, ((PtrCU[NbCU].NbVariables + 1) * sizeof(VariablesStruct)));\r
if (dwarf_formblock(return_attr1, &return_block, &error) == DW_DLV_OK)\r
{\r
PtrCU[NbCU].PtrVariables[PtrCU[NbCU].NbVariables].Op = (*((unsigned char *)(return_block->bl_data)));\r
if (dwarf_formblock(return_attr1, &return_block, &error) == DW_DLV_OK)\r
{\r
PtrCU[NbCU].PtrVariables[PtrCU[NbCU].NbVariables].Op = (*((unsigned char *)(return_block->bl_data)));\r
if (dwarf_global_formref(return_attr1, &return_offset, &error) == DW_DLV_OK)\r
{\r
PtrCU[NbCU].PtrVariables[PtrCU[NbCU].NbVariables].TypeOffset = return_offset;\r
}\r
break;\r
\r
if (dwarf_global_formref(return_attr1, &return_offset, &error) == DW_DLV_OK)\r
{\r
PtrCU[NbCU].PtrVariables[PtrCU[NbCU].NbVariables].TypeOffset = return_offset;\r
}\r
break;\r
\r
if (dwarf_formstring(return_attr1, &return_string, &error) == DW_DLV_OK)\r
{\r
#ifdef DEBUG_VariableName\r
if (dwarf_formstring(return_attr1, &return_string, &error) == DW_DLV_OK)\r
{\r
#ifdef DEBUG_VariableName\r
- case DW_TAG_base_type:\r
- case DW_TAG_typedef:\r
- case DW_TAG_structure_type:\r
- case DW_TAG_pointer_type:\r
- case DW_TAG_const_type:\r
- case DW_TAG_array_type:\r
- case DW_TAG_subrange_type:\r
- case DW_TAG_subroutine_type:\r
+ case DW_TAG_base_type:\r
+ case DW_TAG_typedef:\r
+ case DW_TAG_structure_type:\r
+ case DW_TAG_pointer_type:\r
+ case DW_TAG_const_type:\r
+ case DW_TAG_array_type:\r
+ case DW_TAG_subrange_type:\r
+ case DW_TAG_subroutine_type:\r
if (dwarf_attrlist(return_die, &atlist, &atcnt, &error) == DW_DLV_OK)\r
{\r
PtrCU[NbCU].PtrTypes = (BaseTypeStruct *)realloc(PtrCU[NbCU].PtrTypes, ((PtrCU[NbCU].NbTypes + 1) * sizeof(BaseTypeStruct)));\r
if (dwarf_attrlist(return_die, &atlist, &atcnt, &error) == DW_DLV_OK)\r
{\r
PtrCU[NbCU].PtrTypes = (BaseTypeStruct *)realloc(PtrCU[NbCU].PtrTypes, ((PtrCU[NbCU].NbTypes + 1) * sizeof(BaseTypeStruct)));\r
if (dwarf_global_formref(return_attr1, &return_offset, &error) == DW_DLV_OK)\r
{\r
PtrCU[NbCU].PtrTypes[PtrCU[NbCU].NbTypes].TypeOffset = return_offset;\r
}\r
break;\r
\r
if (dwarf_global_formref(return_attr1, &return_offset, &error) == DW_DLV_OK)\r
{\r
PtrCU[NbCU].PtrTypes[PtrCU[NbCU].NbTypes].TypeOffset = return_offset;\r
}\r
break;\r
\r
if (dwarf_formudata(return_attr1, &return_uvalue, &error) == DW_DLV_OK)\r
{\r
PtrCU[NbCU].PtrTypes[PtrCU[NbCU].NbTypes].ByteSize = return_uvalue;\r
}\r
break;\r
\r
if (dwarf_formudata(return_attr1, &return_uvalue, &error) == DW_DLV_OK)\r
{\r
PtrCU[NbCU].PtrTypes[PtrCU[NbCU].NbTypes].ByteSize = return_uvalue;\r
}\r
break;\r
\r
if (dwarf_formudata(return_attr1, &return_uvalue, &error) == DW_DLV_OK)\r
{\r
PtrCU[NbCU].PtrTypes[PtrCU[NbCU].NbTypes].Encoding = return_uvalue;\r
}\r
break;\r
\r
if (dwarf_formudata(return_attr1, &return_uvalue, &error) == DW_DLV_OK)\r
{\r
PtrCU[NbCU].PtrTypes[PtrCU[NbCU].NbTypes].Encoding = return_uvalue;\r
}\r
break;\r
\r
if (dwarf_formstring(return_attr1, &return_string, &error) == DW_DLV_OK)\r
{\r
PtrCU[NbCU].PtrTypes[PtrCU[NbCU].NbTypes].PtrName = (char *)calloc(strlen(return_string) + 1, 1);\r
if (dwarf_formstring(return_attr1, &return_string, &error) == DW_DLV_OK)\r
{\r
PtrCU[NbCU].PtrTypes[PtrCU[NbCU].NbTypes].PtrName = (char *)calloc(strlen(return_string) + 1, 1);\r
if (dwarf_attrlist(return_die, &atlist, &atcnt, &error) == DW_DLV_OK)\r
{\r
PtrCU[NbCU].PtrSubProgs = (SubProgStruct *)realloc(PtrCU[NbCU].PtrSubProgs, ((PtrCU[NbCU].NbSubProgs + 1) * sizeof(SubProgStruct)));\r
if (dwarf_attrlist(return_die, &atlist, &atcnt, &error) == DW_DLV_OK)\r
{\r
PtrCU[NbCU].PtrSubProgs = (SubProgStruct *)realloc(PtrCU[NbCU].PtrSubProgs, ((PtrCU[NbCU].NbSubProgs + 1) * sizeof(SubProgStruct)));\r
case DW_AT_frame_base:\r
if (dwarf_formudata(return_attr1, &return_uvalue, &error) == DW_DLV_OK)\r
{\r
PtrCU[NbCU].PtrSubProgs[PtrCU[NbCU].NbSubProgs].FrameBase = return_uvalue;\r
case DW_AT_frame_base:\r
if (dwarf_formudata(return_attr1, &return_uvalue, &error) == DW_DLV_OK)\r
{\r
PtrCU[NbCU].PtrSubProgs[PtrCU[NbCU].NbSubProgs].FrameBase = return_uvalue;\r
if (dwarf_formblock(return_attr1, &return_block, &error) == DW_DLV_OK)\r
{\r
PtrCU[NbCU].PtrSubProgs[PtrCU[NbCU].NbSubProgs].PtrVariables[PtrCU[NbCU].PtrSubProgs[PtrCU[NbCU].NbSubProgs].NbVariables].Op = *((unsigned char *)(return_block->bl_data));\r
if (dwarf_formblock(return_attr1, &return_block, &error) == DW_DLV_OK)\r
{\r
PtrCU[NbCU].PtrSubProgs[PtrCU[NbCU].NbSubProgs].PtrVariables[PtrCU[NbCU].PtrSubProgs[PtrCU[NbCU].NbSubProgs].NbVariables].Op = *((unsigned char *)(return_block->bl_data));\r
if (dwarf_global_formref(return_attr1, &return_offset, &error) == DW_DLV_OK)\r
{\r
PtrCU[NbCU].PtrSubProgs[PtrCU[NbCU].NbSubProgs].PtrVariables[PtrCU[NbCU].PtrSubProgs[PtrCU[NbCU].NbSubProgs].NbVariables].TypeOffset = return_offset;\r
}\r
break;\r
\r
if (dwarf_global_formref(return_attr1, &return_offset, &error) == DW_DLV_OK)\r
{\r
PtrCU[NbCU].PtrSubProgs[PtrCU[NbCU].NbSubProgs].PtrVariables[PtrCU[NbCU].PtrSubProgs[PtrCU[NbCU].NbSubProgs].NbVariables].TypeOffset = return_offset;\r
}\r
break;\r
\r
if (dwarf_formstring(return_attr1, &return_string, &error) == DW_DLV_OK)\r
{\r
#ifdef DEBUG_VariableName\r
if (dwarf_formstring(return_attr1, &return_string, &error) == DW_DLV_OK)\r
{\r
#ifdef DEBUG_VariableName\r
PtrVariables->TypeByteSize = PtrCU[NbCU].PtrTypes[j].ByteSize;\r
PtrVariables->TypeEncoding = 0x10;\r
if (!(TypeOffset = PtrCU[NbCU].PtrTypes[j].TypeOffset))\r
PtrVariables->TypeByteSize = PtrCU[NbCU].PtrTypes[j].ByteSize;\r
PtrVariables->TypeEncoding = 0x10;\r
if (!(TypeOffset = PtrCU[NbCU].PtrTypes[j].TypeOffset))\r
strcat(PtrVariables->PtrTypeName, PtrCU[NbCU].PtrTypes[j].PtrName);\r
}\r
if ((TypeOffset = PtrCU[NbCU].PtrTypes[j].TypeOffset))\r
strcat(PtrVariables->PtrTypeName, PtrCU[NbCU].PtrTypes[j].PtrName);\r
}\r
if ((TypeOffset = PtrCU[NbCU].PtrTypes[j].TypeOffset))\r
strcat(PtrVariables->PtrTypeName, "const ");\r
if ((TypeOffset = PtrCU[NbCU].PtrTypes[j].TypeOffset))\r
{\r
strcat(PtrVariables->PtrTypeName, "const ");\r
if ((TypeOffset = PtrCU[NbCU].PtrTypes[j].TypeOffset))\r
{\r
PtrVariables->TypeByteSize = PtrCU[NbCU].PtrTypes[j].ByteSize;\r
PtrVariables->TypeEncoding = PtrCU[NbCU].PtrTypes[j].Encoding;\r
}\r
PtrVariables->TypeByteSize = PtrCU[NbCU].PtrTypes[j].ByteSize;\r
PtrVariables->TypeEncoding = PtrCU[NbCU].PtrTypes[j].Encoding;\r
}\r