Index: crash-4.0-8.9/extensions/local.c
===================================================================
--- crash-4.0-8.9.orig/extensions/local.c       2009-05-25 07:43:59.000000000 
+0530
+++ crash-4.0-8.9/extensions/local.c    2009-05-25 08:23:29.000000000 +0530
@@ -54,6 +54,7 @@
 static ulong fetch_register_x86_64(int reg);
 static int assign_register_x86_64(int reg, ulong value);
 static int display_registers_x86_64(void);
+static int unwind_x86_64();
 
 /* Dwarf routines */
 static void print_function_variables();
@@ -333,7 +334,11 @@
                {
                case STACK_UNWIND_UP:
                        local->flags = STACK_UNWIND_UP;
-                       unwind_dw_up(local->pc);
+                       #ifdef X86_64
+                               unwind_x86_64();        
+                       #elif PPC64
+                               unwind_dw_up(locddal->pc);      
+                       #endif
                        break;
                case STACK_UNWIND_DOWN:
                        local->flags = STACK_UNWIND_DOWN;
@@ -361,6 +366,19 @@
        }
 }
 
+static int
+unwind_x86_64()
+{
+       ulong rbp;
+       struct pt_regs_x86_64 *pt_regs;
+       pt_regs = (struct pt_regs_x86_64 *)local->regs;
+       rbp = pt_regs->bp;
+       pt_regs->sp = rbp + 2*sizeof(ulong);
+       read_vmcore(rbp + sizeof(ulong), sizeof(ulong), &pt_regs->ip);
+       read_vmcore(rbp, sizeof(ulong), &pt_regs->bp);
+       local->pc = pt_regs->ip;
+       return 0;
+}
 static int 
 str_to_option(char *str)
 {
--
Crash-utility mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/crash-utility

Reply via email to