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>
Tue, 31 Jan 2023 07:58:29 +0000 (07:58 +0000)
commitd26df3e669877e18763df1ccfe0b27f61203658e
treeab3eb3d70171aa9dcece0a470dcf06eac222cece
parentf4478b71e55f6bff8e07034beddb57f4e96b6261
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