Re: [PATCH 2/4] LoongArch: Add prologue unwinder support

From: Youling Tang
Date: Mon Aug 01 2022 - 21:30:15 EST




On 08/01/2022 11:26 PM, Huacai Chen wrote:
diff --git a/arch/loongarch/include/asm/unwind.h b/arch/loongarch/include/asm/unwind.h
index 243330b39d0d..f9f73a26504e 100644
--- a/arch/loongarch/include/asm/unwind.h
+++ b/arch/loongarch/include/asm/unwind.h
@@ -14,6 +14,14 @@
struct unwind_state {
struct stack_info stack_info;
struct task_struct *task;
+#if defined(CONFIG_UNWINDER_PROLOGUE)
+ unsigned long ra;
+ bool enable;
+ /*
+ * Enable is the prologue analysis method
+ * otherwise is the way to guess.
+ */
+#endif
unsigned long sp, pc;
bool first;
bool error;
This data struct makes me very uncomfortable, especially "enable" and
the #ifdef, maybe we can rework it like this?

#define UNWINDER_GUESS 0
#define UNWINDER_PROLOGURE 1

Maybe it's better to define with enum type?
enum unwind_type {
UNWINDER_GUESS,
UNWINDER_PROLOGURE,
};

Youling

struct unwind_state {
char type; /* UNWINDER_xxx */
bool first, error;
unsigned long sp, pc, ra;
struct task_struct *task;
struct stack_info stack_info;
};

Huacai