Skip to content

Commit

Permalink
[libunwind] [risc-v] This patch is for fixing
Browse files Browse the repository at this point in the history
immediate build failure when Cross Unwinding enabled.
Follow up patch will cleanup some Macros handling.

Differential Revision: https://reviews.llvm.org/D97762
  • Loading branch information
kamleshbhalui committed Mar 2, 2021
1 parent b6c2f53 commit 5c3fc50
Showing 1 changed file with 20 additions and 11 deletions.
31 changes: 20 additions & 11 deletions libunwind/src/Registers.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -3731,26 +3731,35 @@ inline const char *Registers_hexagon::getRegisterName(int regNum) {
/// Registers_riscv holds the register state of a thread in a RISC-V
/// process.

# if __riscv_xlen == 32
// This check makes it safe when LIBUNWIND_ENABLE_CROSS_UNWINDING enabled.
# ifdef __riscv
# if __riscv_xlen == 32
typedef uint32_t reg_t;
# elif __riscv_xlen == 64
# elif __riscv_xlen == 64
typedef uint64_t reg_t;
# else
# error "Unsupported __riscv_xlen"
# endif
# else
# error "Unsupported __riscv_xlen"
# endif

# if defined(__riscv_flen)
# if __riscv_flen == 64
# if defined(__riscv_flen)
# if __riscv_flen == 64
typedef double fp_t;
# elif __riscv_flen == 32
# elif __riscv_flen == 32
typedef float fp_t;
# else
# error "Unsupported __riscv_flen"
# endif
# else
# error "Unsupported __riscv_flen"
// This is just for supressing undeclared error of fp_t.
typedef double fp_t;
# endif
# else
// This is just for supressing undeclared error of fp_t.
// Use Max possible width when cross unwinding
typedef uint64_t reg_t;
typedef double fp_t;
# endif
# define __riscv_xlen 64
# define __riscv_flen 64
#endif

/// Registers_riscv holds the register state of a thread.
class _LIBUNWIND_HIDDEN Registers_riscv {
Expand Down

0 comments on commit 5c3fc50

Please sign in to comment.