Christoph Egger [Tue, 10 Mar 2015 15:34:32 +0000 (16:34 +0100)]
Correctly handle function rename
The GUI now handles function rename events also for the list of
functions. One can now rename a function via scripting or in the loader
or in any other way and it will be properly renamed.
Christoph Egger [Tue, 10 Mar 2015 11:34:36 +0000 (12:34 +0100)]
Finish current function before starting next one
When BasicBlocks appear in multiple functions, we ran into the situation
where a unfinished basicblock is included in a different function and
causing bad loops as it's end address wasn't set yet
Christoph Egger [Wed, 4 Mar 2015 14:12:46 +0000 (15:12 +0100)]
Change from QListWidget to QTreeWidget
This way we can group functions on the left plane. Allows to group and
hide some groups of items. As a first take, group the external
functions. This also places them at the top where they stay together.
Christoph Egger [Tue, 3 Mar 2015 13:10:31 +0000 (14:10 +0100)]
Fix Loading of symbolless files
The last commit unconditionally enabled disassembling from the start of
the text section. On a sample binary (/bin/true) this resulted in a
BasicBlock with a size of several TiB which won't terminate properly.
Christoph Egger [Tue, 24 Feb 2015 22:19:13 +0000 (23:19 +0100)]
Reoganize Function/BasicBlock creation
More control in the hand of the information manager. Mid-Term goal is
to support loading of files so the Disassembler shouldn't have
separate storage of all BasicBlocks and Functions that we would have
to also populate upon loading saves
Christoph Egger [Fri, 20 Feb 2015 16:38:04 +0000 (17:38 +0100)]
Remodel CustomQGraphicsTextItem being friend of BasicBlockWidget
The CustomQGraphicsTextItem is just an implementation detail of
BasicBlockWidget and can use its private members (mostly the logger and
mainwindow members)
Christoph Egger [Fri, 20 Feb 2015 16:34:23 +0000 (17:34 +0100)]
Pass the InformationManager inside the BasicBlock and Function classes
All models should know the InformationManager so we can forward changes
to any kind of information to the manager, who then is responsible to
update all stakeholders of this information
Christoph Egger [Fri, 20 Feb 2015 16:06:32 +0000 (17:06 +0100)]
Make InformationManager responsible for cleaning Blocks / Functions
As BasicBlocks and Functions are now considered part of the core, the
InformationManager should be responsible for cleaning them up
afterwards. Maybe it should generate them as well -- we will see.
Christoph Egger [Fri, 20 Feb 2015 16:03:45 +0000 (17:03 +0100)]
Move Function/BasicBlock to core and clean up includes
Function and BasicBlock are considered part od the Data Model and part
of the core. Move them there.
Also remove lots of #include from the headers and replace them by
forward declarations. This should make compilation units smaller and
remove the huge number of users for each header -- speeding up
compilation and making users explicitely include stuff they use.
Christoph Egger [Thu, 19 Feb 2015 15:51:41 +0000 (16:51 +0100)]
Add basic save support (Infrastructure)
This is some start on save infrastructure. To complete save/load we now
need to add all relevant information to the save() function and the
implement load(). Also fileformat is not really setteled by now.
Christoph Egger [Tue, 17 Feb 2015 13:25:47 +0000 (14:25 +0100)]
Switch again BasicBlockWidget base -- to QGraphicsTextItem
That one seems to be the final word here -- we'll see. Anyway it has
proper TextDocument / TextCursor support, can render HTML and is a
GraphicsItem so no playing to get scrollbars away -- it doesn't have
any.
Christoph Egger [Thu, 29 Jan 2015 22:08:56 +0000 (23:08 +0100)]
Make link to local functions clickable
call instructions now have a clickable target address that gets you to
the corresponding function iff this function is local to the object.
It still does just nothing on functions that are linked in from shared
objects or functionsthat were not created (shouldn't happen right now)
This also adds yet another map to the MainWindow with key/value pairs
that are not quite semantically nice but made implementation easy. We
need to think about how which objects are referenced from ithin the
mainwindow some tim in the future.
Christoph Egger [Thu, 22 Jan 2015 18:54:23 +0000 (19:54 +0100)]
Properly implement plane selection
Does no longer rely on proper indexes (corresponding index in the listWidget and
in the stackedWidget) but actually remebers which plane belongs to which
list entry
Christoph Egger [Wed, 21 Jan 2015 12:17:12 +0000 (13:17 +0100)]
Create ObjectFile only once and store it with full type
ObjectFiles was created twice, once to check the type it has and then
again to store and use it in the disassembler. We now create it only
once and store it with full type information for additional use
Christoph Egger [Tue, 6 Jan 2015 21:23:25 +0000 (22:23 +0100)]
Add in an Information Manager
Now individual functions are added to the GUI via signals. This is the
way it was alwasys supposed to work. Now Information flow is cleaner,
we can add support to save things and we can properly tag things as
functions and rerun the disassembler.
Also includes some whitespace cleanup for technical reasons
Christoph Egger [Fri, 12 Dec 2014 23:40:37 +0000 (00:40 +0100)]
Split disassemble()
disassemble() still does take care of initial disassembling of the
binary. However parts needed to (interactively) start disassembling
further parts are now separated.