SymbolType CompilerMain::GetType(YYSTYPE val) { SymbolEntry * symbol = FindSymbolByName(QString::fromStdString(val)); if(symbol!=NULL) return symbol->type; return Type_None; }
const bool Symbols::SymbolFromAddress(const DWORD64 dwAddress, const SymbolInfo **pFullSymbolInfo) { char pBuffer[sizeof(SYMBOL_INFO) + MAX_SYM_NAME * sizeof(char)] = { 0 }; PSYMBOL_INFO pSymInfo = (PSYMBOL_INFO)pBuffer; pSymInfo->SizeOfStruct = sizeof(SYMBOL_INFO); pSymInfo->MaxNameLen = MAX_SYM_NAME; DWORD64 dwDisplacement = 0; const bool bSuccess = BOOLIFY(SymFromAddr(m_hProcess, dwAddress, &dwDisplacement, pSymInfo)); if (!bSuccess) { fprintf(stderr, "Could not retrieve symbol from address %p. Error = %X.\n", (DWORD_PTR)dwAddress, GetLastError()); return false; } fprintf(stderr, "Symbol found at %p. Name: %.*s. Base address of module: %p\n", (DWORD_PTR)dwAddress, pSymInfo->NameLen, pSymInfo->Name, (DWORD_PTR)pSymInfo->ModBase); *pFullSymbolInfo = FindSymbolByName(pSymInfo->Name); return bSuccess; }
void CompilerMain::SetTempType(QString name, SymbolType type) { SymbolEntry* tempSymbol = FindSymbolByName(name); tempSymbol->type = type; }