4uint64_t ExceptionDirWrapper::EntriesLimit = 10000;
19 if (maxSize == 0)
return false;
24 const size_t ENTRY_SIZE =
sizeof(IMAGE_IA64_RUNTIME_FUNCTION_ENTRY);
26 for (
int i = 0; i < ExceptionDirWrapper::EntriesLimit && parsedSize < maxSize; i++) {
29 if (entry->
getPtr() == NULL) {
33 this->parsedSize += ENTRY_SIZE;
42 "Entries num = %lu, parsedSize = %lX",
43 static_cast<unsigned long>(
entries.size()),
44 static_cast<unsigned long>(parsedSize)
53 if (ptr == NULL)
return NULL;
55 IMAGE_IA64_RUNTIME_FUNCTION_ENTRY* exc = (IMAGE_IA64_RUNTIME_FUNCTION_ENTRY*) ptr;
63 if (this->parentDir == NULL)
return NULL;
64 IMAGE_IA64_RUNTIME_FUNCTION_ENTRY* first = this->parentDir->
exceptFunc64();
65 if (!first)
return NULL;
67 const size_t ENTRY_SIZE =
sizeof(IMAGE_IA64_RUNTIME_FUNCTION_ENTRY);
69 uint64_t firstOffset = this->
getOffset(first);
70 uint64_t myOffset = firstOffset + this->
entryNum * ENTRY_SIZE;
78 if (this->parentDir == NULL)
return 0;
79 if (this->
getPtr() == NULL)
return 0;
81 return sizeof(IMAGE_IA64_RUNTIME_FUNCTION_ENTRY);
86 IMAGE_IA64_RUNTIME_FUNCTION_ENTRY* exc = (IMAGE_IA64_RUNTIME_FUNCTION_ENTRY*) this->
getPtr();
87 if (!exc)
return NULL;
91 case END_ADDR :
return &exc->EndAddress;
101 case END_ADDR :
return "EndAddress";
bufsize_t getDirEntrySize()
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,...)