Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f4e7ac0a authored by Kirill A. Shutemov's avatar Kirill A. Shutemov Committed by Arnaldo Carvalho de Melo
Browse files

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: default avatarKirill A. Shutemov <kirill@shutemov.name>
Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 8b9e74eb
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -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
+11 −0
Original line number Diff line number Diff line
@@ -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						  \
+2 −0
Original line number Diff line number Diff line
@@ -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 */
+2 −1
Original line number Diff line number Diff line
@@ -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)
{