Commit 782cdc37 authored by Namhyung Kim's avatar Namhyung Kim Committed by Wentao Guan
Browse files

perf annotate: Move some source code related fields from 'struct annotation'...

perf annotate: Move some source code related fields from 'struct annotation' to 'struct annotated_source'

stable inclusion
from stable-v6.6.54
commit 4c857dcf34a5e642e70dd64b4254d15248ad2096
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/IAZ3K2

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=4c857dcf34a5e642e70dd64b4254d15248ad2096



--------------------------------

[ Upstream commit 0aae4c99c5f8f748c6cb5ca03bb3b3ae8cfb10df ]

Some fields in the 'struct annotation' are only used with 'struct
annotated_source' so better to be moved there in order to reduce memory
consumption for other symbols.

Reviewed-by: default avatarIan Rogers <irogers@google.com>
Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/20231103191907.54531-5-namhyung@kernel.org


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
Stable-dep-of: 3ef44458071a ("perf report: Fix --total-cycles --stdio output error")
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
(cherry picked from commit 4c857dcf34a5e642e70dd64b4254d15248ad2096)
Signed-off-by: default avatarWentao Guan <guanwentao@uniontech.com>
parent 0ae82a8e
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -384,7 +384,7 @@ static bool annotate_browser__toggle_source(struct annotate_browser *browser)
		if (al->idx_asm < offset)
			offset = al->idx;

		browser->b.nr_entries = notes->nr_entries;
		browser->b.nr_entries = notes->src->nr_entries;
		notes->options->hide_src_code = false;
		browser->b.seek(&browser->b, -offset, SEEK_CUR);
		browser->b.top_idx = al->idx - offset;
@@ -402,7 +402,7 @@ static bool annotate_browser__toggle_source(struct annotate_browser *browser)
		if (al->idx_asm < offset)
			offset = al->idx_asm;

		browser->b.nr_entries = notes->nr_asm_entries;
		browser->b.nr_entries = notes->src->nr_asm_entries;
		notes->options->hide_src_code = true;
		browser->b.seek(&browser->b, -offset, SEEK_CUR);
		browser->b.top_idx = al->idx_asm - offset;
@@ -435,7 +435,7 @@ static void ui_browser__init_asm_mode(struct ui_browser *browser)
{
	struct annotation *notes = browser__annotation(browser);
	ui_browser__reset_index(browser);
	browser->nr_entries = notes->nr_asm_entries;
	browser->nr_entries = notes->src->nr_asm_entries;
}

static int sym_title(struct symbol *sym, struct map *map, char *title,
@@ -860,7 +860,7 @@ static int annotate_browser__run(struct annotate_browser *browser,
					   browser->b.height,
					   browser->b.index,
					   browser->b.top_idx,
					   notes->nr_asm_entries);
					   notes->src->nr_asm_entries);
		}
			continue;
		case K_ENTER:
@@ -991,8 +991,8 @@ int symbol__tui_annotate(struct map_symbol *ms, struct evsel *evsel,

	ui_helpline__push("Press ESC to exit");

	browser.b.width = notes->max_line_len;
	browser.b.nr_entries = notes->nr_entries;
	browser.b.width = notes->src->max_line_len;
	browser.b.nr_entries = notes->src->nr_entries;
	browser.b.entries = &notes->src->source,
	browser.b.width += 18; /* Percentage */

+9 −8
Original line number Diff line number Diff line
@@ -2828,19 +2828,20 @@ void annotation__mark_jump_targets(struct annotation *notes, struct symbol *sym)
void annotation__set_offsets(struct annotation *notes, s64 size)
{
	struct annotation_line *al;
	struct annotated_source *src = notes->src;

	notes->max_line_len = 0;
	notes->nr_entries = 0;
	notes->nr_asm_entries = 0;
	src->max_line_len = 0;
	src->nr_entries = 0;
	src->nr_asm_entries = 0;

	list_for_each_entry(al, &notes->src->source, node) {
	list_for_each_entry(al, &src->source, node) {
		size_t line_len = strlen(al->line);

		if (notes->max_line_len < line_len)
			notes->max_line_len = line_len;
		al->idx = notes->nr_entries++;
		if (src->max_line_len < line_len)
			src->max_line_len = line_len;
		al->idx = src->nr_entries++;
		if (al->offset != -1) {
			al->idx_asm = notes->nr_asm_entries++;
			al->idx_asm = src->nr_asm_entries++;
			/*
			 * FIXME: short term bandaid to cope with assembly
			 * routines that comes with labels in the same column
+7 −7
Original line number Diff line number Diff line
@@ -270,9 +270,12 @@ struct cyc_hist {
 */
struct annotated_source {
	struct list_head	source;
	int    		   nr_histograms;
	size_t			sizeof_sym_hist;
	struct sym_hist		*histograms;
	int    			nr_histograms;
	int			nr_entries;
	int			nr_asm_entries;
	u16			max_line_len;
};

struct annotated_branch {
@@ -290,9 +293,6 @@ struct LOCKABLE annotation {
	struct annotation_line	**offsets;
	int			nr_events;
	int			max_jump_sources;
	int			nr_entries;
	int			nr_asm_entries;
	u16			max_line_len;
	struct {
		u8		addr;
		u8		jumps;