##// END OF EJS Templates
ElfFile classes WIP.
jeandet -
r37:b04e90691097 default
parent child
Show More
@@ -1,6 +1,11
1 #include <QObject>
2 #include <QWidget>
1 3 #include "qhexspinbox.h"
2 4 #include "memsizewdgt.h"
3 5 #include "qhexedit/qhexedit.h"
4 6 #include "SocExplorerPlot.h"
5 7 #include "tcp_terminal_client.h"
6 8 #include "elf/elfparser.h"
9 #include "elf/abstractexecfile.h"
10 #include "elf/elffile.h"
11 #include "elf/elffilewidget.h"
@@ -21,12 +21,11
21 21 ----------------------------------------------------------------------------*/
22 22 #include "abstractexecfile.h"
23 23
24 abstractExecFile::abstractExecFile(QObject *parent) :
25 QObject(parent)
24 abstractExecFile::abstractExecFile()
26 25 {
27 26 }
28 27
29 abstractExecFile::abstractExecFile(const QString &File, QObject *parent)
28 abstractExecFile::abstractExecFile(const QString &File)
30 29 {
31 30
32 31 }
@@ -33,19 +33,15 public:
33 33 quint32 address;
34 34 };
35 35
36 class abstractExecFile : public QObject
36 class abstractExecFile
37 37 {
38 Q_OBJECT
39 38 public:
40 abstractExecFile(QObject *parent = 0);
41 abstractExecFile(const QString& File,QObject *parent = 0);
39 abstractExecFile();
40 abstractExecFile(const QString& File);
42 41 virtual bool openFile(const QString& File)=0;
43 42 virtual bool isopened()=0;
44 43 virtual int closeFile()=0;
45 44 virtual QList<codeFragment> getFragments()=0;
46 signals:
47
48 public slots:
49 45
50 46 protected:
51 47 QString p_fileName;
@@ -38,6 +38,7 header.files = \
38 38 elf/elfinfowdgt.h \
39 39 elf/elfparser.h \
40 40 elf/elffile.h \
41 elf/elffilewidget.h \
41 42 qipdialogbox.h \
42 43 lppserial/src/RS232.h
43 44
@@ -23,13 +23,13
23 23 ----------------------------------------------------------------------------*/
24 24 #include "elffile.h"
25 25
26 ElfFile::ElfFile(QObject *parent) :
27 abstractExecFile(parent)
26 ElfFile::ElfFile(QObject *parent)
27 :QObject(parent),abstractExecFile(),elfparser()
28 28 {
29 29 }
30 30
31 31 ElfFile::ElfFile(const QString &File, QObject *parent)
32 :abstractExecFile(parent),elfparser()
32 :QObject(parent),abstractExecFile(),elfparser()
33 33 {
34 34 this->p_fileName = File;
35 35 setFilename(File);
@@ -27,7 +27,7
27 27 #ifndef ELFFILE_H
28 28 #define ELFFILE_H
29 29
30 class ElfFile : public abstractExecFile, public elfparser
30 class ElfFile :public QObject, public abstractExecFile, public elfparser
31 31 {
32 32 Q_OBJECT
33 33 public:
@@ -22,5 +22,23 void elfFileWidget::updateElfFile(ElfFil
22 22 this->ui->VersionLabel->setText(QString::number(p_elf->getVersion()));
23 23 this->ui->machineLabel->setText(p_elf->getArchitecture());
24 24 this->ui->endiannesLabel->setText(p_elf->getEndianness());
25 this->ui->abiLabel->setText(p_elf->getABI());
26 this->ui->entryPointLabel->setText("0x"+QString::number(p_elf->getEntryPointAddress(),16,8));
27 this->ui->sectionCountLabel->setText(QString::number(p_elf->getSectioncount()));
25 28 }
26 29 }
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
@@ -395,6 +395,30 QString elfparser::getEndianness()
395 395 return "none";
396 396 }
397 397
398 QString elfparser::getABI()
399 {
400 if(this->e!=NULL)
401 {
402 if(this->ehdr.e_ident[EI_OSABI]==ELFOSABI_NONE)return "UNIX System V ABI";
403 if(this->ehdr.e_ident[EI_OSABI]==ELFOSABI_SYSV)return "Alias";
404 if(this->ehdr.e_ident[EI_OSABI]==ELFOSABI_HPUX)return "HP-UX";
405 if(this->ehdr.e_ident[EI_OSABI]==ELFOSABI_NETBSD)return "NetBSD";
406 if(this->ehdr.e_ident[EI_OSABI]==ELFOSABI_GNU)return "Object uses GNU ELF extensions";
407 if(this->ehdr.e_ident[EI_OSABI]==ELFOSABI_LINUX)return "Compatibility alias";
408 if(this->ehdr.e_ident[EI_OSABI]==ELFOSABI_SOLARIS)return "Sun Solaris";
409 if(this->ehdr.e_ident[EI_OSABI]==ELFOSABI_AIX)return "IBM AIX";
410 if(this->ehdr.e_ident[EI_OSABI]==ELFOSABI_IRIX)return "SGI Irix";
411 if(this->ehdr.e_ident[EI_OSABI]==ELFOSABI_FREEBSD)return "FreeBSD";
412 if(this->ehdr.e_ident[EI_OSABI]==ELFOSABI_TRU64)return "Compaq TRU64 UNIX";
413 if(this->ehdr.e_ident[EI_OSABI]==ELFOSABI_MODESTO)return " Novell Modesto";
414 if(this->ehdr.e_ident[EI_OSABI]==ELFOSABI_OPENBSD)return "OpenBSD";
415 if(this->ehdr.e_ident[EI_OSABI]==ELFOSABI_ARM_AEABI)return "ARM EABI";
416 if(this->ehdr.e_ident[EI_OSABI]==ELFOSABI_ARM)return "ARM";
417 if(this->ehdr.e_ident[EI_OSABI]==ELFOSABI_STANDALONE)return "Standalone (embedded) application";
418 }
419 return "none";
420 }
421
398 422
399 423 int32_t elfparser::getVersion()
400 424 {
@@ -404,6 +428,14 int32_t elfparser::getVersion()
404 428 }
405 429 }
406 430
431 int64_t elfparser::getEntryPointAddress()
432 {
433 if(this->e!=NULL)
434 {
435 return this->ehdr.e_entry;
436 }
437 }
438
407 439
408 440 int elfparser::getSectioncount()
409 441 {
@@ -53,7 +53,9 public:
53 53 QString getArchitecture();
54 54 QString getType();
55 55 QString getEndianness();
56 QString getABI();
56 57 int32_t getVersion();
58 int64_t getEntryPointAddress();
57 59 int getSectioncount();
58 60 int getSegmentcount();
59 61 QString getSegmentType(int index);
@@ -3,6 +3,32
3 3 #include <PythonQtMethodInfo.h>
4 4 #include <PythonQtSignalReceiver.h>
5 5 #include <QVariant>
6 #include <elffile.h>
7
8 ElfFile* PythonQtWrapper_ElfFile::new_ElfFile(QObject* parent)
9 {
10 return new ElfFile(parent); }
11
12 ElfFile* PythonQtWrapper_ElfFile::new_ElfFile(const QString& File, QObject* parent)
13 {
14 return new ElfFile(File, parent); }
15
16 int PythonQtWrapper_ElfFile::closeFile(ElfFile* theWrappedObject)
17 {
18 return ( theWrappedObject->closeFile());
19 }
20
21 bool PythonQtWrapper_ElfFile::isopened(ElfFile* theWrappedObject)
22 {
23 return ( theWrappedObject->isopened());
24 }
25
26 bool PythonQtWrapper_ElfFile::openFile(ElfFile* theWrappedObject, const QString& File)
27 {
28 return ( theWrappedObject->openFile(File));
29 }
30
31
6 32
7 33 MemSizeWdgt* PythonQtWrapper_MemSizeWdgt::new_MemSizeWdgt(QWidget* parent)
8 34 {
@@ -447,6 +473,12 QString PythonQtWrapper_XByteArray::toR
447 473
448 474
449 475
476 elfFileWidget* PythonQtWrapper_elfFileWidget::new_elfFileWidget(QWidget* parent)
477 {
478 return new elfFileWidget(parent); }
479
480
481
450 482 elfparser* PythonQtWrapper_elfparser::new_elfparser()
451 483 {
452 484 return new elfparser(); }
@@ -456,11 +488,26 int PythonQtWrapper_elfparser::closeFil
456 488 return ( theWrappedObject->closeFile());
457 489 }
458 490
491 QString PythonQtWrapper_elfparser::getABI(elfparser* theWrappedObject)
492 {
493 return ( theWrappedObject->getABI());
494 }
495
459 496 QString PythonQtWrapper_elfparser::getArchitecture(elfparser* theWrappedObject)
460 497 {
461 498 return ( theWrappedObject->getArchitecture());
462 499 }
463 500
501 QString PythonQtWrapper_elfparser::getClass(elfparser* theWrappedObject)
502 {
503 return ( theWrappedObject->getClass());
504 }
505
506 QString PythonQtWrapper_elfparser::getEndianness(elfparser* theWrappedObject)
507 {
508 return ( theWrappedObject->getEndianness());
509 }
510
464 511 bool PythonQtWrapper_elfparser::getSectionData(elfparser* theWrappedObject, int index, char** buffer)
465 512 {
466 513 return ( theWrappedObject->getSectionData(index, buffer));
@@ -2,6 +2,8
2 2 #include <QObject>
3 3 #include <QVariant>
4 4 #include <SocExplorerPlot.h>
5 #include <elffile.h>
6 #include <elffilewidget.h>
5 7 #include <elfparser.h>
6 8 #include <memsizewdgt.h>
7 9 #include <qhexedit.h>
@@ -11,6 +13,22
11 13
12 14
13 15
16 class PythonQtWrapper_ElfFile : public QObject
17 { Q_OBJECT
18 public:
19 public slots:
20 ElfFile* new_ElfFile(QObject* parent = 0);
21 ElfFile* new_ElfFile(const QString& File, QObject* parent = 0);
22 void delete_ElfFile(ElfFile* obj) { delete obj; }
23 int closeFile(ElfFile* theWrappedObject);
24 bool isopened(ElfFile* theWrappedObject);
25 bool openFile(ElfFile* theWrappedObject, const QString& File);
26 };
27
28
29
30
31
14 32 class PythonQtWrapper_MemSizeWdgt : public QObject
15 33 { Q_OBJECT
16 34 public:
@@ -185,6 +203,18 void delete_XByteArray(XByteArray* obj)
185 203
186 204
187 205
206 class PythonQtWrapper_elfFileWidget : public QObject
207 { Q_OBJECT
208 public:
209 public slots:
210 elfFileWidget* new_elfFileWidget(QWidget* parent = 0);
211 void delete_elfFileWidget(elfFileWidget* obj) { delete obj; }
212 };
213
214
215
216
217
188 218 class PythonQtWrapper_elfparser : public QObject
189 219 { Q_OBJECT
190 220 public:
@@ -192,7 +222,10 public slots:
192 222 elfparser* new_elfparser();
193 223 void delete_elfparser(elfparser* obj) { delete obj; }
194 224 int closeFile(elfparser* theWrappedObject);
225 QString getABI(elfparser* theWrappedObject);
195 226 QString getArchitecture(elfparser* theWrappedObject);
227 QString getClass(elfparser* theWrappedObject);
228 QString getEndianness(elfparser* theWrappedObject);
196 229 bool getSectionData(elfparser* theWrappedObject, int index, char** buffer);
197 230 QString getSectionName(elfparser* theWrappedObject, int index);
198 231 QString getSectionType(elfparser* theWrappedObject, int index);
@@ -3,12 +3,14
3 3
4 4
5 5 void PythonQt_init_PySocExplorer(PyObject* module) {
6 PythonQt::priv()->registerClass(&ElfFile::staticMetaObject, "PySocExplorer", PythonQtCreateObject<PythonQtWrapper_ElfFile>, NULL, module, 0);
6 7 PythonQt::priv()->registerCPPClass("MemSizeWdgt", "", "PySocExplorer", PythonQtCreateObject<PythonQtWrapper_MemSizeWdgt>, NULL, module, 0);
7 8 PythonQt::priv()->registerCPPClass("QHexEdit", "", "PySocExplorer", PythonQtCreateObject<PythonQtWrapper_QHexEdit>, PythonQtSetInstanceWrapperOnShell<PythonQtShell_QHexEdit>, module, 0);
8 9 PythonQt::priv()->registerCPPClass("QHexSpinBox", "", "PySocExplorer", PythonQtCreateObject<PythonQtWrapper_QHexSpinBox>, NULL, module, 0);
9 10 PythonQt::priv()->registerCPPClass("SocExplorerPlot", "", "PySocExplorer", PythonQtCreateObject<PythonQtWrapper_SocExplorerPlot>, PythonQtSetInstanceWrapperOnShell<PythonQtShell_SocExplorerPlot>, module, 0);
10 11 PythonQt::priv()->registerClass(&TCP_Terminal_Client::staticMetaObject, "PySocExplorer", PythonQtCreateObject<PythonQtWrapper_TCP_Terminal_Client>, NULL, module, 0);
11 12 PythonQt::priv()->registerCPPClass("XByteArray", "", "PySocExplorer", PythonQtCreateObject<PythonQtWrapper_XByteArray>, NULL, module, 0);
13 PythonQt::priv()->registerCPPClass("elfFileWidget", "", "PySocExplorer", PythonQtCreateObject<PythonQtWrapper_elfFileWidget>, NULL, module, 0);
12 14 PythonQt::priv()->registerCPPClass("elfparser", "", "PySocExplorer", PythonQtCreateObject<PythonQtWrapper_elfparser>, NULL, module, 0);
13 15
14 16 }
@@ -1,6 +1,6
1 1 <typesystem package="PySocExplorer" default-superclass="com.trolltech.qt.QtJambiObject">
2 <load-typesystem name=":/trolltech/generator/typesystem_core.txt" generate="no" />
3 <load-typesystem name=":/trolltech/generator/typesystem_gui.txt" generate="no" />
2 <load-typesystem name=":/trolltech/generator/typesystem_core.txt" generate="yes" />
3 <load-typesystem name=":/trolltech/generator/typesystem_gui.txt" generate="yes" />
4 4 <load-typesystem name=":/trolltech/generator/typesystem_sql.txt" generate="no" />
5 5 <load-typesystem name=":/trolltech/generator/typesystem_opengl.txt" generate="no" />
6 6 <load-typesystem name=":/trolltech/generator/typesystem_svg.txt" generate="no" />
@@ -10,6 +10,7
10 10 <load-typesystem name=":/trolltech/generator/typesystem_webkit.txt" generate="no" />
11 11 <load-typesystem name=":/trolltech/generator/typesystem_phonon.txt" generate="no" />
12 12
13 <rejection class="abstractExecFile" />
13 14
14 15 <object-type name="QHexSpinBox" />
15 16 <object-type name="MemSizeWdgt" />
@@ -17,7 +18,10
17 18 <object-type name="XByteArray" />
18 19 <object-type name="SocExplorerPlot" />
19 20 <object-type name="TCP_Terminal_Client" />
20 <object-type name="elfparser" />
21 <object-type name="elfparser" />
22 <object-type name="abstractExecFile" />
23 <object-type name="ElfFile" />
24 <object-type name="elfFileWidget" />
21 25
22 26 </typesystem>
23 27
@@ -3,4 +3,4
3 3 #export QTDIR=/usr/include
4 4 export QTDIR=/usr/include/qt5
5 5
6 pythonqt_generator --output-directory=pythonQtOut PySocExplorer.h pythonQtgeneratorCfg.txt
6 pythonqt_generator --dump-object-tree --output-directory=pythonQtOut PySocExplorer.h pythonQtgeneratorCfg.txt
General Comments 0
You need to be logged in to leave comments. Login now