diff --git a/BinFile/binaryfile.cpp b/BinFile/binaryfile.cpp --- a/BinFile/binaryfile.cpp +++ b/BinFile/binaryfile.cpp @@ -24,16 +24,19 @@ binaryFile::binaryFile() { + litleendian = false; } binaryFile::binaryFile(const QString &File) { openFile(File); + litleendian = false; } binaryFile::binaryFile(const QStringList &Files) { openFiles(Files); + litleendian = false; } binaryFile::~binaryFile() diff --git a/abstractbinfile.h b/abstractbinfile.h --- a/abstractbinfile.h +++ b/abstractbinfile.h @@ -54,6 +54,8 @@ public: virtual QList getFragments()=0; virtual bool toSrec(const QString& File)=0; virtual bool toBinary(const QString& File)=0; + + bool litleendian; protected: QString p_fileName; }; diff --git a/elf/elffile.cpp b/elf/elffile.cpp --- a/elf/elffile.cpp +++ b/elf/elffile.cpp @@ -90,6 +90,7 @@ bool ElfFile::openFile(const QString &Fi this->updateSections(); this->updateSymbols(); this->opened = true; + litleendian = isLitleEndian(); return 1; } @@ -487,6 +488,26 @@ QString ElfFile::getEndianness() return "none"; } +bool ElfFile::isLitleEndian() +{ + if(this->e!=NULL) + { + if(this->ehdr.e_ident[EI_DATA]==ELFDATA2LSB)return true; + if(this->ehdr.e_ident[EI_DATA]==ELFDATA2MSB)return false; + } + return false; +} + +bool ElfFile::isBigEndian() +{ + if(this->e!=NULL) + { + if(this->ehdr.e_ident[EI_DATA]==ELFDATA2LSB)return false; + if(this->ehdr.e_ident[EI_DATA]==ELFDATA2MSB)return true; + } + return false; +} + QString ElfFile::getABI() { if(this->e!=NULL) diff --git a/elf/elffile.h b/elf/elffile.h --- a/elf/elffile.h +++ b/elf/elffile.h @@ -75,6 +75,8 @@ public: QString getArchitecture(); QString getType(); QString getEndianness(); + bool isLitleEndian(); + bool isBigEndian(); QString getABI(); qint64 getVersion(); qint64 getEntryPointAddress(); diff --git a/srec/srecfile.cpp b/srec/srecfile.cpp --- a/srec/srecfile.cpp +++ b/srec/srecfile.cpp @@ -26,18 +26,21 @@ srecFile::srecFile() { p_mergingRecords = true; + litleendian = false; } srecFile::srecFile(const QString &File) { p_mergingRecords = true; openFile(File); + litleendian = false; } srecFile::srecFile(const QStringList &Files) { p_mergingRecords = true; openFiles(Files); + litleendian = false; } srecFile::~srecFile()