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 Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility