[Lldb-commits] [PATCH] D133534: Complete support of loading a darwin kernel over a live gdb-remote connection given the address of a mach-o fileset
Jonas Devlieghere via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Fri Sep 9 09:05:24 PDT 2022
JDevlieghere added a comment.
The current patch didn't have context so I just left a bunch of nits.
================
Comment at: lldb/include/lldb/Target/Platform.h:870-874
+ virtual bool LoadSpecialBinaryAndSetDynamicLoader(Process *process,
+ lldb::addr_t addr,
+ bool notify) {
+ return false;
+ }
----------------
What makes the binary special? The comment above doesn't say. Can we give this a more descriptive name or omit the "Special" part?
================
Comment at: lldb/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp:133
+static bool module_is_a_kernel(Module *module) {
+ if (!module)
----------------
This seems needless verbose: `is_kernel` conveys the same information.
================
Comment at: lldb/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp:574-577
+ if (module_is_a_kernel(module_sp.get()))
+ m_kernel_image = true;
+ else
+ m_kernel_image = false;
----------------
`m_kernel_image = is_kernel(module_sp.get())`
================
Comment at: lldb/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp:668-669
bool is_kernel = false;
- if (memory_module_sp->GetObjectFile()) {
- if (memory_module_sp->GetObjectFile()->GetType() ==
- ObjectFile::eTypeExecutable &&
- memory_module_sp->GetObjectFile()->GetStrata() ==
- ObjectFile::eStrataKernel) {
- is_kernel = true;
- } else if (memory_module_sp->GetObjectFile()->GetType() ==
- ObjectFile::eTypeSharedLibrary) {
- is_kernel = false;
- }
- }
+ if (module_is_a_kernel(memory_module_sp.get()))
+ is_kernel = true;
----------------
`is_kernel = is_kernel(memory_module_sp.get())`
================
Comment at: lldb/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp:747-752
+ ModuleList module_list = target.GetImages();
+ std::lock_guard<std::recursive_mutex> guard(module_list.GetMutex());
+ const size_t num_modules = module_list.GetSize();
+ ModuleList incorrect_kernels;
+ for (size_t i = 0; i < num_modules; i++) {
+ ModuleSP module_sp = module_list.GetModuleAtIndex(i);
----------------
The `ModuleList` has a `Modules()` function that returns a locking iterator. You can rewrite this as:
```
for(ModuleSP module : target.GetImages().Modules()) {
...
}
```
================
Comment at: lldb/source/Plugins/Platform/MacOSX/PlatformDarwinKernel.cpp:929
+ return LLDB_INVALID_ADDRESS;
+ ModuleSP module_sp(new Module(ModuleSpec()));
+ ObjectContainerSP container_sp(
----------------
```ModuleSP module_sp = std::make_shared<Module>()```
================
Comment at: lldb/source/Plugins/Platform/MacOSX/PlatformDarwinKernel.cpp:970
+ PlatformDarwinKernel::GetPluginNameStatic());
+ if (platform_sp.get())
+ process->GetTarget().SetPlatform(platform_sp);
----------------
```if(platform_sp)```
================
Comment at: lldb/source/Plugins/Platform/MacOSX/PlatformDarwinKernel.cpp:973-974
+
+ DynamicLoaderUP dyld_up(
+ new DynamicLoaderDarwinKernel(process, actual_address));
+ if (!dyld_up)
----------------
std::make_shared
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D133534/new/
https://reviews.llvm.org/D133534
More information about the lldb-commits
mailing list