in kernel/monad.hpp [291:335]
inline const string formatFrame(const char* const symbol) {
#ifdef __clang__
// Mac OS X CLang/LLVM stack frame format
// 0 kernel-test 0x000000010d440179 _ZN7tuscany9mkfailureINS_5valueENS_6stringEiEEKNS_8failableIT_T0_T1_EERKS5_RKS6_b + 265
char nb[3];
char file[256];
char addr[32];
char fun[256];
char offset[16];
if (sscanf(symbol, "%2s %255s %31s %255s %*[+] %15s", nb, file, addr, fun, offset) == 5) {
char buf[1024];
if (debug_islogging())
sprintf(buf, "%.255s %.31s %.511s + %.15s", formatFrameFile(file), addr, c_str(demangleFrame(fun)), offset);
else
sprintf(buf, "%.255s %.31s", formatFrameFile(file), addr);
return buf;
}
#else
// Linux GCC stack frame format
// ./kernel-test(_ZN7tuscany9mkfailureINS_5valueENS_6stringEiEEKNS_8failableIT_T0_T1_EERKS5_RKS6_b+0x23d) [0xb7197afd]
char file[256];
char fun[256];
char offset[16];
char addr[32];
if (sscanf(symbol, "%[^(]%*[(]%[^+]%*[+]%[^)]%*[)] %*[[]%[^]]%*[]]", file, fun, offset, addr) == 4) {
char buf[1024];
if (debug_islogging())
sprintf(buf, "%.255s %.31s %.511s + %.15s", formatFrameFile(file), addr, c_str(demangleFrame(fun)), offset);
else
sprintf(buf, "%.255s %.31s", formatFrameFile(file), addr);
return buf;
}
if (sscanf(symbol, "%[^(]%*[(]%*[^)]%*[)] %*[[]%[^]]%*[]]", file, addr) == 2) {
char buf[512];
sprintf(buf, "%.255s %.31s", formatFrameFile(file), addr);
return buf;
}
if (sscanf(symbol, "%[^(]%*[(]%*[)] %*[[]%[^]]%*[]]", file, addr) == 2) {
char buf[512];
sprintf(buf, "%.255s %.31s", formatFrameFile(file), addr);
return buf;
}
#endif
return symbol;
}