base: Rename Section to Segment, and some of its members.
authorGabe Black <gabeblack@google.com>
Sun, 29 Sep 2019 02:26:02 +0000 (19:26 -0700)
committerGabe Black <gabeblack@google.com>
Wed, 9 Oct 2019 00:06:25 +0000 (00:06 +0000)
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>

24 files changed:
src/arch/alpha/process.cc
src/arch/alpha/system.cc
src/arch/arm/freebsd/system.cc
src/arch/arm/linux/system.cc
src/arch/arm/process.cc
src/arch/arm/system.cc
src/arch/mips/process.cc
src/arch/power/process.cc
src/arch/riscv/bare_metal/system.cc
src/arch/riscv/process.cc
src/arch/sparc/process.cc
src/arch/sparc/system.cc
src/arch/x86/process.cc
src/base/loader/aout_object.cc
src/base/loader/dtb_object.cc
src/base/loader/ecoff_object.cc
src/base/loader/elf_object.cc
src/base/loader/elf_object.hh
src/base/loader/hex_file.cc
src/base/loader/hex_file.hh
src/base/loader/object_file.cc
src/base/loader/object_file.hh
src/base/loader/raw_object.cc
src/sim/system.cc

index ea1cb081935bc8515ddf30a053a7b4bce69cd3c6..d0bfa79c8af66ef287a2542985e894aba59f3442 100644 (file)
@@ -58,9 +58,8 @@ AlphaProcess::AlphaProcess(ProcessParams *params, ObjectFile *objFile)
                      objFile->bssSize();
     brk_point = roundUp(brk_point, PageBytes);
 
-    // Set up stack.  On Alpha, stack goes below text section.  This
-    // code should get moved to some architecture-specific spot.
-    Addr stack_base = objFile->textBase() - (409600+4096);
+    // Set up stack.  On Alpha, stack goes below the image.
+    Addr stack_base = objFile->textBase() - (409600 + 4096);
 
     // Set up region for mmaps.
     Addr mmap_end = 0x10000;
@@ -80,7 +79,7 @@ AlphaProcess::argsInit(int intSize, int pageSize)
     // Patch the ld_bias for dynamic executables.
     updateBias();
 
-    objFile->loadSections(initVirtMem);
+    objFile->loadSegments(initVirtMem);
 
     std::vector<AuxVector<uint64_t>>  auxv;
 
index b72821ed16ea9aafb28ab4284c36ce679a92985f..7bff6da014504c3a637f5bed75bab11a120c3571 100644 (file)
@@ -109,8 +109,8 @@ AlphaSystem::initState()
     System::initState();
 
     // Load program sections into memory
-    pal->loadSections(physProxy, loadAddrMask);
-    console->loadSections(physProxy, loadAddrMask);
+    pal->loadSegments(physProxy, loadAddrMask);
+    console->loadSegments(physProxy, loadAddrMask);
 
     /**
      * Copy the osflags (kernel arguments) into the consoles
index 84538e18ece7a7b252bd844beefae3209cd9af93..6e544a70ea60b62f409eb867027927c726ead473 100644 (file)
@@ -133,7 +133,7 @@ FreebsdArmSystem::initState()
         bootReleaseAddr = ra & ~ULL(0x7F);
 
     dtb_file->setTextBase(params()->atags_addr + loadAddrOffset);
-    dtb_file->loadSections(physProxy);
+    dtb_file->loadSegments(physProxy);
     delete dtb_file;
 
     // Kernel boot requirements to set up r0, r1 and r2 in ARMv7
index 094e4d7a723c8a521e4f4d9711e35d45177eca25..f03a5c6cb98f298c64243b57368fc0a50d2ce2f4 100644 (file)
@@ -152,7 +152,7 @@ LinuxArmSystem::initState()
         }
 
         dtb_file->setTextBase(params()->atags_addr + loadAddrOffset);
-        dtb_file->loadSections(physProxy);
+        dtb_file->loadSegments(physProxy);
         delete dtb_file;
     } else {
         // Using ATAGS
index 8e3cfd91d4bad75aeefe3303a595e274730fe86c..1a1d4a2a0d2965bb4e63cf0b6e01651338d95e39 100644 (file)
@@ -272,7 +272,7 @@ ArmProcess::argsInit(int pageSize, IntRegIndex spIndex)
     updateBias();
 
     // load object file into target memory
-    objFile->loadSections(initVirtMem);
+    objFile->loadSegments(initVirtMem);
 
     //Setup the auxilliary vectors. These will already have endian conversion.
     //Auxilliary vectors are loaded only for elf formatted executables.
index 4ea0d1a91253eb7eab1ed9c8f88091decde7754e..efc347d9d4d84dd049a413fa3c239bbb53c32a46 100644 (file)
@@ -143,7 +143,7 @@ ArmSystem::initState()
 
     if (bootldr) {
         bool isGICv3System = dynamic_cast<Gicv3 *>(getGIC()) != nullptr;
-        bootldr->loadSections(physProxy);
+        bootldr->loadSegments(physProxy);
 
         inform("Using bootloader at address %#x\n", bootldr->entryPoint());
 
index fb78cee2496b1bdb4bc4db700a403fbb924da6bf..e3405fdaacf076b30a137b0c5379256532248d12 100644 (file)
@@ -94,7 +94,7 @@ MipsProcess::argsInit(int pageSize)
     updateBias();
 
     // load object file into target memory
-    objFile->loadSections(initVirtMem);
+    objFile->loadSegments(initVirtMem);
 
     std::vector<AuxVector<IntType>> auxv;
 
index 6362027de522b0e21ad493eb9a2c20153c0e98bb..467c820f2fa798bc1a7a7530ac52d429a7fd6087 100644 (file)
@@ -100,7 +100,7 @@ PowerProcess::argsInit(int intSize, int pageSize)
     updateBias();
 
     // load object file into target memory
-    objFile->loadSections(initVirtMem);
+    objFile->loadSegments(initVirtMem);
 
     //Setup the auxilliary vectors. These will already have endian conversion.
     //Auxilliary vectors are loaded only for elf formatted executables.
index 5cbd63af22664be06c23072344713b8164896f1f..3fb07a489e5c22314e00d05321c8c223bc4d698b 100644 (file)
@@ -55,7 +55,7 @@ BareMetalRiscvSystem::initState()
     RiscvSystem::initState();
 
     // load program sections into memory
-    if (!bootloader->loadSections(physProxy)) {
+    if (!bootloader->loadSegments(physProxy)) {
         warn("could not load sections to memory");
     }
 }
index ab8305257771d1604c55dfc54ae1c4dfc0ffbd76..ca3f0e2b866a879cdf519816eb722b1d94131939 100644 (file)
@@ -126,7 +126,7 @@ RiscvProcess::argsInit(int pageSize)
     const int addrSize = sizeof(IntType);
 
     updateBias();
-    objFile->loadSections(initVirtMem);
+    objFile->loadSegments(initVirtMem);
     ElfObject* elfObject = dynamic_cast<ElfObject*>(objFile);
     memState->setStackMin(memState->getStackBase());
 
index d89c606a302a65fd828f46b352c95a51ee7dcbf4..cca61c1beb801e1901ce87956f10c5fb8ebe8093 100644 (file)
@@ -208,7 +208,7 @@ SparcProcess::argsInit(int pageSize)
     updateBias();
 
     // load object file into target memory
-    objFile->loadSections(initVirtMem);
+    objFile->loadSegments(initVirtMem);
 
     enum hardwareCaps
     {
index a68b11cad1433a375dffb5c00a74cf73bb6d56be..5896061a6b9752092c9cb70360da09195b2e1a90 100644 (file)
@@ -138,22 +138,22 @@ SparcSystem::initState()
 
     // Load reset binary into memory
     reset->setTextBase(params()->reset_addr);
-    reset->loadSections(physProxy);
+    reset->loadSegments(physProxy);
     // Load the openboot binary
     openboot->setTextBase(params()->openboot_addr);
-    openboot->loadSections(physProxy);
+    openboot->loadSegments(physProxy);
     // Load the hypervisor binary
     hypervisor->setTextBase(params()->hypervisor_addr);
-    hypervisor->loadSections(physProxy);
+    hypervisor->loadSegments(physProxy);
     // Load the nvram image
     nvram->setTextBase(params()->nvram_addr);
-    nvram->loadSections(physProxy);
+    nvram->loadSegments(physProxy);
     // Load the hypervisor description image
     hypervisor_desc->setTextBase(params()->hypervisor_desc_addr);
-    hypervisor_desc->loadSections(physProxy);
+    hypervisor_desc->loadSegments(physProxy);
     // Load the partition description image
     partition_desc->setTextBase(params()->partition_desc_addr);
-    partition_desc->loadSections(physProxy);
+    partition_desc->loadSegments(physProxy);
 
 
     // @todo any fixup code over writing data in binaries on setting break
index 0765adea5ee5ef5ce546719eb7929dc9ff7cec3b..60f4f474b039f1d79149783c157367f01f99386c 100644 (file)
@@ -776,7 +776,7 @@ X86Process::argsInit(int pageSize,
     updateBias();
 
     // load object file into target memory
-    objFile->loadSections(initVirtMem);
+    objFile->loadSegments(initVirtMem);
 
     enum X86CpuFeature {
         X86_OnboardFPU = 1 << 0,
index b731c9a8382f66f9a2cc3c2e7e3973c0f8ca0b53..e3f703e1d7d9e5bc47904b63ba2d93b674e1a66c 100644 (file)
@@ -46,9 +46,8 @@ AoutObject::tryFile(const string &fname, size_t len, uint8_t *data)
         // right now this is only used for Alpha PAL code
         return new AoutObject(fname, len, data,
                               ObjectFile::Alpha, ObjectFile::UnknownOpSys);
-    }
-    else {
-        return NULL;
+    } else {
+        return nullptr;
     }
 }
 
@@ -62,21 +61,21 @@ AoutObject::AoutObject(const string &_filename,
 
     entry = execHdr->entry;
 
-    text.baseAddr = N_TXTADDR(*execHdr);
+    text.base = N_TXTADDR(*execHdr);
     text.size = execHdr->tsize;
-    text.fileImage = fileData + N_TXTOFF(*execHdr);
+    text.data = fileData + N_TXTOFF(*execHdr);
 
-    data.baseAddr = N_DATADDR(*execHdr);
+    data.base = N_DATADDR(*execHdr);
     data.size = execHdr->dsize;
-    data.fileImage = fileData + N_DATOFF(*execHdr);
+    data.data = fileData + N_DATOFF(*execHdr);
 
-    bss.baseAddr = N_BSSADDR(*execHdr);
+    bss.base = N_BSSADDR(*execHdr);
     bss.size = execHdr->bsize;
-    bss.fileImage = NULL;
+    bss.data = NULL;
 
     DPRINTFR(Loader, "text: 0x%x %d\ndata: 0x%x %d\nbss: 0x%x %d\n",
-             text.baseAddr, text.size, data.baseAddr, data.size,
-             bss.baseAddr, bss.size);
+             text.base, text.size, data.base, data.size,
+             bss.base, bss.size);
 }
 
 
index fab6a762d6559514fab68793356790e165f0a9a3..92e305ffa9403482aae274bf9f8c5b49e6d37465 100644 (file)
@@ -55,17 +55,17 @@ DtbObject::DtbObject(const std::string &_filename, size_t _len, uint8_t *_data,
                      Arch _arch, OpSys _opSys)
     : ObjectFile(_filename, _len, _data, _arch, _opSys)
 {
-    text.baseAddr = 0;
+    text.base = 0;
     text.size = len;
-    text.fileImage = fileData;
+    text.data = fileData;
 
-    data.baseAddr = 0;
+    data.base = 0;
     data.size = 0;
-    data.fileImage = NULL;
+    data.data = nullptr;
 
-    bss.baseAddr = 0;
+    bss.base = 0;
     bss.size = 0;
-    bss.fileImage = NULL;
+    bss.data = nullptr;
 
     fileDataMmapped = true;
 }
@@ -141,7 +141,7 @@ DtbObject::addBootCmdLine(const char* _args, size_t len)
     }
 
     text.size = newLen;
-    text.fileImage = fdt_buf_w_space;
+    text.data = fdt_buf_w_space;
 
     // clean up old buffer and set to new fdt blob
     munmap(fileData, this->len);
index caeab5f8f3cb3948a29ae2e87930d59c2b449b17..76b91dd662988237106edf79f01ce99de5268797 100644 (file)
@@ -73,21 +73,21 @@ EcoffObject::EcoffObject(const string &_filename, size_t _len, uint8_t *_data,
 
     entry = aoutHdr->entry;
 
-    text.baseAddr = aoutHdr->text_start;
+    text.base = aoutHdr->text_start;
     text.size = aoutHdr->tsize;
-    text.fileImage = fileData + ECOFF_TXTOFF(execHdr);
+    text.data = fileData + ECOFF_TXTOFF(execHdr);
 
-    data.baseAddr = aoutHdr->data_start;
+    data.base = aoutHdr->data_start;
     data.size = aoutHdr->dsize;
-    data.fileImage = fileData + ECOFF_DATOFF(execHdr);
+    data.data = fileData + ECOFF_DATOFF(execHdr);
 
-    bss.baseAddr = aoutHdr->bss_start;
+    bss.base = aoutHdr->bss_start;
     bss.size = aoutHdr->bsize;
-    bss.fileImage = NULL;
+    bss.data = nullptr;
 
-    DPRINTFR(Loader, "text: 0x%x %d\ndata: 0x%x %d\nbss: 0x%x %d\n",
-             text.baseAddr, text.size, data.baseAddr, data.size,
-             bss.baseAddr, bss.size);
+    DPRINTFR(Loader, "text: %#x %d\ndata: %#x %d\nbss: %#x %d\n",
+             text.base, text.size, data.base, data.size,
+             bss.base, bss.size);
 }
 
 bool
index 2a8fb04ea30b7b3421d6ca4f468328fd8b689b8f..3279195401dd190fba1c38065808869f3db3f3ab 100644 (file)
@@ -295,7 +295,7 @@ ElfObject::ElfObject(const std::string &_filename, size_t _len,
 
     // initialize segment sizes to 0 in case they're not present
     text.size = data.size = bss.size = 0;
-    text.baseAddr = data.baseAddr = bss.baseAddr = 0;
+    text.base = data.base = bss.base = 0;
 
     int sec_idx = 1;
 
@@ -352,9 +352,9 @@ ElfObject::ElfObject(const std::string &_filename, size_t _len,
         if (phdr.p_paddr <= bss_sec_start &&
             phdr.p_paddr + phdr.p_memsz > bss_sec_start &&
             phdr.p_memsz - phdr.p_filesz > 0) {
-            bss.baseAddr = phdr.p_paddr + phdr.p_filesz;
+            bss.base = phdr.p_paddr + phdr.p_filesz;
             bss.size = phdr.p_memsz - phdr.p_filesz;
-            bss.fileImage = NULL;
+            bss.data = nullptr;
         }
 
         // Check to see if this is the text or data segment
@@ -365,21 +365,21 @@ ElfObject::ElfObject(const std::string &_filename, size_t _len,
             if (phdr.p_vaddr != 0)
                 relocate = false;
 
-            text.baseAddr = phdr.p_paddr;
+            text.base = phdr.p_paddr;
             text.size = phdr.p_filesz;
-            text.fileImage = fileData + phdr.p_offset;
+            text.data = fileData + phdr.p_offset;
         } else if (phdr.p_vaddr <= data_sec_start &&
                    phdr.p_vaddr + phdr.p_filesz > data_sec_start) {
-            data.baseAddr = phdr.p_paddr;
+            data.base = phdr.p_paddr;
             data.size = phdr.p_filesz;
-            data.fileImage = fileData + phdr.p_offset;
+            data.data = fileData + phdr.p_offset;
         } else {
             // If it's none of the above but is loadable,
             // load the filesize worth of data
             Segment extra;
-            extra.baseAddr = phdr.p_paddr;
+            extra.base = phdr.p_paddr;
             extra.size = phdr.p_filesz;
-            extra.fileImage = fileData + phdr.p_offset;
+            extra.data = fileData + phdr.p_offset;
             extraSegments.push_back(extra);
         }
     }
@@ -389,9 +389,9 @@ ElfObject::ElfObject(const std::string &_filename, size_t _len,
             "Empty .text segment in '%s'. ELF file corrupted?\n",
             filename);
 
-    DPRINTFR(Loader, "text: 0x%x %d\ndata: 0x%x %d\nbss: 0x%x %d\n",
-             text.baseAddr, text.size, data.baseAddr, data.size,
-             bss.baseAddr, bss.size);
+    DPRINTFR(Loader, "text: %#x %d\ndata: %#x %d\nbss: %#x %d\n",
+             text.base, text.size, data.base, data.size,
+             bss.base, bss.size);
 
     elf_end(elf);
 
@@ -498,20 +498,20 @@ ElfObject::loadWeakSymbols(SymbolTable *symtab, Addr base, Addr offset,
 }
 
 bool
-ElfObject::loadSections(const PortProxy& mem_proxy, Addr addr_mask,
+ElfObject::loadSegments(const PortProxy& mem_proxy, Addr addr_mask,
                         Addr offset)
 {
-    if (!ObjectFile::loadSections(mem_proxy, addr_mask, offset))
+    if (!ObjectFile::loadSegments(mem_proxy, addr_mask, offset))
         return false;
 
     for (auto seg : extraSegments) {
-        if (!loadSection(&seg, mem_proxy, addr_mask, offset)) {
+        if (!loadSegment(&seg, mem_proxy, addr_mask, offset)) {
             return false;
         }
     }
 
     if (interpreter)
-        interpreter->loadSections(mem_proxy, addr_mask, offset);
+        interpreter->loadSegments(mem_proxy, addr_mask, offset);
 
     return true;
 }
@@ -570,9 +570,9 @@ ElfObject::updateBias(Addr bias_addr)
     entry += bias_addr;
 
     // Patch segments with the bias_addr.
-    text.baseAddr += bias_addr;
-    data.baseAddr += bias_addr;
-    bss.baseAddr  += bias_addr;
+    text.base += bias_addr;
+    data.base += bias_addr;
+    bss.base  += bias_addr;
     for (auto &segment : extraSegments)
-        segment.baseAddr += bias_addr;
+        segment.base += bias_addr;
 }
index 9585684d4e25ee548c7f3114e5544e7afc113d13..244b9fc3fd0e6ef9a0f287a7c3b1649b641662fa 100644 (file)
@@ -51,9 +51,6 @@
 class ElfObject : public ObjectFile
 {
   protected:
-    // The global definition of a gem5 "Section" is closest to ELF's segments.
-    typedef ObjectFile::Section Segment;
-
     // These values are provided to a linux process by the kernel, so we
     // need to keep them around.
     Addr _programHeaderTable;
@@ -94,7 +91,7 @@ class ElfObject : public ObjectFile
   public:
     virtual ~ElfObject() {}
 
-    bool loadSections(const PortProxy& mem_proxy, Addr addr_mask = maxAddr,
+    bool loadSegments(const PortProxy& mem_proxy, Addr addr_mask = maxAddr,
                       Addr offset = 0) override;
 
     virtual bool loadAllSymbols(SymbolTable *symtab, Addr base = 0,
index 32de905889863ada718122d0ed5ccaba4c544049..4c9ffa516d47a2f1fefdc34e815d127628fdb42e 100644 (file)
@@ -62,7 +62,7 @@ HexFile::~HexFile()
 }
 
 bool
-HexFile::loadSections(PortProxy& memProxy)
+HexFile::loadSegments(PortProxy& memProxy)
 {
     char Line[64];
     Addr MemAddr;
index fe34fddf0b1b5195370295fdaed5aacc848ab02a..befd7f320abcc510987138311acce16fa3f403a2 100644 (file)
@@ -52,7 +52,7 @@ class HexFile
     virtual ~HexFile();
 
     void close();
-    bool loadSections(PortProxy& memProxy);
+    bool loadSegments(PortProxy& memProxy);
 };
 
 #endif // __BASE_LOADER_HEX_FILE_HH__
index 0bb897cee0282f7cd00f02a7c7888141f019f801..8a6b063de323b454ca61ef5c2cf7745d95e6c47d 100644 (file)
@@ -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
index 14dee3be0a9628d7a16f74656f2ec5775a3c3dfe..db995f5d7bc28c343df52f6889ed6f34749ca5b3 100644 (file)
@@ -88,17 +88,17 @@ class ObjectFile
 
     static const Addr maxAddr = std::numeric_limits<Addr>::max();
 
-    virtual bool loadSections(const PortProxy& mem_proxy,
-                              Addr mask = maxAddr, Addr offset = 0);
+    virtual bool loadSegments(const PortProxy &mem_proxy,
+                              Addr mask=maxAddr, Addr offset=0);
 
     virtual bool loadAllSymbols(SymbolTable *symtab, Addr base = 0,
-                                Addr offset = 0, Addr mask = maxAddr) = 0;
+                                Addr offset=0, Addr mask=maxAddr) = 0;
     virtual bool loadGlobalSymbols(SymbolTable *symtab, Addr base = 0,
-                                   Addr offset = 0, Addr mask = maxAddr) = 0;
-    virtual bool loadLocalSymbols(SymbolTable *symtab, Addr base = 0,
-                                  Addr offset = 0, Addr mask = maxAddr) = 0;
-    virtual bool loadWeakSymbols(SymbolTable *symtab, Addr base = 0,
-                                 Addr offset = 0, Addr mask = maxAddr)
+                                   Addr offset=0, Addr mask=maxAddr) = 0;
+    virtual bool loadLocalSymbols(SymbolTable *symtab, Addr base=0,
+                                  Addr offset=0, Addr mask=maxAddr) = 0;
+    virtual bool loadWeakSymbols(SymbolTable *symtab, Addr base=0,
+                                 Addr offset=0, Addr mask=maxAddr)
     { return false; }
 
     virtual ObjectFile *getInterpreter() const { return nullptr; }
@@ -116,27 +116,28 @@ class ObjectFile
 
   protected:
 
-    struct Section {
-        Addr baseAddr;
-        uint8_t *fileImage;
+    struct Segment
+    {
+        Addr base;
+        uint8_t *data;
         size_t size;
     };
 
     Addr entry;
 
-    Section text;
-    Section data;
-    Section bss;
+    Segment text;
+    Segment data;
+    Segment bss;
 
-    bool loadSection(Section *sec, const PortProxy& mem_proxy, Addr mask,
-                     Addr offset = 0);
+    bool loadSegment(Segment *seg, const PortProxy &mem_proxy, Addr mask,
+                     Addr offset=0);
 
   public:
     Addr entryPoint() const { return entry; }
 
-    Addr textBase() const { return text.baseAddr; }
-    Addr dataBase() const { return data.baseAddr; }
-    Addr bssBase() const { return bss.baseAddr; }
+    Addr textBase() const { return text.base; }
+    Addr dataBase() const { return data.base; }
+    Addr bssBase() const { return bss.base; }
 
     size_t textSize() const { return text.size; }
     size_t dataSize() const { return data.size; }
@@ -147,7 +148,7 @@ class ObjectFile
      * blob that doesn't include an object header.
      * @param a address to load the binary/text section at
      */
-    void setTextBase(Addr a) { text.baseAddr = a; }
+    void setTextBase(Addr a) { text.base = a; }
 
     /**
      * Each instance of a Loader subclass will have a chance to try to load
index 4a04f7dfc8279c7d4f05e268126527151cfa576d..9662d8613004f276a6aee86e919706dc1957979a 100644 (file)
@@ -45,21 +45,21 @@ RawObject::RawObject(const std::string &_filename, size_t _len,
         uint8_t *_data, Arch _arch, OpSys _opSys)
     : ObjectFile(_filename, _len, _data, _arch, _opSys)
 {
-    text.baseAddr = 0;
+    text.base = 0;
     text.size = len;
-    text.fileImage = fileData;
+    text.data = fileData;
 
-    data.baseAddr = 0;
+    data.base = 0;
     data.size = 0;
-    data.fileImage = NULL;
+    data.data = nullptr;
 
-    bss.baseAddr = 0;
+    bss.base = 0;
     bss.size = 0;
-    bss.fileImage = NULL;
+    bss.data = nullptr;
 
-    DPRINTFR(Loader, "text: 0x%x %d\ndata: 0x%x %d\nbss: 0x%x %d\n",
-             text.baseAddr, text.size, data.baseAddr, data.size,
-             bss.baseAddr, bss.size);
+    DPRINTFR(Loader, "text: %#x %d\ndata: %#x %d\nbss: %#x %d\n",
+             text.base, text.size, data.base, data.size,
+             bss.base, bss.size);
 }
 
 bool
@@ -73,10 +73,6 @@ bool
 RawObject::loadGlobalSymbols(SymbolTable *symtab, Addr base, Addr offset,
                              Addr addr_mask)
 {
-/*    int fnameStart = filename.rfind('/',filename.size()) + 1;
-    int extStart = filename.rfind('.',filename.size());
-    symtab->insert(text.baseAddr & addr_mask, filename.substr(fnameStart,
-                extStart-fnameStart) + "_start");*/
     return true;
 }
 
@@ -84,9 +80,5 @@ bool
 RawObject::loadLocalSymbols(SymbolTable *symtab, Addr base, Addr offset,
                             Addr addr_mask)
 {
-/*    int fnameStart = filename.rfind('/',filename.size()) + 1;
-    int extStart = filename.rfind('.',filename.size());
-    symtab->insert(text.baseAddr & addr_mask, filename.substr(fnameStart,
-                extStart-fnameStart) + "_start");*/
     return true;
 }
index 74769654b1dac9bbd676155804e7268f73fa2387..73f93a257820601fbf1f77881742affcca50397a 100644 (file)
@@ -327,9 +327,9 @@ System::initState()
                 }
             }
             // Load program sections into memory
-            kernel->loadSections(physProxy, loadAddrMask, loadAddrOffset);
+            kernel->loadSegments(physProxy, loadAddrMask, loadAddrOffset);
             for (const auto &extra_kernel : kernelExtras) {
-                extra_kernel->loadSections(physProxy, loadAddrMask,
+                extra_kernel->loadSegments(physProxy, loadAddrMask,
                                            loadAddrOffset);
             }