diff options
Diffstat (limited to 'tools/perf/util/trace-event-parse.c')
| -rw-r--r-- | tools/perf/util/trace-event-parse.c | 18 | 
1 files changed, 8 insertions, 10 deletions
diff --git a/tools/perf/util/trace-event-parse.c b/tools/perf/util/trace-event-parse.c index aa4c860a21d..3aabcd687cd 100644 --- a/tools/perf/util/trace-event-parse.c +++ b/tools/perf/util/trace-event-parse.c @@ -229,24 +229,22 @@ void parse_proc_kallsyms(struct pevent *pevent,  	char *next = NULL;  	char *addr_str;  	char *mod; -	char ch; +	char *fmt;  	line = strtok_r(file, "\n", &next);  	while (line) {  		mod = NULL; -		sscanf(line, "%as %c %as\t[%as", -		       (float *)(void *)&addr_str, /* workaround gcc warning */ -		       &ch, (float *)(void *)&func, (float *)(void *)&mod); +		addr_str = strtok_r(line, " ", &fmt);  		addr = strtoull(addr_str, NULL, 16); -		free(addr_str); - -		/* truncate the extra ']' */ +		/* skip character */ +		strtok_r(NULL, " ", &fmt); +		func = strtok_r(NULL, "\t", &fmt); +		mod = strtok_r(NULL, "]", &fmt); +		/* truncate the extra '[' */  		if (mod) -			mod[strlen(mod) - 1] = 0; +			mod = mod + 1;  		pevent_register_function(pevent, func, addr, mod); -		free(func); -		free(mod);  		line = strtok_r(NULL, "\n", &next);  	}  |