void *malloc(size_t size) { Scope scope; void *ret = sOriginalMalloc(size); if (sEnable) { sEnable = false; time_t time; FILE *f = file(time); fprintf(f, "%ld malloc %p %d ", time, ret, static_cast<int>(size)); DUMP_STACK(); sEnable = true; } return ret; }
void free(void *ptr) { Scope scope; if (ptr) { sOriginalFree(ptr); if (sEnable) { sEnable = false; time_t time; FILE *f = file(time); fprintf(f, "%ld free %p ", time, ptr); DUMP_STACK(); sEnable = true; } } }
static void internal_logger(int type, const char *domain, const char *msg) { if(domain) fprintf(stderr, "[%s] %s", domain, msg); else fprintf(stderr, "%s", msg); if(type == EDELIB_ERROR_MESSAGE_FATAL) { /* * glibc redefined stderr pointing it to internal IO struct, so here is used * good-old-defalut-normal-every_one_use_it alias for it. Yuck! */ DUMP_STACK(stderr, 2); abort(); } }
void crash(avr_t* avr) { DUMP_REG(); printf("*** CYCLE %" PRI_avr_cycle_count "PC %04x\n", avr->cycle, avr->pc); for (int i = OLD_PC_SIZE-1; i > 0; i--) { int pci = (avr->trace_data->old_pci + i) & 0xf; printf(FONT_RED "*** %04x: %-25s RESET -%d; sp %04x\n" FONT_DEFAULT, avr->trace_data->old[pci].pc, avr->trace_data->codeline ? avr->trace_data->codeline[avr->trace_data->old[pci].pc>>1]->symbol : "unknown", OLD_PC_SIZE-i, avr->trace_data->old[pci].sp); } printf("Stack Ptr %04x/%04x = %d \n", _avr_sp_get(avr), avr->ramend, avr->ramend - _avr_sp_get(avr)); DUMP_STACK(); avr_sadly_crashed(avr, 0); }
void *realloc(void *ptr, size_t size) { Scope scope; void *ret = sOriginalRealloc(ptr, size); if (sEnable) { sEnable = false; time_t time; FILE *f = file(time); if (ptr) { fprintf(f, "%ld realloc %p => %p %d ", time, ptr, ret, static_cast<int>(size)); } else { fprintf(f, "%ld realloc 0x0 => %p %d ", time, ret, static_cast<int>(size)); } DUMP_STACK(); sEnable = true; } return ret; }
::std::ostream &LLCCEP_debugger::debugCore::callStackDump(::std::ostream &out) const { DUMP_STACK(out, "Call stack", softcore::call); return out; }