Michael137 added a comment.

In D138724#3988715 <https://reviews.llvm.org/D138724#3988715>, @Michael137 
wrote:

> In D138724#3988318 <https://reviews.llvm.org/D138724#3988318>, @labath wrote:
>
>> I just found out that this test (the non-shared-library version) fails on 
>> linux if the executable is built with `-no-pie` (which is the default if the 
>> `CLANG_DEFAULT_PIE_ON_LINUX` option is not set, which happened to be the 
>> case for my build). I think the important fact here is that a PIE ELF 
>> executable gets its `e_type` field set to `ET_DYN`, which causes lldb to 
>> identify it as a shared library. However, it is not clear to me why would 
>> that matter in this case...
>
> From what I can tell the main difference with `no-PIE` executable is that 
> `Target::ModulesDidUnload` doesn't get called when relaunching the process. 
> Whereas in the `PIE` case we do:
>
>   PlatformPOSIX::DebugProcess
>   -> Process::Launch
>     -> DynamicLoaderPOSIXDYLD::DidLaunch
>       -> DynamicLoader::GetTargetExecutable
>         -> Target::SetExecutableModule
>           -> Target::ClearModules
>             -> Target::ModulesDidUnload

Ah I may have spotted the issue (but yet to confirm).

Currently, when relaunching an executable, the `DynamicLoader` plugin does this:

  ModuleSP DynamicLoader::GetTargetExecutable() {
          ...
          if (executable.get() != target.GetExecutableModulePointer()) {        
            // Don't load dependent images since we are in dyld where we will   
            // know and find out about all images that are loaded
            target.SetExecutableModule(executable, eLoadDependentsNo);          

In `target.GetExecutableModulePointer` we return the pointer the first module 
of type `eTypeObjectFile`, which with `no-pie` will not be `a.out`, so then we 
just return the first module in `m_images`. In the `no-pie` case we don't take 
this branch and maybe this is why. Will check shortly


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D138724

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

Reply via email to