diff options
| -rw-r--r-- | tools/include/linux/string.h | 6 | ||||
| -rw-r--r-- | tools/perf/util/evsel.c | 6 | ||||
| -rw-r--r-- | tools/perf/util/unwind-libdw.c | 2 | ||||
| -rw-r--r-- | tools/perf/util/unwind-libunwind-local.c | 2 | 
4 files changed, 10 insertions, 6 deletions
| diff --git a/tools/include/linux/string.h b/tools/include/linux/string.h index b96879477311..f436d2420a18 100644 --- a/tools/include/linux/string.h +++ b/tools/include/linux/string.h @@ -8,7 +8,11 @@ void *memdup(const void *src, size_t len);  int strtobool(const char *s, bool *res); -#ifdef __GLIBC__ +/* + * glibc based builds needs the extern while uClibc doesn't. + * However uClibc headers also define __GLIBC__ hence the hack below + */ +#if defined(__GLIBC__) && !defined(__UCLIBC__)  extern size_t strlcpy(char *dest, const char *src, size_t size);  #endif diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index d9b80ef881cd..21fd573106ed 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c @@ -507,17 +507,17 @@ static int __perf_evsel__hw_cache_name(u64 config, char *bf, size_t size)  	u8 op, result, type = (config >>  0) & 0xff;  	const char *err = "unknown-ext-hardware-cache-type"; -	if (type > PERF_COUNT_HW_CACHE_MAX) +	if (type >= PERF_COUNT_HW_CACHE_MAX)  		goto out_err;  	op = (config >>  8) & 0xff;  	err = "unknown-ext-hardware-cache-op"; -	if (op > PERF_COUNT_HW_CACHE_OP_MAX) +	if (op >= PERF_COUNT_HW_CACHE_OP_MAX)  		goto out_err;  	result = (config >> 16) & 0xff;  	err = "unknown-ext-hardware-cache-result"; -	if (result > PERF_COUNT_HW_CACHE_RESULT_MAX) +	if (result >= PERF_COUNT_HW_CACHE_RESULT_MAX)  		goto out_err;  	err = "invalid-cache"; diff --git a/tools/perf/util/unwind-libdw.c b/tools/perf/util/unwind-libdw.c index cf5e250bc78e..783a53fb7a4e 100644 --- a/tools/perf/util/unwind-libdw.c +++ b/tools/perf/util/unwind-libdw.c @@ -66,7 +66,7 @@ static int entry(u64 ip, struct unwind_info *ui)  	if (__report_module(&al, ip, ui))  		return -1; -	e->ip  = ip; +	e->ip  = al.addr;  	e->map = al.map;  	e->sym = al.sym; diff --git a/tools/perf/util/unwind-libunwind-local.c b/tools/perf/util/unwind-libunwind-local.c index 97c0f8fc5561..20c2e5743903 100644 --- a/tools/perf/util/unwind-libunwind-local.c +++ b/tools/perf/util/unwind-libunwind-local.c @@ -542,7 +542,7 @@ static int entry(u64 ip, struct thread *thread,  	thread__find_addr_location(thread, PERF_RECORD_MISC_USER,  				   MAP__FUNCTION, ip, &al); -	e.ip = ip; +	e.ip = al.addr;  	e.map = al.map;  	e.sym = al.sym; | 
