bulbazord added a comment.

In D146668#4223456 <https://reviews.llvm.org/D146668#4223456>, @labath wrote:

> I'm sorry, but I don't think this is a good change (which I guess means the 
> previous one is not good either, but this one drives the point). I really 
> don't want lldb-server to depend on a platform plugins . I have two reasons 
> for that:
>
> - lldb-server is always running on the "host" platform, so the abstraction is 
> largely useless
> - the platform plugins end up (transitively) depending on the whole world -- 
> which includes tons of functionality that lldb-server does not need. With 
> these changes the size of the lldb-server binary has increased by over 50% in 
> my build (release+asserts on linux) -- from 40MB (which is already quite big 
> for what lldb-server does) to 62MB (which is just ludicrous).
>
> Of these, the second reason is the main one. If the platform plugin had a 
> simple self-contained API, then using it in lldb-server would not be a 
> problem. It might even be nice. However, we're very far from that state, and 
> I don't think it makes sense to try to achieve it. We use it as a repository 
> for os-specific logic in lldb, but here "lldb" really means the lldb client. 
> lldb-server doesn't need 90% of the Platform functionality, and most of the 
> other 10% (e.g. the file API) can be easily replaced by using the host 
> equivalents directly. Before this patch set, unix signals belonged in those 
> other 10 percent.
>
> I think we need to revert these patches and figure out a different way to 
> solve the issue at hand. The 50% increase is just too high. To be clear, I 
> totally understand and support what you're trying to achieve. Having no 
> outgoing plugin dependencies from the lldb core is a worthwhile endeavour, 
> and in fact could help shrink lldb-server size as well (because it wants to 
> depend on some -- and only some -- parts of lldb core). However, that won't 
> be the case if we solve that by reattaching all of the dependencies to 
> lldb-server.
>
> From the lldb client perspective, there's nothing wrong with having a 
> Platform::GetUnixSignals api. It fits in very well into the existing 
> functionality. However, since this is also used by lldb-server, we should 
> also have a non-platform way to access that data. One way to solve that would 
> be to have some sort of a "platform lite" plugin, which would contain the 
> signal API, and any other functionality that is useful for both lldb and 
> lldb-server -- and the real platform plugin could subsume that.
>
> However, I find that a bit overkill. The unix signals classes are very simple 
> (and very repetitive), so it seems to me like the plugin machinery would just 
> add a bunch of boilerplate (and institutionalize the repetition). I could be 
> convinced otherwise (particularly, if we find some other platform-like 
> functionality that could be placed into this plugin), but right now, I think 
> it would be better to just de-pluginize the entire UnixSignals machinery. For 
> example, we could just move it down to Utility so it can be accessed from 
> anywhere. Later, with some refactoring, I think we could even merge the 
> various ***Signals files into one, since all they should really differ is in 
> the values of signal constants. Like, we probably would not want to have a 
> different signal disposition settings for SIGINT on linux than say on 
> FreeBSD, so the fact that these are repeated in every implementation is just 
> a potential source of bugs.
>
> And we can still have Platform::GetUnixSignals to wrap this, and call it from 
> whereever it makes sense.

I'm alright with reverting these patches if it balloons lldb-server's size by 
50%. I really appreciate you trying to work with me to find a path forward 
here. I really do not want to revert without some idea of how we could solve 
this dependency/layering issue.

I like the idea of a "platform lite" plugin, but I also agree that it is 
probably overkill right now. Let's keep that idea in our back pockets. Sometime 
today I will revert this patch (I'll re-commit the test in a follow-up as it is 
still useful) and its predecessor (D146263 <https://reviews.llvm.org/D146263>). 
I'll also do some investigation work and write something up on the LLVM 
discourse where we can have a discussion about the best way forward.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D146668/new/

https://reviews.llvm.org/D146668

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

Reply via email to