Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/wolfpld/tracy.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBartosz Taudul <wolf.pld@gmail.com>2020-05-30 16:38:59 +0300
committerBartosz Taudul <wolf.pld@gmail.com>2020-05-30 16:38:59 +0300
commit54eb75b0633b5e1b3d4a1ff74f881993131e30ac (patch)
treec459184188fe236e76e1a70f46693556abc9255f /libbacktrace
parentff27656533e47a4d062100f8b6c0c3ff1ede5097 (diff)
Report symbol entry address in inline function discovery.
Diffstat (limited to 'libbacktrace')
-rw-r--r--libbacktrace/backtrace.hpp2
-rw-r--r--libbacktrace/dwarf.cpp14
2 files changed, 8 insertions, 8 deletions
diff --git a/libbacktrace/backtrace.hpp b/libbacktrace/backtrace.hpp
index 583421a7..f0c66a8f 100644
--- a/libbacktrace/backtrace.hpp
+++ b/libbacktrace/backtrace.hpp
@@ -95,7 +95,7 @@ extern struct backtrace_state *backtrace_create_state (
continuing tracing. The FILENAME and FUNCTION buffers may become
invalid after this function returns. */
-typedef int (*backtrace_full_callback) (void *data, uintptr_t pc,
+typedef int (*backtrace_full_callback) (void *data, uintptr_t pc, uintptr_t lowaddr,
const char *filename, int lineno,
const char *function);
diff --git a/libbacktrace/dwarf.cpp b/libbacktrace/dwarf.cpp
index a58d2aac..4543c1fe 100644
--- a/libbacktrace/dwarf.cpp
+++ b/libbacktrace/dwarf.cpp
@@ -3874,7 +3874,7 @@ report_inlined_functions (uintptr_t pc, struct function *function,
return ret;
/* Report this inlined call. */
- ret = callback (data, pc, *filename, *lineno, inlined->name);
+ ret = callback (data, pc, function_addrs->low, *filename, *lineno, inlined->name);
if (ret != 0)
return ret;
@@ -4026,7 +4026,7 @@ dwarf_lookup_pc (struct backtrace_state *state, struct dwarf_data *ddata,
if (new_data)
return dwarf_lookup_pc (state, ddata, pc, callback, error_callback,
data, found);
- return callback (data, pc, NULL, 0, NULL);
+ return callback (data, pc, 0, NULL, 0, NULL);
}
/* Search for PC within this unit. */
@@ -4073,13 +4073,13 @@ dwarf_lookup_pc (struct backtrace_state *state, struct dwarf_data *ddata,
entry->u->abs_filename = filename;
}
- return callback (data, pc, entry->u->abs_filename, 0, NULL);
+ return callback (data, pc, 0, entry->u->abs_filename, 0, NULL);
}
/* Search for function name within this unit. */
if (entry->u->function_addrs_count == 0)
- return callback (data, pc, ln->filename, ln->lineno, NULL);
+ return callback (data, pc, 0, ln->filename, ln->lineno, NULL);
function_addrs = ((struct function_addrs *)
bsearch (&pc, entry->u->function_addrs,
@@ -4087,7 +4087,7 @@ dwarf_lookup_pc (struct backtrace_state *state, struct dwarf_data *ddata,
sizeof (struct function_addrs),
function_addrs_search));
if (function_addrs == NULL)
- return callback (data, pc, ln->filename, ln->lineno, NULL);
+ return callback (data, pc, 0, ln->filename, ln->lineno, NULL);
/* If there are multiple function ranges that contain PC, use the
last one, in order to produce predictable results. */
@@ -4108,7 +4108,7 @@ dwarf_lookup_pc (struct backtrace_state *state, struct dwarf_data *ddata,
if (ret != 0)
return ret;
- return callback (data, pc, filename, lineno, function->name);
+ return callback (data, pc, function_addrs->low, filename, lineno, function->name);
}
@@ -4158,7 +4158,7 @@ dwarf_fileline (struct backtrace_state *state, uintptr_t pc,
/* FIXME: See if any libraries have been dlopen'ed. */
- return callback (data, pc, NULL, 0, NULL);
+ return callback (data, pc, 0, NULL, 0, NULL);
}
/* Initialize our data structures from the DWARF debug info for a