[LLVMdev] Introducing LLBrowse: A graphical browser for LLVM modules
Talin
viridia at gmail.com
Sat Feb 12 10:14:13 PST 2011
A lot of people have requested a source archive, so I'm making available
here:
http://code.google.com/p/tart/downloads/detail?name=llbrowse.tgz
Have fun!
On Fri, Feb 11, 2011 at 11:22 PM, Talin <viridia at gmail.com> wrote:
> I've written a little GUI application that displays an LLVM module as an
> expandable tree, which can be useful for examining the module's contents.
> Some features:
>
> - Based on wxWidgets, so it's completely cross-platform.
> - CMake build script can locate both LLVM and wxWidgets installations
> automatically.
> - Loads either .ll or .bc files.
> - Supports browsing of LLVM types, variables, functions, aliases, and
> metadata. I'm working on supporting a more structured view of DWARF DIEs,
> but that is not complete.
> - Tree nodes are created lazily as needed.
> - The tree node system is highly extensible, each different LLVM object
> type is represented by a tree node class, adding new node classes is
> extremely easy.
> - The code is very straightforward and easy to read.
> - All image resources are embedded in the final executable, so the
> compiles program is just a single binary file, very easily installed.
>
> This is still a work in progress, but I think it's ready for people to
> start hacking on.
>
> If there is interest, I can check the code into the llvm.org svn somewhere
> - I just need to know where to put it. Otherwise, I'm happy to email a zip
> archive to folks who are interested. I'm willing to release the code under
> whatever license is most convenient.
>
> Here's a screenshot of what it looks like:
>
> [image: llbrowse.png]
>
> And here's what the node class for displaying variables looks like, as an
> example:
>
> class VariableItem : public TreeItemBase {
> public:
> VariableItem(const llvm::Module* module, const llvm::GlobalVariable* var)
> : module_(module), var_(var) {}
>
> // Overrides
>
> int GetIcon() const;
> wxString GetCaption() const;
> void CreateChildren(wxTreeCtrl* tree, const wxTreeItemId& id);
> bool CanCreateChildren() const;
> void ShowDetails(DetailsView* detailsView);
>
> private:
> const llvm::Module* const module_;
> const llvm::GlobalVariable* const var_;
> };
>
>
> --
> -- Talin
>
--
-- Talin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110212/25940955/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: llbrowse.png
Type: image/png
Size: 66648 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110212/25940955/attachment.png>
More information about the llvm-dev
mailing list