diff options
author | Gabe Black <gabeblack@google.com> | 2019-09-28 19:26:02 -0700 |
---|---|---|
committer | Gabe Black <gabeblack@google.com> | 2019-10-09 00:06:25 +0000 |
commit | 3c65c44a1ae87607337a56ca45b6b305778d52ff (patch) | |
tree | 99c47c7bf5c9a7b14b7b87cb31633b9370b2d7d6 /src/base/loader/object_file.cc | |
parent | 93595f4a2a069d1b10c6ff63a5f5273b3a695549 (diff) | |
download | gem5-3c65c44a1ae87607337a56ca45b6b305778d52ff.tar.xz |
base: Rename Section to Segment, and some of its members.
ELF is, in my opinion, the most important object file format gem5
currently understands, and in ELF terminolgy the blob of data that
needs to be loaded into memory to a particular location is called a
segment. A section is a software level view of what's in a region
of memory, and a single segment may contain multiple sections which
happen to follow each other in memory.
Change-Id: Ib810c5050723d5a96bd7550515b08ac695fb1b02
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/21462
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Gabe Black <gabeblack@google.com>
Diffstat (limited to 'src/base/loader/object_file.cc')
-rw-r--r-- | src/base/loader/object_file.cc | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/src/base/loader/object_file.cc b/src/base/loader/object_file.cc index 0bb897cee..8a6b063de 100644 --- a/src/base/loader/object_file.cc +++ b/src/base/loader/object_file.cc @@ -73,17 +73,16 @@ ObjectFile::~ObjectFile() bool -ObjectFile::loadSection(Section *sec, const PortProxy& mem_proxy, +ObjectFile::loadSegment(Segment *seg, const PortProxy& mem_proxy, Addr addr_mask, Addr offset) { - if (sec->size != 0) { - Addr addr = (sec->baseAddr & addr_mask) + offset; - if (sec->fileImage) { - mem_proxy.writeBlob(addr, sec->fileImage, sec->size); - } - else { + if (seg->size != 0) { + Addr addr = (seg->base & addr_mask) + offset; + if (seg->data) { + mem_proxy.writeBlob(addr, seg->data, seg->size); + } else { // no image: must be bss - mem_proxy.memsetBlob(addr, 0, sec->size); + mem_proxy.memsetBlob(addr, 0, seg->size); } } return true; @@ -91,12 +90,12 @@ ObjectFile::loadSection(Section *sec, const PortProxy& mem_proxy, bool -ObjectFile::loadSections(const PortProxy& mem_proxy, Addr addr_mask, +ObjectFile::loadSegments(const PortProxy& mem_proxy, Addr addr_mask, Addr offset) { - return (loadSection(&text, mem_proxy, addr_mask, offset) - && loadSection(&data, mem_proxy, addr_mask, offset) - && loadSection(&bss, mem_proxy, addr_mask, offset)); + return (loadSegment(&text, mem_proxy, addr_mask, offset) + && loadSegment(&data, mem_proxy, addr_mask, offset) + && loadSegment(&bss, mem_proxy, addr_mask, offset)); } namespace |