[LLVMdev] Introducing LLBrowse: A graphical browser for LLVM modules

Talin viridia at gmail.com
Sat Feb 12 10:28:27 PST 2011


On Sat, Feb 12, 2011 at 6:40 AM, Garrison Venn <gvenn.cfe.dev at gmail.com>wrote:

> Looks cool Talin.
>
> Personally it would be nice if it was checked into llvm.org, but is
> wxWidgets LGPL like license
> an issue for  llvm's repository?
>

There should be no problem with the license. wxWidgets is indeed distributed
under a modified version of the LGPL (with a special exception to allow
people to distribute binaries of their app without requiring the source).
The LGPL allows derived works to be distributed under a more permissive
license (such as BSD-like licenses) as long as all of the license terms are
*less restrictive* than the LGPL. Also, since we're talking LGPL, not GPL,
the "derived work" does not include applications based on the library, it
only includes modifications to the library itself.

Since LLBrowse does not include any wxWidgets source code, the source
archive can be distributed under a BSD license. Binaries of LLBrowse can be
distributed freely, without source, due to the special exception in the
wxWidgets license.

Thus, even though the University of Illinois license is not GPL-compatible
(because of the copyright and endorsement clauses), this should not matter.

Here's a page which lists which open source licenses are GPL-compatible:

http://www.gnu.org/licenses/license-list.html<http://www.gnu.org/licenses/license-list.html#GPLCompatibleLicenses>


> Anyway I would be interested in a copy otherwise under a BSD like license.
>
> Thanks in advance
>
> Garrison
>
> On Feb 12, 2011, at 2:22, Talin 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:
>
> <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
>  _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
>


-- 
-- Talin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110212/79fa90bb/attachment.html>


More information about the llvm-dev mailing list