[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v5 11/17] xenctx: Add -d (--dump-as-stack) <daddr> option to dump memory at daddr as a stack.
On 03/21/14 10:57, Ian Campbell wrote: On Thu, 2014-03-20 at 15:06 -0400, Don Slutz wrote:@@ -797,14 +796,17 @@ static int print_stack(vcpu_guest_context_any_t *ctx, int vcpu, int width) printf("Stack Trace:\n"); else printf("Call Trace:\n"); - if ( xenctx.tag_call_trace ) - printf(" %*s", width*2, ""); - printf("%c [<", xenctx.stack_trace ? '*' : ' '); - print_stack_word(instr_pointer(ctx), width); - printf(">]"); - - print_symbol(instr_pointer(ctx)); - printf(" <--\n"); + if ( !xenctx.do_stack )Why not? This code output's rip (instr_pointer(ctx)) which does not apply in this case. + { + if ( xenctx.tag_call_trace ) + printf(" %*s", width*2, ""); + printf("%c [<", xenctx.stack_trace ? '*' : ' '); + print_stack_word(instr_pointer(ctx), width); + printf(">]"); + + print_symbol(instr_pointer(ctx)); + printf(" <--\n"); + } if (xenctx.frame_ptrs) { stack = stack_pointer(ctx); frame = frame_pointer(ctx); @@ -944,13 +946,19 @@ static void dump_ctx(int vcpu) print_mem(&ctx, vcpu, guest_word_size, xenctx.mem_addr); return; } + if ( xenctx.do_stack ) + { + print_stack(&ctx, vcpu, guest_word_size, xenctx.stk_addr); + return; + }It's starting to seem like print_mem and print_stack should be called from main instead of here. In other words actually have multiple modes instead of tuffing things in as special cases here. The issue is that ctx (vcpu_guest_context_any_t) does not exist in main and is needed by map_page() (called from these). dump_ctx() is the routine that gets this and guest_word_size, guest_protected_mode, and ctxt_word_size. And so yes, this part of dump_ctx() could be moved to main and/or ctx could be made global. Let me know if I should rework all this. , @@ -1110,6 +1121,11 @@ int main(int argc, char **argv) xenctx.do_memory = 1; do_default = 0; break; + case 'd': + xenctx.stk_addr = strtoull(optarg, NULL, 0);You can reuse mem_addr here, can't you? Nope. If both -d and -m are specified, then both are done. -Don Slutz _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |