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>
This commit is contained in:
parent
8b9e74eb8a
commit
f4e7ac0a23
|
@ -647,6 +647,15 @@ else
|
||||||
endif
|
endif
|
||||||
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
|
ifndef CC_LD_DYNPATH
|
||||||
ifdef NO_R_TO_GCC_LINKER
|
ifdef NO_R_TO_GCC_LINKER
|
||||||
# Some gcc does not accept and pass -R to the linker to specify
|
# Some gcc does not accept and pass -R to the linker to specify
|
||||||
|
|
|
@ -110,6 +110,17 @@ int main(void)
|
||||||
}
|
}
|
||||||
endef
|
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
|
# try-cc
|
||||||
# Usage: option = $(call try-cc, source-to-build, cc-options)
|
# Usage: option = $(call try-cc, source-to-build, cc-options)
|
||||||
try-cc = $(shell sh -c \
|
try-cc = $(shell sh -c \
|
||||||
|
|
|
@ -82,6 +82,8 @@ extern char *perf_path(const char *fmt, ...) __attribute__((format (printf, 1, 2
|
||||||
extern char *perf_pathdup(const char *fmt, ...)
|
extern char *perf_pathdup(const char *fmt, ...)
|
||||||
__attribute__((format (printf, 1, 2)));
|
__attribute__((format (printf, 1, 2)));
|
||||||
|
|
||||||
|
#ifdef NO_STRLCPY
|
||||||
extern size_t strlcpy(char *dest, const char *src, size_t size);
|
extern size_t strlcpy(char *dest, const char *src, size_t size);
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* __PERF_CACHE_H */
|
#endif /* __PERF_CACHE_H */
|
||||||
|
|
|
@ -22,6 +22,7 @@ static const char *get_perf_dir(void)
|
||||||
return ".";
|
return ".";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef NO_STRLCPY
|
||||||
size_t strlcpy(char *dest, const char *src, size_t size)
|
size_t strlcpy(char *dest, const char *src, size_t size)
|
||||||
{
|
{
|
||||||
size_t ret = strlen(src);
|
size_t ret = strlen(src);
|
||||||
|
@ -33,7 +34,7 @@ size_t strlcpy(char *dest, const char *src, size_t size)
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static char *get_pathname(void)
|
static char *get_pathname(void)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue