|
Message
From: =?unknown-8bit?Q?Gy=F6rgy?= 'nog' Jeney<nog@s...>
Date: Tue Jul 5 17:52:43 CEST 2005
Subject: [openrisc] [or1ksim #136] Print stack dump to stderr
Hi,ChangeLog: * Print stackdump to stderr instead of stdout.
nog. -------------- next part -------------- diff -upr --unidirectional-new-file ./cpu/or32/dyn_rec.c /home/nog/or1ksim-ac/cpu/or32/dyn_rec.c --- ./cpu/or32/dyn_rec.c 2005-07-05 06:18:33.000000000 +0200 +++ /home/nog/or1ksim-ac/cpu/or32/dyn_rec.c 2005-06-19 13:09:13.000000000 +0200 @@ -300,21 +300,21 @@ void dyn_sigsegv_debug(int u, siginfo_t if(!sigsegv_state) { sigsegv_addr = siginf->si_addr; } else { - printf("Nested SIGSEGV occured, dumping next chuck of info\n"); + fprintf(stderr, "Nested SIGSEGV occured, dumping next chuck of info\n"); sigsegv_state++; } /* First dump all the data that does not need dereferenceing to get */ switch(sigsegv_state) { case 0: - fflush(stdout); - printf("Segmentation fault at %p (or address: 0x%"PRIxADDR")\n\n", - sigsegv_addr, get_pc()); + fflush(stderr); + fprintf(stderr, "Segmentation fault on acces to %p (or address: 0x%"PRIxADDR")\n\n", + sigsegv_addr, get_pc()); sigsegv_state++; case 1: /* Run through the recompiled pages, dumping them to disk as we go */ for(dp = cpu_state.dyn_pages; dp; dp = dp->next) { - printf("Dumping%s page 0x%"PRIxADDR" recompiled to %p (len: %u) to disk\n", + fprintf(stderr, "Dumping%s page 0x%"PRIxADDR" recompiled to %p (len: %u) to disk\n", dp->dirty ? " dirty" : "", dp->or_page, dp->host_page, dp->host_len); fflush(stdout); @@ -334,25 +334,25 @@ void dyn_sigsegv_debug(int u, siginfo_t sigsegv_state++; case 2: /* Dump the contents of the stack */ - printf("Stack dump: "); - fflush(stdout); + fprintf(stderr, "Stack dump: "); + fflush(stderr); num_trace = backtrace(trace, 10); trace_names = backtrace_symbols(trace, num_trace); stack = get_sp(); - printf("(of stack at %p, base: %p)\n", stack, rec_stack_base); - fflush(stdout); + fprintf(stderr, "(of stack at %p, base: %p)\n", stack, rec_stack_base); + fflush(stderr); for(i = 0; stack < rec_stack_base; i++, stack += 4) { - printf(" <%i> 0x%08x", i, *(uint32_t *)stack); + fprintf(stderr, " <%i> 0x%08x", i, *(uint32_t *)stack); /* Try to find a symbolic name with this entry */ for(j = 0; j < num_trace; j++) { if(trace[j] == *(void **)stack) - printf(" <%s>", trace_names[j]); + fprintf(stderr, " <%s>", trace_names[j]); } - printf("\n"); - fflush(stdout); + fprintf(stderr, "\n"); + fflush(stderr); } sigsegv_state++; case 3:
|
 |