|
@@ -413,8 +413,13 @@ sort__sym_from_cmp(struct hist_entry *left, struct hist_entry *right)
|
|
|
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;
|
|
|
+ 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);
|
|
@@ -434,10 +439,14 @@ static int hist_entry__sym_from_snprintf(struct hist_entry *he, char *bf,
|
|
|
static int hist_entry__sym_to_snprintf(struct hist_entry *he, char *bf,
|
|
|
size_t size, unsigned int width)
|
|
|
{
|
|
|
- struct addr_map_symbol *to = &he->branch_info->to;
|
|
|
- return _hist_entry__sym_snprintf(to->map, to->sym, to->addr,
|
|
|
- he->level, bf, size, width);
|
|
|
+ if (he->branch_info) {
|
|
|
+ struct addr_map_symbol *to = &he->branch_info->to;
|
|
|
+
|
|
|
+ return _hist_entry__sym_snprintf(to->map, to->sym, to->addr,
|
|
|
+ he->level, bf, size, width);
|
|
|
+ }
|
|
|
|
|
|
+ return repsep_snprintf(bf, size, "%-*.*s", width, width, "N/A");
|
|
|
}
|
|
|
|
|
|
struct sort_entry sort_dso_from = {
|