diff options
Diffstat (limited to 'tools/perf/ui/browsers/annotate.c')
| -rw-r--r-- | tools/perf/ui/browsers/annotate.c | 27 | 
1 files changed, 24 insertions, 3 deletions
diff --git a/tools/perf/ui/browsers/annotate.c b/tools/perf/ui/browsers/annotate.c index 35b82caf8090..ad0a70f0edaf 100644 --- a/tools/perf/ui/browsers/annotate.c +++ b/tools/perf/ui/browsers/annotate.c @@ -381,6 +381,25 @@ static bool annotate_browser__toggle_source(struct annotate_browser *browser)  	return true;  } +#define SYM_TITLE_MAX_SIZE (PATH_MAX + 64) + +static void annotate_browser__show_full_location(struct ui_browser *browser) +{ +	struct annotate_browser *ab = container_of(browser, struct annotate_browser, b); +	struct disasm_line *cursor = disasm_line(ab->selection); +	struct annotation_line *al = &cursor->al; + +	if (al->offset != -1) +		ui_helpline__puts("Only available for source code lines."); +	else if (al->fileloc == NULL) +		ui_helpline__puts("No source file location."); +	else { +		char help_line[SYM_TITLE_MAX_SIZE]; +		sprintf (help_line, "Source file location: %s", al->fileloc); +		ui_helpline__puts(help_line); +	} +} +  static void ui_browser__init_asm_mode(struct ui_browser *browser)  {  	struct annotation *notes = browser__annotation(browser); @@ -388,8 +407,6 @@ static void ui_browser__init_asm_mode(struct ui_browser *browser)  	browser->nr_entries = notes->nr_asm_entries;  } -#define SYM_TITLE_MAX_SIZE (PATH_MAX + 64) -  static int sym_title(struct symbol *sym, struct map *map, char *title,  		     size_t sz, int percent_type)  { @@ -398,7 +415,7 @@ static int sym_title(struct symbol *sym, struct map *map, char *title,  }  /* - * This can be called from external jumps, i.e. jumps from one functon + * This can be called from external jumps, i.e. jumps from one function   * to another, like from the kernel's entry_SYSCALL_64 function to the   * swapgs_restore_regs_and_return_to_usermode() function.   * @@ -747,6 +764,7 @@ static int annotate_browser__run(struct annotate_browser *browser,  		"c             Show min/max cycle\n"  		"/             Search string\n"  		"k             Toggle line numbers\n" +		"l             Show full source file location\n"  		"P             Print to [symbol_name].annotation file.\n"  		"r             Run available scripts\n"  		"p             Toggle percent type [local/global]\n" @@ -760,6 +778,9 @@ static int annotate_browser__run(struct annotate_browser *browser,  		case 'k':  			notes->options->show_linenr = !notes->options->show_linenr;  			continue; +		case 'l': +			annotate_browser__show_full_location (&browser->b); +			continue;  		case 'H':  			nd = browser->curr_hot;  			break;  |