mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 07:12:09 +00:00
perf annotate: Move line/offset into annotation_line struct
Move the line/line_nr/offset menbers to the annotation_line struct to be used as generic members for any annotation source. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Cc: Andi Kleen <andi@firstfloor.org> Cc: David Ahern <dsahern@gmail.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/20171011150158.11895-4-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
a17c4ca0dd
commit
d5490b9647
4 changed files with 54 additions and 52 deletions
|
@ -886,14 +886,15 @@ static struct disasm_line *disasm_line__new(s64 offset, char *line,
|
|||
struct disasm_line *dl = zalloc(sizeof(*dl) + privsize);
|
||||
|
||||
if (dl != NULL) {
|
||||
dl->offset = offset;
|
||||
dl->line = strdup(line);
|
||||
dl->line_nr = line_nr;
|
||||
if (dl->line == NULL)
|
||||
dl->al.offset = offset;
|
||||
dl->al.line = strdup(line);
|
||||
dl->al.line_nr = line_nr;
|
||||
|
||||
if (dl->al.line == NULL)
|
||||
goto out_delete;
|
||||
|
||||
if (offset != -1) {
|
||||
if (disasm_line__parse(dl->line, &dl->ins.name, &dl->ops.raw) < 0)
|
||||
if (disasm_line__parse(dl->al.line, &dl->ins.name, &dl->ops.raw) < 0)
|
||||
goto out_free_line;
|
||||
|
||||
disasm_line__init_ins(dl, arch, map);
|
||||
|
@ -903,7 +904,7 @@ static struct disasm_line *disasm_line__new(s64 offset, char *line,
|
|||
return dl;
|
||||
|
||||
out_free_line:
|
||||
zfree(&dl->line);
|
||||
zfree(&dl->al.line);
|
||||
out_delete:
|
||||
free(dl);
|
||||
return NULL;
|
||||
|
@ -911,7 +912,7 @@ out_delete:
|
|||
|
||||
void disasm_line__free(struct disasm_line *dl)
|
||||
{
|
||||
zfree(&dl->line);
|
||||
zfree(&dl->al.line);
|
||||
if (dl->ins.ops && dl->ins.ops->free)
|
||||
dl->ins.ops->free(&dl->ops);
|
||||
else
|
||||
|
@ -937,7 +938,7 @@ static void disasm__add(struct list_head *head, struct disasm_line *line)
|
|||
struct disasm_line *disasm__get_next_ip_line(struct list_head *head, struct disasm_line *pos)
|
||||
{
|
||||
list_for_each_entry_continue(pos, head, al.node)
|
||||
if (pos->offset >= 0)
|
||||
if (pos->al.offset >= 0)
|
||||
return pos;
|
||||
|
||||
return NULL;
|
||||
|
@ -1077,7 +1078,7 @@ static int disasm_line__print(struct disasm_line *dl, struct symbol *sym, u64 st
|
|||
static const char *prev_line;
|
||||
static const char *prev_color;
|
||||
|
||||
if (dl->offset != -1) {
|
||||
if (dl->al.offset != -1) {
|
||||
const char *path = NULL;
|
||||
double percent, max_percent = 0.0;
|
||||
double *ppercents = &percent;
|
||||
|
@ -1086,7 +1087,7 @@ static int disasm_line__print(struct disasm_line *dl, struct symbol *sym, u64 st
|
|||
int i, nr_percent = 1;
|
||||
const char *color;
|
||||
struct annotation *notes = symbol__annotation(sym);
|
||||
s64 offset = dl->offset;
|
||||
s64 offset = dl->al.offset;
|
||||
const u64 addr = start + offset;
|
||||
struct disasm_line *next;
|
||||
struct block_range *br;
|
||||
|
@ -1106,7 +1107,7 @@ static int disasm_line__print(struct disasm_line *dl, struct symbol *sym, u64 st
|
|||
percent = disasm__calc_percent(notes,
|
||||
notes->src->lines ? i : evsel->idx + i,
|
||||
offset,
|
||||
next ? next->offset : (s64) len,
|
||||
next ? next->al.offset : (s64) len,
|
||||
&path, &sample);
|
||||
|
||||
ppercents[i] = percent;
|
||||
|
@ -1165,7 +1166,7 @@ static int disasm_line__print(struct disasm_line *dl, struct symbol *sym, u64 st
|
|||
|
||||
br = block_range__find(addr);
|
||||
color_fprintf(stdout, annotate__address_color(br), " %" PRIx64 ":", addr);
|
||||
color_fprintf(stdout, annotate__asm_color(br), "%s", dl->line);
|
||||
color_fprintf(stdout, annotate__asm_color(br), "%s", dl->al.line);
|
||||
annotate__branch_printf(br, addr);
|
||||
printf("\n");
|
||||
|
||||
|
@ -1186,10 +1187,10 @@ static int disasm_line__print(struct disasm_line *dl, struct symbol *sym, u64 st
|
|||
if (perf_evsel__is_group_event(evsel))
|
||||
width *= evsel->nr_members;
|
||||
|
||||
if (!*dl->line)
|
||||
if (!*dl->al.line)
|
||||
printf(" %*s:\n", width, " ");
|
||||
else
|
||||
printf(" %*s: %s\n", width, " ", dl->line);
|
||||
printf(" %*s: %s\n", width, " ", dl->al.line);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -1311,9 +1312,9 @@ static void delete_last_nop(struct symbol *sym)
|
|||
if (dl->ins.ops != &nop_ops)
|
||||
return;
|
||||
} else {
|
||||
if (!strstr(dl->line, " nop ") &&
|
||||
!strstr(dl->line, " nopl ") &&
|
||||
!strstr(dl->line, " nopw "))
|
||||
if (!strstr(dl->al.line, " nop ") &&
|
||||
!strstr(dl->al.line, " nopl ") &&
|
||||
!strstr(dl->al.line, " nopw "))
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1921,10 +1922,10 @@ static size_t disasm_line__fprintf(struct disasm_line *dl, FILE *fp)
|
|||
{
|
||||
size_t printed;
|
||||
|
||||
if (dl->offset == -1)
|
||||
return fprintf(fp, "%s\n", dl->line);
|
||||
if (dl->al.offset == -1)
|
||||
return fprintf(fp, "%s\n", dl->al.line);
|
||||
|
||||
printed = fprintf(fp, "%#" PRIx64 " %s", dl->offset, dl->ins.name);
|
||||
printed = fprintf(fp, "%#" PRIx64 " %s", dl->al.offset, dl->ins.name);
|
||||
|
||||
if (dl->ops.raw[0] != '\0') {
|
||||
printed += fprintf(fp, "%.*s %s\n", 6 - (int)printed, " ",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue