32 lines
751 B
C++
32 lines
751 B
C++
#include "symbol.h"
|
|
|
|
symbol_parser g_symbol_parser;
|
|
|
|
bool symbol_parser::find_vma(pid_t pid, vma &vm)
|
|
{
|
|
std::map<int, proc_vma>::iterator proc_vma_map;
|
|
|
|
proc_vma_map = machine_vma.find(pid);
|
|
if (proc_vma_map == machine_vma.end()) {
|
|
return false;
|
|
}
|
|
|
|
proc_vma::const_iterator vma_iter = proc_vma_map->second.upper_bound(vm.pc);
|
|
if (vma_iter == proc_vma_map->second.end()) {
|
|
return false;
|
|
}
|
|
if (vma_iter->second.end < vm.pc) {
|
|
return false;
|
|
}
|
|
|
|
if (vma_iter != proc_vma_map->second.begin()) {
|
|
--vma_iter;
|
|
}
|
|
|
|
vm.start = vma_iter->second.start;
|
|
vm.end = vma_iter->second.end;
|
|
vm.name = vma_iter->second.name;
|
|
vm.offset = vma_iter->second.offset;
|
|
|
|
return true;
|
|
} |