17 if (maxSize == 0)
return false;
21 const size_t ENTRY_SIZE =
sizeof(IMAGE_IA64_RUNTIME_FUNCTION_ENTRY);
23 while (parsedSize < maxSize) {
26 if (entry->
getPtr() == NULL) {
30 this->parsedSize += ENTRY_SIZE;
34 "Entries num = %lu, parsedSize = %lX",
35 static_cast<unsigned long>(
entries.size()),
36 static_cast<unsigned long>(parsedSize)
45 if (ptr == NULL)
return NULL;
47 IMAGE_IA64_RUNTIME_FUNCTION_ENTRY* exc = (IMAGE_IA64_RUNTIME_FUNCTION_ENTRY*) ptr;
55 if (this->parentDir == NULL)
return NULL;
56 IMAGE_IA64_RUNTIME_FUNCTION_ENTRY* first = this->parentDir->
exceptFunc64();
57 if (!first)
return NULL;
59 const size_t ENTRY_SIZE =
sizeof(IMAGE_IA64_RUNTIME_FUNCTION_ENTRY);
61 uint64_t firstOffset = this->
getOffset(first);
62 uint64_t myOffset = firstOffset + this->
entryNum * ENTRY_SIZE;
70 if (this->parentDir == NULL)
return 0;
71 if (this->
getPtr() == NULL)
return 0;
73 return sizeof(IMAGE_IA64_RUNTIME_FUNCTION_ENTRY);
78 IMAGE_IA64_RUNTIME_FUNCTION_ENTRY* exc = (IMAGE_IA64_RUNTIME_FUNCTION_ENTRY*) this->
getPtr();
79 if (!exc)
return NULL;
83 case END_ADDR :
return &exc->EndAddress;
bufsize_t getDirEntrySize(bool trimToExeSize=false)
offset_t getDirEntryAddress()
friend class ExceptionEntryWrapper
IMAGE_IA64_RUNTIME_FUNCTION_ENTRY * exceptFunc64()
virtual QString getName()
virtual void * getFieldPtr(size_t fieldId, size_t subField=FIELD_NONE)
virtual Executable::addr_type containsAddrType(size_t fieldId, size_t subField)
virtual QString getFieldName(size_t fieldId)
virtual bufsize_t getSize()
std::vector< ExeNodeWrapper * > entries
BYTE * getContentAt(offset_t offset, bufsize_t size, bool allowExceptions=false)
bool append(dbg_level lvl, const char *format,...)