diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2007-09-13 16:36:25 -0700 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2007-09-13 16:36:25 -0700 |
commit | 4a4aa59632c918ad9e2941fb79fa05540d2b52af (patch) | |
tree | d3e5c80c0c73ad158183ea607010809f8e2b709e /src/base/loader/elf_object.hh | |
parent | bbc8a40857d47348753c59b91a93dd312fa1b809 (diff) | |
parent | e282d9601cb515f59eeb1701ec990f0985001ba9 (diff) | |
download | gem5-4a4aa59632c918ad9e2941fb79fa05540d2b52af.tar.xz |
Merge with head.
--HG--
extra : convert_revision : 22aafb1cead3f584e64c188dc8eb45e271f4e7e9
Diffstat (limited to 'src/base/loader/elf_object.hh')
-rw-r--r-- | src/base/loader/elf_object.hh | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/base/loader/elf_object.hh b/src/base/loader/elf_object.hh index d909140f3..3e7c85874 100644 --- a/src/base/loader/elf_object.hh +++ b/src/base/loader/elf_object.hh @@ -32,6 +32,7 @@ #define __ELF_OBJECT_HH__ #include "base/loader/object_file.hh" +#include <set> class ElfObject : public ObjectFile { @@ -42,6 +43,7 @@ class ElfObject : public ObjectFile Addr _programHeaderTable; uint16_t _programHeaderSize; uint16_t _programHeaderCount; + std::set<std::string> sectionNames; /// Helper functions for loadGlobalSymbols() and loadLocalSymbols(). bool loadSomeSymbols(SymbolTable *symtab, int binding); @@ -50,6 +52,9 @@ class ElfObject : public ObjectFile size_t _len, uint8_t *_data, Arch _arch, OpSys _opSys); + void getSections(); + bool sectionExists(std::string sec); + public: virtual ~ElfObject() {} @@ -58,7 +63,8 @@ class ElfObject : public ObjectFile virtual bool loadLocalSymbols(SymbolTable *symtab, Addr addrMask = std::numeric_limits<Addr>::max()); - virtual bool isDynamic(); + virtual bool isDynamic() { return sectionExists(".interp"); } + virtual bool hasTLS() { return sectionExists(".tbss"); } static ObjectFile *tryFile(const std::string &fname, int fd, size_t len, uint8_t *data); |