summaryrefslogtreecommitdiff
path: root/src/base/loader/object_file.cc
diff options
context:
space:
mode:
authorGabe Black <gabeblack@google.com>2019-09-28 19:26:02 -0700
committerGabe Black <gabeblack@google.com>2019-10-09 00:06:25 +0000
commit3c65c44a1ae87607337a56ca45b6b305778d52ff (patch)
tree99c47c7bf5c9a7b14b7b87cb31633b9370b2d7d6 /src/base/loader/object_file.cc
parent93595f4a2a069d1b10c6ff63a5f5273b3a695549 (diff)
downloadgem5-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.cc23
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