[all-commits] [llvm/llvm-project] 660e34: [lldb][RISCV] Support optionally disabled FPR for ...

Alexey Merzlyakov via All-commits all-commits at lists.llvm.org
Wed Sep 4 07:32:20 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 660e34fd38c3fb39fba1871bbf5b2eb3a48bf277
      https://github.com/llvm/llvm-project/commit/660e34fd38c3fb39fba1871bbf5b2eb3a48bf277
  Author: Alexey Merzlyakov <60094858+AlexeyMerzlyakov at users.noreply.github.com>
  Date:   2024-09-04 (Wed, 04 Sep 2024)

  Changed paths:
    M lldb/source/Plugins/Instruction/RISCV/EmulateInstructionRISCV.cpp
    M lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_riscv64.cpp
    M lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_riscv64.h
    M lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_riscv64.cpp
    M lldb/source/Plugins/Process/Utility/RegisterInfoPOSIX_riscv64.cpp
    M lldb/source/Plugins/Process/Utility/RegisterInfoPOSIX_riscv64.h
    M lldb/source/Plugins/Process/Utility/RegisterInfos_riscv64.h
    M lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_riscv64.cpp
    M lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_riscv64.h
    M lldb/test/API/functionalities/postmortem/elf-core/TestLinuxCore.py
    R lldb/test/API/functionalities/postmortem/elf-core/linux-riscv64.core
    A lldb/test/API/functionalities/postmortem/elf-core/linux-riscv64.gpr_fpr.core
    A lldb/test/API/functionalities/postmortem/elf-core/linux-riscv64.gpr_fpr.out
    A lldb/test/API/functionalities/postmortem/elf-core/linux-riscv64.gpr_only.core
    A lldb/test/API/functionalities/postmortem/elf-core/linux-riscv64.gpr_only.out
    R lldb/test/API/functionalities/postmortem/elf-core/linux-riscv64.out
    A lldb/test/API/functionalities/postmortem/elf-core/main_fpr.c

  Log Message:
  -----------
  [lldb][RISCV] Support optionally disabled FPR for riscv64 (#104547)

The PR adds the support optionally enabled/disabled FP-registers to LLDB
`RegisterInfoPOSIX_riscv64`. This situation might take place for RISC-V
builds having no FP-registers, like RV64IMAC or RV64IMACV.

To aim this, patch adds `opt_regsets` flags mechanism. It re-works
RegisterInfo class to work with flexibly allocated (depending on
`opt_regsets` flag) `m_register_sets` and `m_register_infos` vectors
instead of statically defined structures. The registration of regsets is
being arranged by `m_per_regset_regnum_range` map.

The patch flows are spread to `NativeRegisterContextLinux_riscv64` and
`RegisterContextCorePOSIX_riscv64` classes, that were tested on:
 - x86_64 host working with coredumps
- RV64GC and RV64IMAC targets working with coredumps and natively in
run-time with binaries

`EmulateInstructionRISCV` is out of scope of this patch, and its
behavior did not change, using maximum set of registers.

According testcase built for RV64IMAC (no-FPR) was added to
`TestLinuxCore.py`.



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list