Passing '-S' option to 'bt' command was intended to specify the stack
pointer manually. But get_stack_frame() handling on ppc64 is ignoring
this option altogether. Fix it.

Signed-off-by: Hari Bathini <hbath...@linux.ibm.com>
---

* No changes in v2.


 ppc64.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/ppc64.c b/ppc64.c
index 975caa5..0e1d867 100644
--- a/ppc64.c
+++ b/ppc64.c
@@ -2330,6 +2330,22 @@ ppc64_vmcore_stack_frame(struct bt_info *bt_in, ulong 
*nip, ulong *ksp)
 
        pt_regs = (struct ppc64_pt_regs *)bt_in->machdep;
        if (!pt_regs || !pt_regs->gpr[1]) {
+               if (bt_in->hp) {
+                       if (bt_in->hp->esp) {
+                               *ksp = bt_in->hp->esp;
+                               if (!bt_in->hp->eip) {
+                                       if (IS_KVADDR(*ksp)) {
+                                               readmem(*ksp+16, KVADDR, &unip, 
sizeof(ulong),
+                                                       "Regs NIP value", 
FAULT_ON_ERROR);
+                                               *nip = unip;
+                                       }
+                               } else
+                                       *nip = bt_in->hp->eip;
+
+                       }
+                       return TRUE;
+               }
+
                /*
                 * Not collected regs. May be the corresponding CPU not
                 * responded to an IPI in case of KDump OR f/w has not
-- 
2.35.3

--
Crash-utility mailing list
Crash-utility@redhat.com
https://listman.redhat.com/mailman/listinfo/crash-utility
Contribution Guidelines: https://github.com/crash-utility/crash/wiki

Reply via email to