diff options
Diffstat (limited to 'src/base/loader/ecoff_object.cc')
-rw-r--r-- | src/base/loader/ecoff_object.cc | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/src/base/loader/ecoff_object.cc b/src/base/loader/ecoff_object.cc index 76b91dd66..56f9b35fc 100644 --- a/src/base/loader/ecoff_object.cc +++ b/src/base/loader/ecoff_object.cc @@ -73,21 +73,14 @@ EcoffObject::EcoffObject(const string &_filename, size_t _len, uint8_t *_data, entry = aoutHdr->entry; - text.base = aoutHdr->text_start; - text.size = aoutHdr->tsize; - text.data = fileData + ECOFF_TXTOFF(execHdr); - - data.base = aoutHdr->data_start; - data.size = aoutHdr->dsize; - data.data = fileData + ECOFF_DATOFF(execHdr); - - bss.base = aoutHdr->bss_start; - bss.size = aoutHdr->bsize; - bss.data = nullptr; - - DPRINTFR(Loader, "text: %#x %d\ndata: %#x %d\nbss: %#x %d\n", - text.base, text.size, data.base, data.size, - bss.base, bss.size); + addSegment("text", aoutHdr->text_start, fileData + ECOFF_TXTOFF(execHdr), + aoutHdr->tsize); + addSegment("data", aoutHdr->data_start, fileData + ECOFF_DATOFF(execHdr), + aoutHdr->dsize); + addSegment("bss", aoutHdr->bss_start, nullptr, aoutHdr->bsize); + + for (auto &seg: segments) + DPRINTFR(Loader, "%s\n", *seg); } bool |