labath added inline comments.

================
Comment at: source/Plugins/Platform/POSIX/PlatformPOSIX.cpp:1166
+  // The dlopen succeeded!
+  if (token != 0x0)
+    return process->AddImageToken(token);
----------------
jingham wrote:
> labath wrote:
> > Use LLDB_INVALID_IMAGE_TOKEN here?
> That wouldn't be right.  LLDB_INVALID_IMAGE_TOKEN is the invalid token in 
> lldb's namespace for image loading tokens, which has no relationship to any 
> given platform's invalid token specifier.  In fact, LLDB_INVALID_IMAGE_TOKEN 
> is UINT32_MAX, so it is actually different from the POSIX invalid image token.
I see. Thanks for the explanation.


================
Comment at: source/Target/Process.cpp:6251
+UtilityFunction *Process::GetLoadImageUtilityFunction(Platform *platform) {
+  if (platform != GetTarget().GetPlatform().get())
+    return nullptr;
----------------
jingham wrote:
> labath wrote:
> > jingham wrote:
> > > labath wrote:
> > > > Will this ever be true? I would not expect one to be able to change the 
> > > > platform of a process mid-session.
> > > Reading through the code I could not convince myself that it could NOT 
> > > happen.  Target::SetPlatform is a function anybody can call at any time.  
> > > I agree that it would be odd to do so, and we might think about 
> > > prohibiting it (Target::SetPlatform could return an error, and forbid 
> > > changing the Platform, if the Target has a live process.)
> > > 
> > > If everybody agrees that that is a good idea, I can do that and remove 
> > > this check.
> > I see three call in the codebase to SetPlatform. All of them seem to be in 
> > the initialization code, though some of them seem to happen after the 
> > process is launched (DynamicLoaderDarwinKernel constructor).
> > 
> > So it may not be possible to completely forbid setting the platform this 
> > way, but I think we can at least ban changing the platform once it has 
> > already been set in a pretty hard way (lldb_assert or even assert). I think 
> > a lot of things would currently break if someone started changing the 
> > platforms of a running process all of a sudden.
> Not sure.  It seems reasonable to make a target, run it against one platform, 
> then switch the platform and run it again against the new platform.  I'm not 
> sure I'm comfortable saying that a target can only ever use one platform.
Yeah, you're right. I suppose that makes sense. In my mind a target was 
associated with a given platform from the moment it got created (that is how I 
always do things: `platform select`, `platform connect`, and only then `target 
create`). I never tried what would happen if I reversed that. So I guess the 
platform can change during the lifetime of a Target, but I hope that is not the 
case for the lifetime of a Process.


Repository:
  rL LLVM

https://reviews.llvm.org/D45703



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to