resolve_sym_name() knows a number of symbols, but when one exactly matches
(e.g. a task's handler), it systematically displays the offset behind it
("+0"). Let's only show the offset when non-zero. This can be backported
as this is helpful for debugging.
* may have a close match. Otherwise we report an offset relative to main.
*/
if (best_idx >= 0) {
- chunk_appendf(buf, "%s+%#lx", fcts[best_idx].name, (long)best_dist);
+ chunk_appendf(buf, "%s", fcts[best_idx].name);
+ if (best_dist)
+ chunk_appendf(buf, "+%#lx", (long)best_dist);
return best_dist == 0 ? addr : NULL;
}
else if ((void*)addr < (void*)main)