|
@@ -41,6 +41,7 @@ static size_t ipchain__fprintf_graph(FILE *fp, struct callchain_list *chain,
|
|
{
|
|
{
|
|
int i;
|
|
int i;
|
|
size_t ret = 0;
|
|
size_t ret = 0;
|
|
|
|
+ char bf[1024];
|
|
|
|
|
|
ret += callchain__fprintf_left_margin(fp, left_margin);
|
|
ret += callchain__fprintf_left_margin(fp, left_margin);
|
|
for (i = 0; i < depth; i++) {
|
|
for (i = 0; i < depth; i++) {
|
|
@@ -56,11 +57,8 @@ static size_t ipchain__fprintf_graph(FILE *fp, struct callchain_list *chain,
|
|
} else
|
|
} else
|
|
ret += fprintf(fp, "%s", " ");
|
|
ret += fprintf(fp, "%s", " ");
|
|
}
|
|
}
|
|
- if (chain->ms.sym)
|
|
|
|
- ret += fprintf(fp, "%s\n", chain->ms.sym->name);
|
|
|
|
- else
|
|
|
|
- ret += fprintf(fp, "0x%0" PRIx64 "\n", chain->ip);
|
|
|
|
-
|
|
|
|
|
|
+ fputs(callchain_list__sym_name(chain, bf, sizeof(bf), false), fp);
|
|
|
|
+ fputc('\n', fp);
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -168,6 +166,7 @@ static size_t callchain__fprintf_graph(FILE *fp, struct rb_root *root,
|
|
struct rb_node *node;
|
|
struct rb_node *node;
|
|
int i = 0;
|
|
int i = 0;
|
|
int ret = 0;
|
|
int ret = 0;
|
|
|
|
+ char bf[1024];
|
|
|
|
|
|
/*
|
|
/*
|
|
* If have one single callchain root, don't bother printing
|
|
* If have one single callchain root, don't bother printing
|
|
@@ -196,10 +195,8 @@ static size_t callchain__fprintf_graph(FILE *fp, struct rb_root *root,
|
|
} else
|
|
} else
|
|
ret += callchain__fprintf_left_margin(fp, left_margin);
|
|
ret += callchain__fprintf_left_margin(fp, left_margin);
|
|
|
|
|
|
- if (chain->ms.sym)
|
|
|
|
- ret += fprintf(fp, " %s\n", chain->ms.sym->name);
|
|
|
|
- else
|
|
|
|
- ret += fprintf(fp, " %p\n", (void *)(long)chain->ip);
|
|
|
|
|
|
+ ret += fprintf(fp, "%s\n", callchain_list__sym_name(chain, bf, sizeof(bf),
|
|
|
|
+ false));
|
|
|
|
|
|
if (++entries_printed == callchain_param.print_limit)
|
|
if (++entries_printed == callchain_param.print_limit)
|
|
break;
|
|
break;
|
|
@@ -219,6 +216,7 @@ static size_t __callchain__fprintf_flat(FILE *fp, struct callchain_node *node,
|
|
{
|
|
{
|
|
struct callchain_list *chain;
|
|
struct callchain_list *chain;
|
|
size_t ret = 0;
|
|
size_t ret = 0;
|
|
|
|
+ char bf[1024];
|
|
|
|
|
|
if (!node)
|
|
if (!node)
|
|
return 0;
|
|
return 0;
|
|
@@ -229,11 +227,8 @@ static size_t __callchain__fprintf_flat(FILE *fp, struct callchain_node *node,
|
|
list_for_each_entry(chain, &node->val, list) {
|
|
list_for_each_entry(chain, &node->val, list) {
|
|
if (chain->ip >= PERF_CONTEXT_MAX)
|
|
if (chain->ip >= PERF_CONTEXT_MAX)
|
|
continue;
|
|
continue;
|
|
- if (chain->ms.sym)
|
|
|
|
- ret += fprintf(fp, " %s\n", chain->ms.sym->name);
|
|
|
|
- else
|
|
|
|
- ret += fprintf(fp, " %p\n",
|
|
|
|
- (void *)(long)chain->ip);
|
|
|
|
|
|
+ ret += fprintf(fp, " %s\n", callchain_list__sym_name(chain,
|
|
|
|
+ bf, sizeof(bf), false));
|
|
}
|
|
}
|
|
|
|
|
|
return ret;
|
|
return ret;
|