static int64_t sort__srcline_cmp(struct hist_entry *left, struct hist_entry *right) { if (!left->srcline) { if (!left->ms.map) left->srcline = SRCLINE_UNKNOWN; else { struct map *map = left->ms.map; left->srcline = get_srcline(map->dso, map__rip_2objdump(map, left->ip), left->ms.sym, true); } } if (!right->srcline) { if (!right->ms.map) right->srcline = SRCLINE_UNKNOWN; else { struct map *map = right->ms.map; right->srcline = get_srcline(map->dso, map__rip_2objdump(map, right->ip), right->ms.sym, true); } } return strcmp(right->srcline, left->srcline); }
int map__fprintf_srcline(struct map *map, u64 addr, const char *prefix, FILE *fp) { char *srcline; int ret = 0; if (map && map->dso) { srcline = get_srcline(map->dso, map__rip_2objdump(map, addr)); if (srcline != SRCLINE_UNKNOWN) ret = fprintf(fp, "%s%s", prefix, srcline); free_srcline(srcline); } return ret; }