static int64_t sort__sym_cmp(struct hist_entry *left, struct hist_entry *right) { if (!left->ms.sym && !right->ms.sym) return right->level - left->level; return _sort__sym_cmp(left->ms.sym, right->ms.sym); }
static int64_t sort__sym_to_cmp(struct hist_entry *left, struct hist_entry *right) { struct addr_map_symbol *to_l = &left->branch_info->to; struct addr_map_symbol *to_r = &right->branch_info->to; if (!to_l->sym && !to_r->sym) return right->level - left->level; return _sort__sym_cmp(to_l->sym, to_r->sym, to_l->addr, to_r->addr); }
static int64_t sort__sym_from_cmp(struct hist_entry *left, struct hist_entry *right) { struct addr_map_symbol *from_l = &left->branch_info->from; struct addr_map_symbol *from_r = &right->branch_info->from; if (!from_l->sym && !from_r->sym) return right->level - left->level; return _sort__sym_cmp(from_l->sym, from_r->sym); }
static int64_t sort__sym_to_cmp(struct hist_entry *left, struct hist_entry *right) { struct addr_map_symbol *to_l, *to_r; if (!left->branch_info || !right->branch_info) return cmp_null(left->branch_info, right->branch_info); to_l = &left->branch_info->to; to_r = &right->branch_info->to; if (!to_l->sym && !to_r->sym) return _sort__addr_cmp(to_l->addr, to_r->addr); return _sort__sym_cmp(to_l->sym, to_r->sym); }
static int64_t sort__sym_from_cmp(struct hist_entry *left, struct hist_entry *right) { struct addr_map_symbol *from_l = &left->branch_info->from; struct addr_map_symbol *from_r = &right->branch_info->from; if (!left->branch_info || !right->branch_info) return cmp_null(left->branch_info, right->branch_info); from_l = &left->branch_info->from; from_r = &right->branch_info->from; if (!from_l->sym && !from_r->sym) return _sort__addr_cmp(from_l->addr, from_r->addr); return _sort__sym_cmp(from_l->sym, from_r->sym); }
static int64_t sort__sym_cmp(struct hist_entry *left, struct hist_entry *right) { u64 ip_l, ip_r; if (!left->ms.sym && !right->ms.sym) return right->level - left->level; if (!left->ms.sym || !right->ms.sym) return cmp_null(left->ms.sym, right->ms.sym); if (left->ms.sym == right->ms.sym) return 0; ip_l = left->ms.sym->start; ip_r = right->ms.sym->start; return _sort__sym_cmp(left->ms.sym, right->ms.sym, ip_l, ip_r); }
static int64_t sort__sym_cmp(struct hist_entry *left, struct hist_entry *right) { int64_t ret; if (!left->ms.sym && !right->ms.sym) return _sort__addr_cmp(left->ip, right->ip); /* * comparing symbol address alone is not enough since it's a * relative address within a dso. */ if (!sort__has_dso) { ret = sort__dso_cmp(left, right); if (ret != 0) return ret; } return _sort__sym_cmp(left->ms.sym, right->ms.sym); }