static void HandleFunctionDIE (Dwarf_Debug dwHandle, Dwarf_Die currChildDIE) { char *funcName = NULL; Dwarf_Addr lowAddress = 0; Dwarf_Addr highAddress = 0; int dwDieNameRet = dwarf_diename (currChildDIE, &funcName, NULL); int dwDieLowAddrRet = dwarf_lowpc (currChildDIE, &lowAddress, NULL); int dwDieHighAddrRet = dwarf_highpc (currChildDIE, &highAddress, NULL); if ((dwDieNameRet == DW_DLV_OK) && (dwDieLowAddrRet == DW_DLV_OK) && (dwDieHighAddrRet == DW_DLV_OK)) { FunctionMap_Add (funcName, lowAddress, highAddress); } if ((dwDieNameRet == DW_DLV_OK) && (funcName != NULL)) { dwarf_dealloc (dwHandle, funcName, DW_DLA_STRING); } }
static void HandleFunctionDIE (Dwarf_Debug dwHandle, Dwarf_Die currChildDIE) { char *funcName = NULL; Dwarf_Addr lowAddress = 0; Dwarf_Addr highAddress = 0; int dwDieNameRet, dwDieLowAddrRet, dwDieHighAddrRet; dwDieNameRet = dwarf_diename (currChildDIE, &funcName, &dw_err); if (dwDieNameRet != DW_DLV_OK) mpiPi_msg_debug("Failed to get DIE name : %s\n", dwarf_errmsg(dw_err)); dwDieLowAddrRet = dwarf_lowpc (currChildDIE, &lowAddress, &dw_err); if (dwDieLowAddrRet != DW_DLV_OK) mpiPi_msg_debug("Failed to get low PC : %s\n", dwarf_errmsg(dw_err)); dwDieHighAddrRet = dwarf_highpc (currChildDIE, &highAddress, &dw_err); if (dwDieHighAddrRet != DW_DLV_OK) mpiPi_msg_debug("Failed to get high PC : %s\n", dwarf_errmsg(dw_err)); if ((dwDieNameRet == DW_DLV_OK) && (dwDieLowAddrRet == DW_DLV_OK) && (dwDieHighAddrRet == DW_DLV_OK)) { FunctionMap_Add (funcName, lowAddress, highAddress); } if ((dwDieNameRet == DW_DLV_OK) && (funcName != NULL)) { dwarf_dealloc (dwHandle, funcName, DW_DLA_STRING); } }