tech-toolchain archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: [PATCH 5/7] Hackaround lldb-server path detection



On 28.03.2020 14:52, Michał Górny wrote:
> Add a hack to help lldb locate lldb-server.  The upstream code for this
> relies on liblldb being built as a shared library, as it uses dlinfo
> to determine the path to the library and find executables relative
> to that.  We cannot build liblldb.so at the moment since it would
> require building whole LLVM and Clang with -fPIC.
>
> The patch hardcodes a path equivalent to the expected value.  This way
> we can avoid having to change more than one statement, as the relative
> path logic remains correct.
> ---
>  .../llvm/dist/lldb/source/Host/common/HostInfoBase.cpp    | 8 +-------
>  1 file changed, 1 insertion(+), 7 deletions(-)
>
> diff --git a/external/apache2/llvm/dist/lldb/source/Host/common/HostInfoBase.cpp b/external/apache2/llvm/dist/lldb/source/Host/common/HostInfoBase.cpp
> index 3765f36fc79a..ac36bdbbdc27 100644
> --- a/external/apache2/llvm/dist/lldb/source/Host/common/HostInfoBase.cpp
> +++ b/external/apache2/llvm/dist/lldb/source/Host/common/HostInfoBase.cpp
> @@ -248,13 +248,7 @@ bool HostInfoBase::ComputeSharedLibraryDirectory(FileSpec &file_spec) {
>    // contains this function. On MacOSX this will be "LLDB.framework/.../LLDB".
>    // On other posix systems, we will get .../lib(64|32)?/liblldb.so.
>
> -  FileSpec lldb_file_spec(Host::GetModuleFileSpecForHostAddress(
> -      reinterpret_cast<void *>(reinterpret_cast<intptr_t>(
> -          HostInfoBase::ComputeSharedLibraryDirectory))));
> -
> -  // This is necessary because when running the testsuite the shlib might be a
> -  // symbolic link inside the Python resource dir.
> -  FileSystem::Instance().ResolveSymbolicLink(lldb_file_spec, lldb_file_spec);
> +  FileSpec lldb_file_spec("/usr/lib/liblldb.so");
>
>    // Remove the filename so that this FileSpec only represents the directory.
>    file_spec.GetDirectory() = lldb_file_spec.GetDirectory();
>

I would go here for

#if 1 // workaround missing liblldb.so
  FileSpec lldb_file_spec("/usr/lib/liblldb.so");
#else
  FileSpec lldb_file_spec(Host::GetModuleFileSpecForHostAddress(
      reinterpret_cast<void *>(reinterpret_cast<intptr_t>(
          HostInfoBase::ComputeSharedLibraryDirectory))));

  // This is necessary because when running the testsuite the shlib
might be a
  // symbolic link inside the Python resource dir.
  FileSystem::Instance().ResolveSymbolicLink(lldb_file_spec,
lldb_file_spec);
#endif


Home | Main Index | Thread Index | Old Index