diff options
Diffstat (limited to 'tools/perf/util/annotate.c')
| -rw-r--r-- | tools/perf/util/annotate.c | 8 | 
1 files changed, 7 insertions, 1 deletions
| diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c index 273f21fa32b5..22cd1dbe724b 100644 --- a/tools/perf/util/annotate.c +++ b/tools/perf/util/annotate.c @@ -1435,7 +1435,7 @@ int symbol__disassemble(struct symbol *sym, struct map *map, const char *arch_na  	snprintf(command, sizeof(command),  		 "%s %s%s --start-address=0x%016" PRIx64  		 " --stop-address=0x%016" PRIx64 -		 " -l -d %s %s -C %s 2>/dev/null|grep -v %s|expand", +		 " -l -d %s %s -C %s 2>/dev/null|grep -v %s:|expand",  		 objdump_path ? objdump_path : "objdump",  		 disassembler_style ? "-M " : "",  		 disassembler_style ? disassembler_style : "", @@ -1482,6 +1482,12 @@ int symbol__disassemble(struct symbol *sym, struct map *map, const char *arch_na  	nline = 0;  	while (!feof(file)) { +		/* +		 * The source code line number (lineno) needs to be kept in +		 * accross calls to symbol__parse_objdump_line(), so that it +		 * can associate it with the instructions till the next one. +		 * See disasm_line__new() and struct disasm_line::line_nr. +		 */  		if (symbol__parse_objdump_line(sym, map, arch, file, privsize,  			    &lineno) < 0)  			break; | 
