I’m glad to hear it.  As Sean indicated, that was pretty much expected given 
the nature of the work – unlike the editline reworking which was bound to run 
into platform-specific issues.

Kate Stone k8st...@apple.com <mailto:k8st...@apple.com>
 Xcode Runtime Analysis Tools

> On Dec 5, 2014, at 9:43 AM, Zachary Turner <ztur...@google.com> wrote:
> 
> Fair enough, most of my concerns had been alleviated after glancing over the 
> patches and seeing that there were little to no system calls in any of them, 
> which was my biggest concern.  In any case, I already fixed up the build 
> breakages, they were all trivial fixes as you all predicted.
> 
> On Thu Dec 04 2014 at 6:19:18 PM <jing...@apple.com 
> <mailto:jing...@apple.com>> wrote:
> The llvm policies for review include "review after commit" when the code is 
> in an area that is owned by the committer:
> 
>         • Code can be reviewed either before it is committed or after. We 
> expect major changes to be reviewed before being committed, but smaller 
> changes (or changes where the developer owns the component) can be reviewed 
> after commit.
> 
> lldb doesn't have many subsystems with lots of folks who work on that area.  
> After all, there aren't that many people working on lldb, and as a result we 
> all tend to work on our own separate areas.  So if you are contributing to 
> your area of expertise, waiting for a "I don't understand how that code 
> works, but it looks formally correct, or compiles for me" seems like it will 
> slow down development without any real benefits.
> 
> At some point the areas of code in lldb which at present only one or two 
> people understand and work on will have many active contributors.  When that 
> happens, it will be worth the delay to get the opinions of those other future 
> contributors.  But for now, in the areas that the current contributors own I 
> think it is fine that we do review after commit.
> 
> Jim
> 
> 
> > On Dec 4, 2014, at 5:51 PM, Zachary Turner <ztur...@google.com 
> > <mailto:ztur...@google.com>> wrote:
> >
> > Well, I haven't had a chance to try out the changes yet, so I guess I'll 
> > reserve judgement for tomorrow.  Ultimately if everything works, no harm no 
> > foul.  Although as I mentioned in the earlier resposne, we don't have 
> > Windows buildbots yet.
> >
> > In any case, I would love to see a more active code reviewing culture in 
> > LLDB someday.  They're a source of great benefit for everyone.
> >
> > On Thu Dec 04 2014 at 5:36:19 PM Sean Callanan <scalla...@apple.com 
> > <mailto:scalla...@apple.com>> wrote:
> > Zachary,
> >
> > It’s not clear to me that this is actually a bigger deal for non-OS X 
> > platforms than the IOHandler change.
> > For one thing, unless a Platform specifically signs up for this, it does 
> > nothing.
> > The idea is specifically to start this off on OS X and then have other 
> > platforms adopt it as they are ready.  To that end, I sent a summary of 
> > what’s going in as an e-mail for people to read as they look at the commits.
> >
> > The only risk here is that we’ll break someone’s build in a way we didn’t 
> > anticipate – which is the point of buildbots.
> >
> > Sean
> >
> >> On Dec 4, 2014, at 5:33 PM, Zachary Turner <ztur...@google.com 
> >> <mailto:ztur...@google.com>> wrote:
> >>
> >> Yes, but for starters we dont have a windows build bot yet (ive been 
> >> working on that), and secondly buildbots shouldnt be used as a way to 
> >> bypass the review process.
> >>
> >> For example, Kates change to IOHandler recently is small compared to this 
> >> one, but it still was looked at by people prior to comitting.
> >>
> >> It's possible these changes won't break anything, but still it doesn't 
> >> seem unreasonable to ask that particularly huge changes like this at least 
> >> have a day or two of being made public before going in.
> >> On Thu, Dec 4, 2014 at 5:25 PM <jing...@apple.com 
> >> <mailto:jing...@apple.com>> wrote:
> >> I'm confused.  Isn't that what the build bots are for?  Seems better to 
> >> rely on the immediate feedback you get from build bots for "other host" 
> >> breakages than waiting around to see if anybody is going to grab your 
> >> patch and apply it and try to build, etc...
> >>
> >> Jim
> >>
> >> > On Dec 4, 2014, at 5:18 PM, Zachary Turner <ztur...@google.com 
> >> > <mailto:ztur...@google.com>> wrote:
> >> >
> >> > Would it be possible to put patches up for review for at least a couple 
> >> > days BEFORE comitting? There's a pretty good chance this will break a 
> >> > build somewhere, and an average chance that the break won't be that easy 
> >> > to fix. And having broken builds for a couple of days doesn't seem 
> >> > reasonable.
> >> >
> >> > Im not sure how thoroughly we can review it, but at least we can prevent 
> >> > broken builds this way.
> >> > On Thu, Dec 4, 2014 at 5:10 PM Sean Callanan <scalla...@apple.com 
> >> > <mailto:scalla...@apple.com>> wrote:
> >> > Rationale
> >> >
> >> > A historical pain point in the expression parser has been using 
> >> > functions for which the type is not completely known from debug 
> >> > information.
> >> > This is the case e.g. for functions from the C standard library, and 
> >> > also for Objective-C methods in frameworks.
> >> > It’s also unfortunate when handy types, enums, etc. are invisible just 
> >> > because your DWARF doesn’t happen to contain them.
> >> > I’m doing something about that, for OS X – but it should generalize to 
> >> > other platforms.
> >> >
> >> > Clang modules: the basics
> >> >
> >> > The code I’m about to commit adds support for Clang modules to the 
> >> > expression parser.  Clang modules are described in much more detail here:
> >> >       http://clang.llvm.org/docs/Modules.html 
> >> > <http://clang.llvm.org/docs/Modules.html>
> >> > but here is a short introduction:
> >> >
> >> > A group of header files is encapsulated in a module, which is provided 
> >> > with a module.map file.
> >> > On OS X, this module.map is typically inside the corresponding framework.
> >> > Clang reads module.map and the corresponding headers and produces a 
> >> > compiled module.
> >> > This compiled module is essentially a .pch; it provides full information 
> >> > about all APIs, types, etc. defined in the module.
> >> >
> >> > LLDB support
> >> >
> >> > In order to use Clang modules, LLDB must:
> >> >
> >> >       • Know where they live (from Clang’s perspective, this is the 
> >> > “sysroot”) and what compilation flags to use when parsing them;
> >> >       • Know which ones the user wants;
> >> >       • Compile them with its built-in Clang instance; and
> >> >       • Use the information found in the compiled modules as appropriate.
> >> >
> >> > LLDB accomplishes each of these goals in the following ways:
> >> >
> >> >       • Platforms can now return the appropriate Clang flags that tell 
> >> > the module importer where to find modules for the current platform.  
> >> > Explicit support is enabled in PlatformDarwin.  Other platforms can opt 
> >> > into this by returning true from Platform::SupportsModules() and adding 
> >> > the appropriate compilation options when 
> >> > Platform::AddClangModuleCompilationOptions() is called.  If they return 
> >> > false, there should be no change in behavior.
> >> >       • LLDB adds preprocessor callbacks to Clang that catch @import 
> >> > directives.  When such a directive is found, LLDB directs its built-in 
> >> > Clang to import the named module.
> >> >       • Modules are imported into a separate compiler instance (with its 
> >> > own AST context) encapsulated in ClangModulesDeclVendor so that we can 
> >> > be careful about what we actually import into expressions.  Information 
> >> > in DWARF will often take precedence, for instance.
> >> >       • ClangExpressionDeclMap – the code responsible for finding 
> >> > entities Clang asks about while it parses expressions – is being 
> >> > extended to load information from modules as appropriate.  The initial 
> >> > commit simply searches for functions (e.g., printf()) but I will be 
> >> > adding functionality rapidly.
> >> >
> >> > What the upcoming patches do
> >> >
> >> >       • ClangModulesDeclVendor.h/.cpp implements the portions of LLDB 
> >> > responsible for driving the modules compiler.  This should be 
> >> > platform-generic code, although in practice we may need to tweak it to 
> >> > make sure it is flexible enough to handle everything.
> >> >       • TypeVendor has been changed to DeclVendor, so that the 
> >> > Objective-C runtime can share the same method signatures with the Clang 
> >> > module importer.  Places that used TypeVendor now use DeclVendor, and 
> >> > I’ve tweaked the APIs for getting types from decls to make this 
> >> > transition smooth.
> >> >       • Platform (as mentioned above) now can return the flags necessary 
> >> > to tell Clang where modules live.  PlatformDarwin has a bunch of new 
> >> > code to find these; I also have a default implementation that you can 
> >> > try out if you want, but unless you know what a module.map is I would 
> >> > hold off on this.
> >> >       • The LLDB bundle on Mac OS X will now also include the 
> >> > compiler-specific headers Clang requires to compile standard library 
> >> > headers (e.g., tgmath.h, stdarg.h).  Host can find the location of these 
> >> > headers; on non-OS X hosts, we’ll need to put them in some sensible 
> >> > place.
> >> >       • ClangExpressionParser.cpp now sets up the appropriate context to 
> >> > intercept @import directives.
> >> >       • ClangExpressionDeclMap.cpp now searches modules (if available) 
> >> > for functions if it doesn’t find them in DWARF.
> >> >       • Targets now vend their ClangModulesDeclVendors as appropriate.
> >> >
> >> > Timeline and priorities
> >> >
> >> > I’m going to start committing today, but if any of these commits breaks 
> >> > anything for you, please let me know.
> >> > My priority is getting this working on OS X first.  If parts of my code 
> >> > look platform-myopic, please let me know, though – I really want to see 
> >> > debugging with modules working on other platforms too.
> >> > Of course if any of this breaks any build, let me know immediately and 
> >> > I’ll get on it.
> >> > _______________________________________________
> >> > lldb-dev mailing list
> >> > lldb-dev@cs.uiuc.edu <mailto:lldb-dev@cs.uiuc.edu>
> >> > http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev 
> >> > <http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev>
> >> > _______________________________________________
> >> > lldb-dev mailing list
> >> > lldb-dev@cs.uiuc.edu <mailto:lldb-dev@cs.uiuc.edu>
> >> > http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev 
> >> > <http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev>
> >>
> >
> 
> _______________________________________________
> lldb-dev mailing list
> lldb-dev@cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

_______________________________________________
lldb-dev mailing list
lldb-dev@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to