Add riscv64 support
authorGuo Ren <guoren@linux.alibaba.com>
Wed, 29 Jun 2022 08:46:46 +0000 (16:46 +0800)
committerRoger Shimizu <rosh@debian.org>
Fri, 27 Jan 2023 05:43:52 +0000 (05:43 +0000)
commit71fdfddb2990e6213f41bb7ab04928c5ebb89c53
tree5089817f7d25cdcb0a2b420fdc1d2f71bf258415
parent72204136db5535386af75f86847c2662740b3840
Add riscv64 support

This patch contains the dwarf unwind support for 64bit risc-v.

    * DwarfCfa.cpp (cfa_def_cfa_register): setup register if CFA_REG is
    not setup for riscv64
    * Elf.cpp (GetRelPc): convert offset to virtual address for riscv64.
    * ElfInterface.cpp (GetVirtAddrFromOffset): New for riscv64.
    * RegsRiscv64.cpp (StepIfSignalHandler): Fix signal frame check.
    libunwindstack/include/unwindstack/
    * ElfInterface.h (GetVirtAddrFromOffset): New for riscv64.
    libunwindstack/tests/
    * DwarfCfaTest.cpp (cfa_def_cfa_register): ok for riscv64.
    * RegsStepIfSignalHandlerTest.cpp (riscv64_step_if_signal_handler): Fix
    testcase for riscv64

Test: Builds.
Test: All unit tests pass.

Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
Signed-off-by: Lifang Xia <lifang_xia@linux.alibaba.com>
Signed-off-by: Mao Han <han_mao@linux.alibaba.com>
Change-Id: Ib21ddf23cc83f332af202df7bffcaceec16063e0

Gbp-Pq: Topic system/core
Gbp-Pq: Name Add-riscv64-support.patch
12 files changed:
system/core/libunwindstack/Android.bp
system/core/libunwindstack/Elf.cpp
system/core/libunwindstack/Regs.cpp
system/core/libunwindstack/RegsRiscv64.cpp [new file with mode: 0644]
system/core/libunwindstack/include/unwindstack/Elf.h
system/core/libunwindstack/include/unwindstack/MachineRiscv64.h [new file with mode: 0644]
system/core/libunwindstack/include/unwindstack/RegsGetLocal.h
system/core/libunwindstack/include/unwindstack/RegsRiscv64.h [new file with mode: 0644]
system/core/libunwindstack/include/unwindstack/UcontextRiscv64.h [new file with mode: 0644]
system/core/libunwindstack/include/unwindstack/UserRiscv64.h [new file with mode: 0644]
system/core/libunwindstack/tools/unwind.cpp
system/core/libunwindstack/tools/unwind_symbols.cpp