[gem5-dev] Change in gem5/gem5[develop]: base: Add byte order attribute for object files

2021-06-30 Thread Boris Shingarov (Gerrit) via gem5-dev
Boris Shingarov has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/40939 )


Change subject: base: Add byte order attribute for object files
..

base: Add byte order attribute for object files

This adds byte order as an attribute for object files by
introducing new members to the ObjectFile class. This is
populated by the looking at the ELF headers.

Change-Id: Ibe55699175cc0295e0c9d49bdbe02e580988bc4f
Signed-off-by: Sandipan Das 
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/40939
Reviewed-by: Daniel Carvalho 
Maintainer: Daniel Carvalho 
Tested-by: kokoro 
---
M src/base/loader/elf_object.cc
M src/base/loader/elf_object.hh
M src/base/loader/object_file.hh
3 files changed, 14 insertions(+), 0 deletions(-)

Approvals:
  Daniel Carvalho: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/base/loader/elf_object.cc b/src/base/loader/elf_object.cc
index 489a4c0..e7fba63 100644
--- a/src/base/loader/elf_object.cc
+++ b/src/base/loader/elf_object.cc
@@ -114,6 +114,7 @@

 determineArch();
 determineOpSys();
+determineByteOrder();

 entry = ehdr.e_entry;
 _programHeaderCount = ehdr.e_phnum;
@@ -326,6 +327,15 @@
 }

 void
+ElfObject::determineByteOrder()
+{
+auto edata = ehdr.e_ident[EI_DATA];
+if (edata == ELFDATANONE)
+panic("invalid ELF data encoding");
+byteOrder = (edata == ELFDATA2MSB) ? ByteOrder::big :  
ByteOrder::little;

+}
+
+void
 ElfObject::handleLoadableSegment(GElf_Phdr phdr, int seg_num)
 {
 auto name = std::to_string(seg_num);
diff --git a/src/base/loader/elf_object.hh b/src/base/loader/elf_object.hh
index 797ff1f..7e7b739 100644
--- a/src/base/loader/elf_object.hh
+++ b/src/base/loader/elf_object.hh
@@ -66,6 +66,7 @@

 void determineArch();
 void determineOpSys();
+void determineByteOrder();
 void handleLoadableSegment(GElf_Phdr phdr, int seg_num);

 // These values are provided to a linux process by the kernel, so we
diff --git a/src/base/loader/object_file.hh b/src/base/loader/object_file.hh
index 443dfb9..5e767de 100644
--- a/src/base/loader/object_file.hh
+++ b/src/base/loader/object_file.hh
@@ -38,6 +38,7 @@
 #include "base/loader/symtab.hh"
 #include "base/logging.hh"
 #include "base/types.hh"
+#include "enums/ByteOrder.hh"

 GEM5_DEPRECATED_NAMESPACE(Loader, loader);
 namespace loader
@@ -80,6 +81,7 @@
   protected:
 Arch arch = UnknownArch;
 OpSys opSys = UnknownOpSys;
+ByteOrder byteOrder = ByteOrder::little;

 SymbolTable _symtab;

@@ -106,6 +108,7 @@

 Arch  getArch()  const { return arch; }
 OpSys getOpSys() const { return opSys; }
+ByteOrder getByteOrder() const { return byteOrder; }

 const SymbolTable () const { return _symtab; }


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/40939
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Ibe55699175cc0295e0c9d49bdbe02e580988bc4f
Gerrit-Change-Number: 40939
Gerrit-PatchSet: 10
Gerrit-Owner: Sandipan Das 
Gerrit-Reviewer: Bobby R. Bruce 
Gerrit-Reviewer: Boris Shingarov 
Gerrit-Reviewer: Daniel Carvalho 
Gerrit-Reviewer: kokoro 
Gerrit-CC: Gabe Black 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: base: Add byte order attribute for object files

2021-02-07 Thread Sandipan Das (Gerrit) via gem5-dev
Sandipan Das has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/40939 )



Change subject: base: Add byte order attribute for object files
..

base: Add byte order attribute for object files

This adds byte order as an attribute for object files by
introducing new members to the ObjectFile class. This is
populated by the looking at the ELF headers.

Change-Id: Ibe55699175cc0295e0c9d49bdbe02e580988bc4f
Signed-off-by: Sandipan Das 
---
M src/base/loader/elf_object.cc
M src/base/loader/elf_object.hh
M src/base/loader/object_file.hh
3 files changed, 14 insertions(+), 0 deletions(-)



diff --git a/src/base/loader/elf_object.cc b/src/base/loader/elf_object.cc
index bdcc92b..4198875 100644
--- a/src/base/loader/elf_object.cc
+++ b/src/base/loader/elf_object.cc
@@ -112,6 +112,7 @@

 determineArch();
 determineOpSys();
+determineByteOrder();

 entry = ehdr.e_entry;
 _programHeaderCount = ehdr.e_phnum;
@@ -324,6 +325,15 @@
 }

 void
+ElfObject::determineByteOrder()
+{
+auto edata = ehdr.e_ident[EI_DATA];
+if (edata == ELFDATANONE)
+panic("invalid ELF data encoding");
+byteOrder = (edata == ELFDATA2MSB) ? ByteOrder::big :  
ByteOrder::little;

+}
+
+void
 ElfObject::handleLoadableSegment(GElf_Phdr phdr, int seg_num)
 {
 auto name = std::to_string(seg_num);
diff --git a/src/base/loader/elf_object.hh b/src/base/loader/elf_object.hh
index c262912..24d0c0c 100644
--- a/src/base/loader/elf_object.hh
+++ b/src/base/loader/elf_object.hh
@@ -64,6 +64,7 @@

 void determineArch();
 void determineOpSys();
+void determineByteOrder();
 void handleLoadableSegment(GElf_Phdr phdr, int seg_num);

 // These values are provided to a linux process by the kernel, so we
diff --git a/src/base/loader/object_file.hh b/src/base/loader/object_file.hh
index 0bfd918..7d542a9 100644
--- a/src/base/loader/object_file.hh
+++ b/src/base/loader/object_file.hh
@@ -37,6 +37,7 @@
 #include "base/loader/symtab.hh"
 #include "base/logging.hh"
 #include "base/types.hh"
+#include "enums/ByteOrder.hh"

 namespace Loader
 {
@@ -76,6 +77,7 @@
   protected:
 Arch arch = UnknownArch;
 OpSys opSys = UnknownOpSys;
+ByteOrder byteOrder = ByteOrder::little;

 SymbolTable _symtab;

@@ -102,6 +104,7 @@

 Arch  getArch()  const { return arch; }
 OpSys getOpSys() const { return opSys; }
+ByteOrder getByteOrder() const { return byteOrder; }

 const SymbolTable () const { return _symtab; }


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/40939
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Ibe55699175cc0295e0c9d49bdbe02e580988bc4f
Gerrit-Change-Number: 40939
Gerrit-PatchSet: 1
Gerrit-Owner: Sandipan Das 
Gerrit-MessageType: newchange
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s