changeset 692cdb71febd in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=692cdb71febd
description:
        Loader: Use address mask provided to load*Symbols when loading the 
symbols from the symbol table.

diffstat:

 src/base/loader/elf_object.cc |  8 ++++----
 src/base/loader/elf_object.hh |  2 +-
 2 files changed, 5 insertions(+), 5 deletions(-)

diffs (49 lines):

diff -r 6f77f379a594 -r 692cdb71febd src/base/loader/elf_object.cc
--- a/src/base/loader/elf_object.cc     Mon Aug 23 11:18:39 2010 -0500
+++ b/src/base/loader/elf_object.cc     Mon Aug 23 11:18:39 2010 -0500
@@ -335,7 +335,7 @@
 
 
 bool
-ElfObject::loadSomeSymbols(SymbolTable *symtab, int binding)
+ElfObject::loadSomeSymbols(SymbolTable *symtab, int binding, Addr mask)
 {
     Elf *elf;
     int sec_idx = 1; // there is a 0 but it is nothing, go figure
@@ -375,7 +375,7 @@
             for (ii = 0; ii < count; ++ii) {
                 gelf_getsym(data, ii, &sym);
                 if (GELF_ST_BIND(sym.st_info) == binding) {
-                   symtab->insert(sym.st_value,
+                   symtab->insert(sym.st_value & mask,
                                   elf_strptr(elf, shdr.sh_link, sym.st_name));
                 }
             }
@@ -392,13 +392,13 @@
 bool
 ElfObject::loadGlobalSymbols(SymbolTable *symtab, Addr addrMask)
 {
-    return loadSomeSymbols(symtab, STB_GLOBAL);
+    return loadSomeSymbols(symtab, STB_GLOBAL, addrMask);
 }
 
 bool
 ElfObject::loadLocalSymbols(SymbolTable *symtab, Addr addrMask)
 {
-    return loadSomeSymbols(symtab, STB_LOCAL);
+    return loadSomeSymbols(symtab, STB_LOCAL, addrMask);
 }
 
 bool
diff -r 6f77f379a594 -r 692cdb71febd src/base/loader/elf_object.hh
--- a/src/base/loader/elf_object.hh     Mon Aug 23 11:18:39 2010 -0500
+++ b/src/base/loader/elf_object.hh     Mon Aug 23 11:18:39 2010 -0500
@@ -50,7 +50,7 @@
     std::set<std::string> sectionNames;
 
     /// Helper functions for loadGlobalSymbols() and loadLocalSymbols().
-    bool loadSomeSymbols(SymbolTable *symtab, int binding);
+    bool loadSomeSymbols(SymbolTable *symtab, int binding, Addr mask);
 
     ElfObject(const std::string &_filename, int _fd,
               size_t _len, uint8_t *_data,
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to