tzb99 added a comment.

In D128250#3640942 <https://reviews.llvm.org/D128250#3640942>, @Emmmer wrote:

> This patch change:
>
> - Add the recognition of architecture riscv64 in `HostInfoBase.cpp`
> - Add the recognition of architecture riscv64 and riscv32 in 
> `ObjectFilePECOFF.cpp`
> - Add riscv's `ebreak` command to `Platform.cpp`
>
> Now lldb can debug with simple executables on `qemu-system-riscv64` and be 
> able to attach to a `gdbserver`.
>
> ---
>
> TODO: some unittest failed
>
>   bash
>   [ RUN      ] TestBase.LaunchModePreservesEnvironment
>   
> /home/emmmer/git/llvm-project/lldb/unittests/tools/lldb-server/tests/LLGSTest.cpp:29:
>  Failure
>   Value of: llvm::detail::TakeExpected(ClientOr)
>   Expected: succeeded
>     Actual: failed  (Unable to parse qRegisterInfo: generic)
>   [  FAILED  ] TestBase.LaunchModePreservesEnvironment (662 ms)
>   
>   
>   [ RUN      ] TestBase.vAttachRichError
>   Connection established.
>   Launched 
> '/home/emmmer/git/llvm-project/build-cross/tools/lldb/unittests/tools/lldb-server/./environment_check'
>  as process 1553...
>   lldb-server-local_build
>   Connection established.
>   Launched 
> '/home/emmmer/git/llvm-project/build-cross/tools/lldb/unittests/tools/lldb-server/./environment_check'
>  as process 1556...
>   lldb-server-local_build
>   
> /home/emmmer/git/llvm-project/lldb/unittests/tools/lldb-server/tests/LLGSTest.cpp:60:
>  Failure
>   Value of: llvm::detail::TakeExpected(ClientOr)
>   Expected: succeeded
>     Actual: failed  (Unable to parse qRegisterInfo: generic)
>   [  FAILED  ] TestBase.vAttachRichError (364 ms)
>
> In riscv, the user-mode process cannot directly take the `pc` register but 
> must obtain the pc state through `auipc`, while the `pc` register is required 
> to exist in the test, so it failed.
>
> ---
>
>   bash
>   [ RUN      ] DumpDataExtractorTest.Formats
>   
> /home/emmmer/git/llvm-project/lldb/unittests/Core/DumpDataExtractorTest.cpp:90:
>  Failure
>   Expected equality of these values:
>     expected
>       Which is: "{-nan -nan nan nan}"
>     result.GetString()
>       Which is: "{nan nan nan nan}"
>   [  FAILED  ] DumpDataExtractorTest.Formats (25 ms)
>
> The reason is currently unknown, and further verification is required
>
> ---
>
> About buildbot: Unfortunately, as an individual developer, I may not have the 
> ability to maintain a 7*24-hour compile server or even a cluster, but I will 
> do my best to provide some test reports.

Hello:

I implemented the diff into my local llvm project and cross-compiled the 
project using in-tree build with enable projects as:
-DLLVM_ENABLE_PROJECTS="clang;lld;lldb"

The project can be compiled using the "Release" mode. The lldb-server can be 
initiated and connected to the host machine from the qemu environment. It can 
ran the riscv binary using process continue / thread continue, but the compiled 
lldb-server cannot get any thread information and cannot perform thread step-in 
functionality. Then I performed the Debug mode to build the project. Error 
occurred so the build command cannot be finished. The error shows like:

[3759/4081] Linking CXX shared library lib/libclang-cpp.so.15git
FAILED: lib/libclang-cpp.so.15git 
: && riscv-gnu-toolchain/bin/riscv64-unknown-linux-gnu-g++ -

Can your lldb-server work properly on the riscv qemu environment? My question 
might be, what is the proper recipe for cross-building the lldb-server? Or, 
should the diff be changed to enable getting the thread instruction info of the 
lldb-server?

Thank you very much!


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

https://reviews.llvm.org/D128250

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

Reply via email to