|
|
@ -332,7 +332,9 @@ mrw::StackTrace::BinFiles mrw::StackTrace::filename() |
|
|
|
std::string range, perm, x1, x2, size, lib; |
|
|
|
std::string range, perm, x1, x2, size, lib; |
|
|
|
while (getline(is, s)) try { |
|
|
|
while (getline(is, s)) try { |
|
|
|
range = perm = x1 = x2 = size = lib = "????"; |
|
|
|
range = perm = x1 = x2 = size = lib = "????"; |
|
|
|
s>>range>>perm>>x1>>x2>>size>>lib; |
|
|
|
s>>range>>perm>>x1>>x2>>size; |
|
|
|
|
|
|
|
if (mrw::to<int>(size)>0) { |
|
|
|
|
|
|
|
s>>lib; |
|
|
|
range.resize(range.find_first_not_of("0123456789abcdefABCDEF")); |
|
|
|
range.resize(range.find_first_not_of("0123456789abcdefABCDEF")); |
|
|
|
void* addr(0); |
|
|
|
void* addr(0); |
|
|
|
range>>addr; |
|
|
|
range>>addr; |
|
|
@ -341,6 +343,7 @@ mrw::StackTrace::BinFiles mrw::StackTrace::filename() |
|
|
|
// question: should only files with ending '.so' be loaded?
|
|
|
|
// question: should only files with ending '.so' be loaded?
|
|
|
|
if (lib.size() && lib[0]!='[' && lib[lib.size()-1]!=']' && addr>0) |
|
|
|
if (lib.size() && lib[0]!='[' && lib[lib.size()-1]!=']' && addr>0) |
|
|
|
res<<BinFiles::value_type(lib, addr); |
|
|
|
res<<BinFiles::value_type(lib, addr); |
|
|
|
|
|
|
|
} |
|
|
|
} catch (...) {} // ignore non matching lines
|
|
|
|
} catch (...) {} // ignore non matching lines
|
|
|
|
return res; |
|
|
|
return res; |
|
|
|
} |
|
|
|
} |
|
|
|