[Lldb-commits] [PATCH] Add an OperatingSystem plugin to support goroutines

jingham at apple.com jingham at apple.com
Mon Oct 20 14:45:22 PDT 2014


Greg should comment on way you're populating the Memory threads, etc.  That was his code (used mostly by the OS X kernel folks to turn kernel thread activations into lldb threads...)  At present you can only enable/disable the OS plugins when the target is created, but I haven't looked into how hard that would be to change.

But anyway most of the extensions (like the JIT loader and the ASAN plugin) do their initialization work by inserting some callback in:

Process::ModulesDidLoad

which gets called every time a new shared library is loaded.  You can just check the module list you were passed and if it contains the symbol you are looking for, run your Init method.  At some point we should create some formal process where plugins can register "new module loaded" handlers rather than just jamming them in here by hand.  If you are feeling ambitious, have a go!  Otherwise, just do what everybody else does...

Jim

> On Oct 20, 2014, at 12:32 PM, Ryan Brown <ribrdb at google.com> wrote:
> 
> This is a first version of an os plugin for go supporting the 1.4 go runtime.
> I'm not sure what the best way to enable/disable this plugin is. I tried checking for the go runtime symbols when the plugin is created, but it appears the symbols aren't loaded until later.
> It would also be desirable to enable/disable the os plugin threads after the process has started, but I'm not sure how to implement that.
> 
> http://reviews.llvm.org/D5871
> 
> Files:
>  lldb.xcodeproj/project.pbxproj
>  source/Plugins/OperatingSystem/Go/OperatingSystemGo.cpp
>  source/Plugins/OperatingSystem/Go/OperatingSystemGo.h
>  source/lldb.cpp
> <D5871.15150.patch>_______________________________________________
> lldb-commits mailing list
> lldb-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits





More information about the lldb-commits mailing list