omjavaid added a comment. In D96458#2614101 <https://reviews.llvm.org/D96458#2614101>, @labath wrote:
> In D96458#2614076 <https://reviews.llvm.org/D96458#2614076>, @omjavaid wrote: > >> In D96458#2613948 <https://reviews.llvm.org/D96458#2613948>, @labath wrote: >> >>> In D96458#2613894 <https://reviews.llvm.org/D96458#2613894>, @omjavaid >>> wrote: >>> >>>> ConfigureRegisterContext is called only once in the lifetime of a core >>>> from RegisterContextCorePOSIX_arm64 constructor. A process registers >>>> cannot change during execution which is what made basis of this change. >>>> for NativeRegisterContextLinux_arm64 I moved the ConfigureRegisterInfos >>>> logic out of configure register context because it will be called again >>>> and again during execution. But for RegisterContextCorePOSIX_arm64 we call >>>> it once in the constructor so its safe to keep the function. >>> >>> Ok, I understand what's happening now -- thanks for re-iterating. I have >>> managed to miss the fact that this patch deals with both core file and live >>> register contexts. >>> >>> In that case, I'd like to go one step further, and remove the >>> "configuration" operation from the `RegisterInfoPOSIX_arm64` class as well >>> (by making it a part of the construction). It should be possible to do that >>> by fetching the information needed to determine the registers before the >>> class is instantiated. For the live context, that could be done inside the >>> `CreateHostNativeRegisterContextLinux` function. For the core file context, >>> we could create a similar factory function as well. I.e. move the >>> construction of `RegisterInfoPOSIX_arm64` from ThreadElfCore into some >>> static function inside `RegisterContextCorePOSIX_arm64` -- this function >>> could examine the core data to determine the registers and construct the >>> appropriate info class. >> >> hmm .. in that case we will have to defer creation of >> RegisterInfoPOSIX_arm64 as you said above. I will create a function that >> will allow us to update unique_ptr m_register_info_up in >> RegisterContextPOSIX_arm64 > > That would make the registers of a RegisterInfoPOSIX_arm64 instance immutable > (which is good), but that function would allow one to mutate the > RegisterContextPOSIX_arm64 class in the middle of its lifetime by swapping > the register info backing it (which is exactly what I'm trying to avoid). I'm > trying to create an apis that is impossible/hard to use incorrectly. I'd like > to avoid this kind of "configuration" functions unless they are really > necessary. I could be wrong, but right now I don't see a reason why they'd be > necessary. We cannot calculated register set configuration untill we create register context. Both RegisterContextPOSIX_arm64 and NativeRegisterContextRegisterInfo are base class objects for their corresponding register contexts and its not trivial to make them immutable without serious refactoring. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D96458/new/ https://reviews.llvm.org/D96458 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits