ElfSegment* CoreFile::_FindAreaSegment(uint64 address) const { int32 count = fElfFile.CountSegments(); for (int32 i = 0; i < count; i++) { ElfSegment* segment = fElfFile.SegmentAt(i); if (segment->Type() == PT_LOAD && segment->LoadAddress() == address) return segment; } return NULL; }
ElfSegment* ElfFile::DataSegment() const { int32 count = fSegments.CountItems(); for (int32 i = 0; i < count; i++) { ElfSegment* segment = fSegments.ItemAt(i); if (segment->Type() == PT_LOAD && segment->IsWritable()) return segment; } return NULL; }
status_t CoreFile::_ReadNotes() { int32 count = fElfFile.CountSegments(); for (int32 i = 0; i < count; i++) { ElfSegment* segment = fElfFile.SegmentAt(i); if (segment->Type() == PT_NOTE) { status_t error = _ReadNotes<ElfClass>(segment); if (error != B_OK) return error; } } return B_OK; }