##// END OF EJS Templates
SREC File parser working....
SREC File parser working. SREC Viewer working. Added toSREC function in elfFile class. codeFragment to SREC converter also working. All these objects also have Python bindings.

File last commit:

r45:c6b44a3b51fa default
r45:c6b44a3b51fa default
Show More
elffile.h
134 lines | 3.8 KiB | text/x-c | CLexer
Jeandet Alexis
First init of SocExplorer Repository.
r0 /*------------------------------------------------------------------------------
-- This file is a part of the SocExplorer Software
Jeandet Alexis
Updated lab name!
r13 -- Copyright (C) 2014, Plasma Physics Laboratory - CNRS
Jeandet Alexis
First init of SocExplorer Repository.
r0 --
-- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 2 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program; if not, write to the Free Software
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-------------------------------------------------------------------------------*/
/*-- Author : Alexis Jeandet
-- Mail : alexis.jeandet@member.fsf.org
----------------------------------------------------------------------------*/
Jeandet Alexis
SREC File parser working....
r45 #include <abstractbinfile.h>
Jeandet Alexis
Some Python wrapping improvment.
r39 #include <QtCore/QObject>
#include <QtCore/QStringList>
#include <libelf.h>
#include <gelf.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
Jeandet Alexis
First init of SocExplorer Repository.
r0 #ifndef ELFFILE_H
#define ELFFILE_H
Jeandet Alexis
Some Python wrapping improvment.
r39 class Elf_Section
Jeandet Alexis
First init of SocExplorer Repository.
r0 {
public:
Jeandet Alexis
Some Python wrapping improvment.
r39 Elf_Section(){}
Elf_Section(Elf_Data* data,GElf_Shdr* section_header)
{
this->data = data;
this->section_header = section_header;
}
Jeandet Alexis
Elf Symbol enumeration WIP.
r41 ~Elf_Section()
{
free(section_header);
}
Jeandet Alexis
Some Python wrapping improvment.
r39 Elf_Data* data;
GElf_Shdr* section_header;
};
Jeandet Alexis
Elf Symbol enumeration WIP.
r41 class Elf_Symbol
{
public:
Elf_Symbol(){}
Elf_Symbol(const QString& name,GElf_Sym* sym):name(name),sym(sym){}
~Elf_Symbol(){free(sym);}
QString name;
GElf_Sym* sym;
};
Jeandet Alexis
SREC File parser working....
r45 class ElfFile : public abstractBinFile
Jeandet Alexis
Some Python wrapping improvment.
r39 {
Q_OBJECT
public:
ElfFile();
ElfFile(const QString& File);
Jeandet Alexis
Elf viewer almost completed.
r43 ~ElfFile();
ElfFile classes WIP.
r35 bool openFile(const QString& File);
bool isopened();
int closeFile();
Jeandet Alexis
Some Python wrapping improvment.
r39 QList<codeFragment*> getFragments();
QList<codeFragment*> getFragments(QStringList fragmentList);
Jeandet Alexis
ElfFile classes WIP.
r36
Jeandet Alexis
Some Python wrapping improvment.
r39 QString getClass();
QString getArchitecture();
QString getType();
QString getEndianness();
QString getABI();
qint64 getVersion();
qint64 getEntryPointAddress();
Elf Symbol enumeration working, elf update buggy!
r42
ElfFile classes WIP....
r40 int getSectionCount();
int getSymbolCount();
int getSegmentCount();
Elf Symbol enumeration working, elf update buggy!
r42
Jeandet Alexis
Some Python wrapping improvment.
r39 QString getSegmentType(int index);
qint64 getSegmentOffset(int index);
qint64 getSegmentVaddr(int index);
qint64 getSegmentPaddr(int index);
qint64 getSegmentFilesz(int index);
qint64 getSectionDatasz(int index);
Elf Symbol enumeration working, elf update buggy!
r42 qint64 getSegmentMemsz(int index);
QString getSegmentFlags(int index);
Jeandet Alexis
Some Python wrapping improvment.
r39 bool getSectionData(int index, char **buffer);
Elf Symbol enumeration working, elf update buggy!
r42 qint64 getSectionPaddr(int index);
Jeandet Alexis
Some Python wrapping improvment.
r39 qint64 getSectionMemsz(int index);
QString getSectionName(int index);
QString getSectionType(int index);
Jeandet Alexis
Elf viewer almost completed.
r43 int getSectionIndex(QString name);
Elf Symbol enumeration working, elf update buggy!
r42
QString getSymbolName(int index);
QString getSymbolType(int index);
quint64 getSymbolSize(int index);
QString getSymbolSectionName(int index);
int getSymbolSectionIndex(int index);
quint64 getSymbolAddress(int index);
QString getSymbolLinkType(int index);
Jeandet Alexis
Some Python wrapping improvment.
r39 bool iself();
static bool isElf(const QString& File);
Jeandet Alexis
First init of SocExplorer Repository.
r0
Jeandet Alexis
SREC File parser working....
r45 bool toSrec(const QString& File);
ElfFile classes WIP.
r35 private:
Jeandet Alexis
Some Python wrapping improvment.
r39 codeFragment* getFragment(const QString& name);
void updateSections();
void updateSegments();
ElfFile classes WIP....
r40 void updateSymbols();
Jeandet Alexis
Some Python wrapping improvment.
r39 int elfFile;
bool opened;
bool type_elf;
Elf* e;
Elf_Kind ek;
GElf_Ehdr ehdr;
Elf_Scn * scn;
Elf_Data * data;
ElfFile classes WIP....
r40 size_t SymbolCount,SectionCount,SegmentCount, shstrndx;
Jeandet Alexis
Some Python wrapping improvment.
r39 QList<GElf_Phdr*> Segments;
QList<Elf_Section*> sections;
Jeandet Alexis
Elf Symbol enumeration WIP.
r41 QList<Elf_Symbol*> symbols;
Jeandet Alexis
First init of SocExplorer Repository.
r0
};
#endif // ELFFILE_H