| Index: src/processor/basic_source_line_resolver.cc
|
| diff --git a/src/processor/basic_source_line_resolver.cc b/src/processor/basic_source_line_resolver.cc
|
| index 10dcb2763e89aa4bffdaa3ae6e4ed26177ccd3e3..d2862fc29d66343f0b6643135c37fbfc92aea142 100644
|
| --- a/src/processor/basic_source_line_resolver.cc
|
| +++ b/src/processor/basic_source_line_resolver.cc
|
| @@ -146,7 +146,8 @@ bool BasicSourceLineResolver::Module::LoadMapFromMemory(
|
| // StoreRange will fail if the function has an invalid address or size.
|
| // We'll silently ignore this, the function and any corresponding lines
|
| // will be destroyed when cur_func is released.
|
| - functions_.StoreRange(cur_func->address, cur_func->size, cur_func);
|
| + functions_.StoreRange(cur_func->address, 0 /* delta */, cur_func->size,
|
| + cur_func);
|
| }
|
| } else if (strncmp(buffer, "PUBLIC ", 7) == 0) {
|
| // Clear cur_func: public symbols don't contain line number information.
|
| @@ -175,7 +176,7 @@ bool BasicSourceLineResolver::Module::LoadMapFromMemory(
|
| if (!line) {
|
| LogParseError("ParseLine failed", line_number, &num_errors);
|
| } else {
|
| - cur_func->lines.StoreRange(line->address, line->size,
|
| + cur_func->lines.StoreRange(line->address, 0 /* delta */, line->size,
|
| linked_ptr<Line>(line));
|
| }
|
| }
|
| @@ -203,15 +204,15 @@ void BasicSourceLineResolver::Module::LookupAddress(StackFrame *frame) const {
|
| MemAddr function_base;
|
| MemAddr function_size;
|
| MemAddr public_address;
|
| - if (functions_.RetrieveNearestRange(address, &func,
|
| - &function_base, &function_size) &&
|
| + if (functions_.RetrieveNearestRange(address, &func, &function_base,
|
| + NULL /* delta */, &function_size) &&
|
| address >= function_base && address - function_base < function_size) {
|
| frame->function_name = func->name;
|
| frame->function_base = frame->module->base_address() + function_base;
|
|
|
| linked_ptr<Line> line;
|
| MemAddr line_base;
|
| - if (func->lines.RetrieveRange(address, &line, &line_base, NULL)) {
|
| + if (func->lines.RetrieveRange(address, &line, &line_base, NULL, NULL)) {
|
| FileMap::const_iterator it = files_.find(line->source_file_id);
|
| if (it != files_.end()) {
|
| frame->source_file_name = files_.find(line->source_file_id)->second;
|
| @@ -256,8 +257,8 @@ WindowsFrameInfo *BasicSourceLineResolver::Module::FindWindowsFrameInfo(
|
| // comparison in an overflow-friendly way.
|
| linked_ptr<Function> function;
|
| MemAddr function_base, function_size;
|
| - if (functions_.RetrieveNearestRange(address, &function,
|
| - &function_base, &function_size) &&
|
| + if (functions_.RetrieveNearestRange(address, &function, &function_base,
|
| + NULL /* delta */, &function_size) &&
|
| address >= function_base && address - function_base < function_size) {
|
| result->parameter_size = function->parameter_size;
|
| result->valid |= WindowsFrameInfo::VALID_PARAMETER_SIZE;
|
| @@ -286,8 +287,8 @@ CFIFrameInfo *BasicSourceLineResolver::Module::FindCFIFrameInfo(
|
| // provides an initial set of register recovery rules. Then, walk
|
| // forward from the initial rule's starting address to frame's
|
| // instruction address, applying delta rules.
|
| - if (!cfi_initial_rules_.RetrieveRange(address, &initial_rules,
|
| - &initial_base, &initial_size)) {
|
| + if (!cfi_initial_rules_.RetrieveRange(address, &initial_rules, &initial_base,
|
| + NULL /* delta */, &initial_size)) {
|
| return NULL;
|
| }
|
|
|
| @@ -449,7 +450,7 @@ bool BasicSourceLineResolver::Module::ParseCFIFrameInfo(
|
|
|
| MemAddr address = strtoul(address_field, NULL, 16);
|
| MemAddr size = strtoul(size_field, NULL, 16);
|
| - cfi_initial_rules_.StoreRange(address, size, initial_rules);
|
| + cfi_initial_rules_.StoreRange(address, 0 /* delta */, size, initial_rules);
|
| return true;
|
| }
|
|
|
| @@ -595,7 +596,7 @@ bool SymbolParseHelper::ParsePublicSymbol(char *public_line,
|
| *stack_param_size < 0) {
|
| return false;
|
| }
|
| - *name = tokens[2];
|
| + *name = tokens[2];
|
|
|
| return true;
|
| }
|
|
|