|
@@ -1543,16 +1543,12 @@ int debuginfo__find_probe_point(struct debuginfo *dbg, unsigned long addr,
|
|
Dwarf_Addr _addr = 0, baseaddr = 0;
|
|
Dwarf_Addr _addr = 0, baseaddr = 0;
|
|
const char *fname = NULL, *func = NULL, *basefunc = NULL, *tmp;
|
|
const char *fname = NULL, *func = NULL, *basefunc = NULL, *tmp;
|
|
int baseline = 0, lineno = 0, ret = 0;
|
|
int baseline = 0, lineno = 0, ret = 0;
|
|
- bool reloc = false;
|
|
|
|
|
|
|
|
-retry:
|
|
|
|
|
|
+ /* We always need to relocate the address for aranges */
|
|
|
|
+ if (debuginfo__get_text_offset(dbg, &baseaddr) == 0)
|
|
|
|
+ addr += baseaddr;
|
|
/* Find cu die */
|
|
/* Find cu die */
|
|
if (!dwarf_addrdie(dbg->dbg, (Dwarf_Addr)addr, &cudie)) {
|
|
if (!dwarf_addrdie(dbg->dbg, (Dwarf_Addr)addr, &cudie)) {
|
|
- if (!reloc && debuginfo__get_text_offset(dbg, &baseaddr) == 0) {
|
|
|
|
- addr += baseaddr;
|
|
|
|
- reloc = true;
|
|
|
|
- goto retry;
|
|
|
|
- }
|
|
|
|
pr_warning("Failed to find debug information for address %lx\n",
|
|
pr_warning("Failed to find debug information for address %lx\n",
|
|
addr);
|
|
addr);
|
|
ret = -EINVAL;
|
|
ret = -EINVAL;
|