annotate.c (728d90bdc9e480dc93913e59a0aa3c896c7aa697) | annotate.c (2975489458c59ce2e348b1b3aef5d8d2acb5cc8d) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 2#include "gtk.h" 3#include "util/sort.h" 4#include "util/debug.h" 5#include "util/annotate.h" 6#include "util/evsel.h" 7#include "util/map.h" 8#include "util/dso.h" --- 40 unchanged lines hidden (view full) --- 49 ret += scnprintf(buf, size, "%s", markup); 50 ret += scnprintf(buf + ret, size - ret, "%6.2f%%", percent); 51 if (markup) 52 ret += scnprintf(buf + ret, size - ret, "</span>"); 53 54 return ret; 55} 56 | 1// SPDX-License-Identifier: GPL-2.0 2#include "gtk.h" 3#include "util/sort.h" 4#include "util/debug.h" 5#include "util/annotate.h" 6#include "util/evsel.h" 7#include "util/map.h" 8#include "util/dso.h" --- 40 unchanged lines hidden (view full) --- 49 ret += scnprintf(buf, size, "%s", markup); 50 ret += scnprintf(buf + ret, size - ret, "%6.2f%%", percent); 51 if (markup) 52 ret += scnprintf(buf + ret, size - ret, "</span>"); 53 54 return ret; 55} 56 |
57static int perf_gtk__get_offset(char *buf, size_t size, struct symbol *sym, 58 struct map *map, struct disasm_line *dl) | 57static int perf_gtk__get_offset(char *buf, size_t size, struct map_symbol *ms, 58 struct disasm_line *dl) |
59{ | 59{ |
60 u64 start = map__rip_2objdump(map, sym->start); | 60 u64 start = map__rip_2objdump(ms->map, ms->sym->start); |
61 62 strcpy(buf, ""); 63 64 if (dl->al.offset == (s64) -1) 65 return 0; 66 67 return scnprintf(buf, size, "%"PRIx64, start + dl->al.offset); 68} --- 17 unchanged lines hidden (view full) --- 86 ret += scnprintf(buf + ret, size - ret, "%s", line); 87 if (markup) 88 ret += scnprintf(buf + ret, size - ret, "</span>"); 89 90 g_free(line); 91 return ret; 92} 93 | 61 62 strcpy(buf, ""); 63 64 if (dl->al.offset == (s64) -1) 65 return 0; 66 67 return scnprintf(buf, size, "%"PRIx64, start + dl->al.offset); 68} --- 17 unchanged lines hidden (view full) --- 86 ret += scnprintf(buf + ret, size - ret, "%s", line); 87 if (markup) 88 ret += scnprintf(buf + ret, size - ret, "</span>"); 89 90 g_free(line); 91 return ret; 92} 93 |
94static int perf_gtk__annotate_symbol(GtkWidget *window, struct symbol *sym, 95 struct map *map, struct evsel *evsel, | 94static int perf_gtk__annotate_symbol(GtkWidget *window, struct map_symbol *ms, 95 struct evsel *evsel, |
96 struct hist_browser_timer *hbt __maybe_unused) 97{ | 96 struct hist_browser_timer *hbt __maybe_unused) 97{ |
98 struct symbol *sym = ms->sym; |
|
98 struct disasm_line *pos, *n; 99 struct annotation *notes; 100 GType col_types[MAX_ANN_COLS]; 101 GtkCellRenderer *renderer; 102 GtkListStore *store; 103 GtkWidget *view; 104 int i; 105 char s[512]; --- 33 unchanged lines hidden (view full) --- 139 } 140 } else { 141 ret = perf_gtk__get_percent(s, sizeof(s), sym, pos, 142 evsel->idx); 143 } 144 145 if (ret) 146 gtk_list_store_set(store, &iter, ANN_COL__PERCENT, s, -1); | 99 struct disasm_line *pos, *n; 100 struct annotation *notes; 101 GType col_types[MAX_ANN_COLS]; 102 GtkCellRenderer *renderer; 103 GtkListStore *store; 104 GtkWidget *view; 105 int i; 106 char s[512]; --- 33 unchanged lines hidden (view full) --- 140 } 141 } else { 142 ret = perf_gtk__get_percent(s, sizeof(s), sym, pos, 143 evsel->idx); 144 } 145 146 if (ret) 147 gtk_list_store_set(store, &iter, ANN_COL__PERCENT, s, -1); |
147 if (perf_gtk__get_offset(s, sizeof(s), sym, map, pos)) | 148 if (perf_gtk__get_offset(s, sizeof(s), ms, pos)) |
148 gtk_list_store_set(store, &iter, ANN_COL__OFFSET, s, -1); 149 if (perf_gtk__get_line(s, sizeof(s), pos)) 150 gtk_list_store_set(store, &iter, ANN_COL__LINE, s, -1); 151 } 152 153 gtk_container_add(GTK_CONTAINER(window), view); 154 155 list_for_each_entry_safe(pos, n, ¬es->src->source, al.node) { 156 list_del_init(&pos->al.node); 157 disasm_line__free(pos); 158 } 159 160 return 0; 161} 162 | 149 gtk_list_store_set(store, &iter, ANN_COL__OFFSET, s, -1); 150 if (perf_gtk__get_line(s, sizeof(s), pos)) 151 gtk_list_store_set(store, &iter, ANN_COL__LINE, s, -1); 152 } 153 154 gtk_container_add(GTK_CONTAINER(window), view); 155 156 list_for_each_entry_safe(pos, n, ¬es->src->source, al.node) { 157 list_del_init(&pos->al.node); 158 disasm_line__free(pos); 159 } 160 161 return 0; 162} 163 |
163static int symbol__gtk_annotate(struct symbol *sym, struct map *map, 164 struct evsel *evsel, | 164static int symbol__gtk_annotate(struct map_symbol *ms, struct evsel *evsel, |
165 struct hist_browser_timer *hbt) 166{ | 165 struct hist_browser_timer *hbt) 166{ |
167 struct symbol *sym = ms->sym; |
|
167 GtkWidget *window; 168 GtkWidget *notebook; 169 GtkWidget *scrolled_window; 170 GtkWidget *tab_label; 171 int err; 172 | 168 GtkWidget *window; 169 GtkWidget *notebook; 170 GtkWidget *scrolled_window; 171 GtkWidget *tab_label; 172 int err; 173 |
173 if (map->dso->annotate_warned) | 174 if (ms->map->dso->annotate_warned) |
174 return -1; 175 | 175 return -1; 176 |
176 err = symbol__annotate(sym, map, evsel, 0, &annotation__default_options, NULL); | 177 err = symbol__annotate(ms, evsel, 0, &annotation__default_options, NULL); |
177 if (err) { 178 char msg[BUFSIZ]; | 178 if (err) { 179 char msg[BUFSIZ]; |
179 symbol__strerror_disassemble(sym, map, err, msg, sizeof(msg)); | 180 symbol__strerror_disassemble(ms, err, msg, sizeof(msg)); |
180 ui__error("Couldn't annotate %s: %s\n", sym->name, msg); 181 return -1; 182 } 183 184 symbol__calc_percent(sym, evsel); 185 186 if (perf_gtk__is_active_context(pgctx)) { 187 window = pgctx->main_window; --- 41 unchanged lines hidden (view full) --- 229 230 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window), 231 GTK_POLICY_AUTOMATIC, 232 GTK_POLICY_AUTOMATIC); 233 234 gtk_notebook_append_page(GTK_NOTEBOOK(notebook), scrolled_window, 235 tab_label); 236 | 181 ui__error("Couldn't annotate %s: %s\n", sym->name, msg); 182 return -1; 183 } 184 185 symbol__calc_percent(sym, evsel); 186 187 if (perf_gtk__is_active_context(pgctx)) { 188 window = pgctx->main_window; --- 41 unchanged lines hidden (view full) --- 230 231 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window), 232 GTK_POLICY_AUTOMATIC, 233 GTK_POLICY_AUTOMATIC); 234 235 gtk_notebook_append_page(GTK_NOTEBOOK(notebook), scrolled_window, 236 tab_label); 237 |
237 perf_gtk__annotate_symbol(scrolled_window, sym, map, evsel, hbt); | 238 perf_gtk__annotate_symbol(scrolled_window, ms, evsel, hbt); |
238 return 0; 239} 240 241int hist_entry__gtk_annotate(struct hist_entry *he, 242 struct evsel *evsel, 243 struct hist_browser_timer *hbt) 244{ | 239 return 0; 240} 241 242int hist_entry__gtk_annotate(struct hist_entry *he, 243 struct evsel *evsel, 244 struct hist_browser_timer *hbt) 245{ |
245 return symbol__gtk_annotate(he->ms.sym, he->ms.map, evsel, hbt); | 246 return symbol__gtk_annotate(&he->ms, evsel, hbt); |
246} 247 248void perf_gtk__show_annotations(void) 249{ 250 GtkWidget *window; 251 252 if (!perf_gtk__is_active_context(pgctx)) 253 return; 254 255 window = pgctx->main_window; 256 gtk_widget_show_all(window); 257 258 perf_gtk__resize_window(window); 259 gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); 260 261 gtk_main(); 262 263 perf_gtk__deactivate_context(&pgctx); 264} | 247} 248 249void perf_gtk__show_annotations(void) 250{ 251 GtkWidget *window; 252 253 if (!perf_gtk__is_active_context(pgctx)) 254 return; 255 256 window = pgctx->main_window; 257 gtk_widget_show_all(window); 258 259 perf_gtk__resize_window(window); 260 gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); 261 262 gtk_main(); 263 264 perf_gtk__deactivate_context(&pgctx); 265} |