diff options
| author | Kirill A. Shutemov <kirill@shutemov.name> | 2010-08-21 03:38:20 +0300 | 
|---|---|---|
| committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2010-08-21 11:22:47 -0300 | 
| commit | f4e7ac0a233a4dc9b51345546ab69c64bb43e2c1 (patch) | |
| tree | 26de697385ad30163970160e4c0c8ed9a4dd491b /tools | |
| parent | 8b9e74eb8af808807192d16b76565c27154ae7ed (diff) | |
perf tools: add test for strlcpy()
Some Linux distributions like ALT Linux provides patched glibc with
contains strlcpy(). It's confilcts with strlcpy() from perf.
Let's add check for strlcpy().
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Ingo Molnar <mingo@elte.hu>
LKML-Reference: <1282351101-8879-1-git-send-email-kirill@shutemov.name>
Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/perf/Makefile | 9 | ||||
| -rw-r--r-- | tools/perf/feature-tests.mak | 11 | ||||
| -rw-r--r-- | tools/perf/util/cache.h | 2 | ||||
| -rw-r--r-- | tools/perf/util/path.c | 3 | 
4 files changed, 24 insertions, 1 deletions
| diff --git a/tools/perf/Makefile b/tools/perf/Makefile index dcb9700b88d2..7473de00682b 100644 --- a/tools/perf/Makefile +++ b/tools/perf/Makefile @@ -647,6 +647,15 @@ else  	endif  endif + +ifdef NO_STRLCPY +	BASIC_CFLAGS += -DNO_STRLCPY +else +	ifneq ($(call try-cc,$(SOURCE_STRLCPY),),y) +		BASIC_CFLAGS += -DNO_STRLCPY +	endif +endif +  ifndef CC_LD_DYNPATH  	ifdef NO_R_TO_GCC_LINKER  		# Some gcc does not accept and pass -R to the linker to specify diff --git a/tools/perf/feature-tests.mak b/tools/perf/feature-tests.mak index ddb68e601f0e..ef3d0d6a9e23 100644 --- a/tools/perf/feature-tests.mak +++ b/tools/perf/feature-tests.mak @@ -110,6 +110,17 @@ int main(void)  }  endef +define SOURCE_STRLCPY +#include <stdlib.h> +extern size_t strlcpy(char *dest, const char *src, size_t size); + +int main(void) +{ +	strlcpy(NULL, NULL, 0); +	return 0; +} +endef +  # try-cc  # Usage: option = $(call try-cc, source-to-build, cc-options)  try-cc = $(shell sh -c						  \ diff --git a/tools/perf/util/cache.h b/tools/perf/util/cache.h index 27e9ebe4076e..a7729797fd96 100644 --- a/tools/perf/util/cache.h +++ b/tools/perf/util/cache.h @@ -82,6 +82,8 @@ extern char *perf_path(const char *fmt, ...) __attribute__((format (printf, 1, 2  extern char *perf_pathdup(const char *fmt, ...)  	__attribute__((format (printf, 1, 2))); +#ifdef NO_STRLCPY  extern size_t strlcpy(char *dest, const char *src, size_t size); +#endif  #endif /* __PERF_CACHE_H */ diff --git a/tools/perf/util/path.c b/tools/perf/util/path.c index 58a470d036dd..bd7497711424 100644 --- a/tools/perf/util/path.c +++ b/tools/perf/util/path.c @@ -22,6 +22,7 @@ static const char *get_perf_dir(void)  	return ".";  } +#ifdef NO_STRLCPY  size_t strlcpy(char *dest, const char *src, size_t size)  {  	size_t ret = strlen(src); @@ -33,7 +34,7 @@ size_t strlcpy(char *dest, const char *src, size_t size)  	}  	return ret;  } - +#endif  static char *get_pathname(void)  { | 
