static void panic ( Char* name, Char* report, Char* str, UnwindStartRegs* startRegs ) { if (VG_(clo_xml)) VG_(printf_xml)("</valgrindoutput>\n"); VG_(printf)("\n%s: the 'impossible' happened:\n %s\n", name, str); report_and_quit(report, startRegs); }
static void panic ( Char* name, Char* report, Char* str, Addr ip, Addr sp, Addr fp, Addr lr ) { if (VG_(clo_xml)) VG_(message)(Vg_UserMsg, "</valgrindoutput>\n"); VG_(printf)("\n%s: the 'impossible' happened:\n %s\n", name, str); report_and_quit(report, ip, sp, fp, lr); }
void VG_(assert_fail) ( Bool isCore, const HChar* expr, const HChar* file, Int line, const HChar* fn, const HChar* format, ... ) { va_list vargs, vargs_copy; const HChar* component; const HChar* bugs_to; UInt written; static Bool entered = False; if (entered) VG_(exit)(2); entered = True; if (isCore) { component = "valgrind"; bugs_to = VG_BUGS_TO; } else { component = VG_(details).name; bugs_to = VG_(details).bug_reports_to; } if (VG_(clo_xml)) VG_(printf_xml)("</valgrindoutput>\n"); // Treat vg_assert2(0, "foo") specially, as a panicky abort if (VG_STREQ(expr, "0")) { VG_(printf)("\n%s: %s:%d (%s): the 'impossible' happened.\n", component, file, line, fn ); } else { VG_(printf)("\n%s: %s:%d (%s): Assertion '%s' failed.\n", component, file, line, fn, expr ); } /* Check whether anything will be written */ HChar buf[5]; va_start(vargs, format); va_copy(vargs_copy, vargs); written = VG_(vsnprintf) ( buf, sizeof(buf), format, vargs ); va_end(vargs); if (written > 0) { VG_(printf)("%s: ", component); VG_(vprintf)(format, vargs_copy); VG_(printf)("\n"); } report_and_quit(bugs_to, NULL); }
void VG_(assert_fail) ( Bool isCore, const HChar* expr, const HChar* file, Int line, const HChar* fn, const HChar* format, ... ) { va_list vargs; HChar buf[512]; const HChar* component; const HChar* bugs_to; UInt written; static Bool entered = False; if (entered) VG_(exit)(2); entered = True; va_start(vargs, format); written = VG_(vsnprintf) ( buf, sizeof(buf), format, vargs ); va_end(vargs); if (written >= sizeof(buf)) { VG_(printf)("\nvalgrind: %s: buf is too small, sizeof(buf) = %u, " "written = %d\n", __func__, (unsigned)sizeof(buf), written); } if (isCore) { component = "valgrind"; bugs_to = VG_BUGS_TO; } else { component = VG_(details).name; bugs_to = VG_(details).bug_reports_to; } if (VG_(clo_xml)) VG_(printf_xml)("</valgrindoutput>\n"); // Treat vg_assert2(0, "foo") specially, as a panicky abort if (VG_STREQ(expr, "0")) { VG_(printf)("\n%s: %s:%d (%s): the 'impossible' happened.\n", component, file, line, fn ); } else { VG_(printf)("\n%s: %s:%d (%s): Assertion '%s' failed.\n", component, file, line, fn, expr ); } if (!VG_STREQ(buf, "")) VG_(printf)("%s: %s\n", component, buf ); report_and_quit(bugs_to, NULL); }
void VG_(assert_fail) ( Bool isCore, const Char* expr, const Char* file, Int line, const Char* fn, const HChar* format, ... ) { va_list vargs; Char buf[256]; Char* component; Char* bugs_to; static Bool entered = False; if (entered) VG_(exit)(2); entered = True; va_start(vargs, format); VG_(vsprintf) ( buf, format, vargs ); va_end(vargs); if (isCore) { component = "valgrind"; bugs_to = VG_BUGS_TO; } else { component = VG_(details).name; bugs_to = VG_(details).bug_reports_to; } if (VG_(clo_xml)) VG_(message)(Vg_UserMsg, "</valgrindoutput>\n"); // Treat vg_assert2(0, "foo") specially, as a panicky abort if (VG_STREQ(expr, "0")) { VG_(printf)("\n%s: %s:%d (%s): the 'impossible' happened.\n", component, file, line, fn, expr ); } else { VG_(printf)("\n%s: %s:%d (%s): Assertion '%s' failed.\n", component, file, line, fn, expr ); } if (!VG_STREQ(buf, "")) VG_(printf)("%s: %s\n", component, buf ); report_and_quit(bugs_to, 0,0,0,0); }