tools build feature: Check if get_current_dir_name() is available
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: 8feb8efef97a134933620071e0b6384cb3238b4e Gitweb: https://git.kernel.org/tip/8feb8efef97a134933620071e0b6384cb3238b4e Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Mon, 19 Nov 2018 16:56:22 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Mon, 19 Nov 2018 12:12:17 -0800
tools build feature: Check if get_current_dir_name() is available
As the namespace support code will use this, which is not available in some non _GNU_SOURCE libraries such as Android's bionic used in my container build tests (r12b and r15c at the moment).
Cc Adrian Hunter <[email protected]>
Cc David Ahern <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Wang Nan <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/build/Makefile.feature | 1 + tools/build/feature/Makefile | 4 ++++ tools/build/feature/test-all.c | 5 +++++ ...test-reallocarray.c => test-get_current_dir_name.c} | 4 +++- tools/perf/Makefile.config | 5 +++++ tools/perf/util/Build | 1 + tools/perf/util/get_current_dir_name.c | 18 ++++++++++++++++++ tools/perf/util/util.h | 4 ++++ 8 files changed, 41 insertions(+), 1 deletion(-)
tools/build/Makefile.feature +1 -0
@@ -33,6 +33,7 @@ FEATURE_TESTS_BASIC := \ dwarf_getlocations \ fortify-source \ sync-compare-and-swap \ + get_current_dir_name \ glibc \ gtk2 \ gtk2-infobar \
tools/build/feature/Makefile +4 -0
@@ -7,6 +7,7 @@ FILES= \ test-dwarf_getlocations.bin \ test-fortify-source.bin \ test-sync-compare-and-swap.bin \ + test-get_current_dir_name.bin \ test-glibc.bin \ test-gtk2.bin \ test-gtk2-infobar.bin \
@@ -101,6 +102,9 @@ $(OUTPUT)test-bionic.bin: $(OUTPUT)test-libelf.bin: $(BUILD) -lelf +$(OUTPUT)test-get_current_dir_name.bin: + $(BUILD) + $(OUTPUT)test-glibc.bin: $(BUILD)
tools/build/feature/test-all.c +5 -0
@@ -34,6 +34,10 @@# include "test-libelf-mmap.c" #undef main +#define main main_test_get_current_dir_name +# include "test-get_current_dir_name.c" +#undef main +#define main main_test_glibc# include "test-glibc.c" #undef main
@@ -174,6 +178,7 @@ int main(int argc, char *argv[])main_test_hello ();main_test_libelf ();main_test_libelf_mmap (); +main_test_get_current_dir_name ();main_test_glibc ();main_test_dwarf ();main_test_dwarf_getlocations ();
tools/build/feature/test-get_current_dir_name.c renamed from tools/build/feature/test-reallocarray.c +3 -1
@@ -1,8 +1,10 @@// SPDX-License-Identifier: GPL-2.0 #define _GNU_SOURCE +#include <unistd.h> #include <stdlib.h> int main (void ) { -return !!reallocarray (NULL ,1 ,1 ); +free (get_current_dir_name ()); +return 0 ; }
tools/perf/Makefile.config +5 -0
@@ -299,6 +299,11 @@ ifndef NO_BIONIC endif endif +ifeq ($(feature-get_current_dir_name), 1) + CFLAGS += -DHAVE_GET_CURRENT_DIR_NAME +endif + + ifdef NO_LIBELF NO_DWARF := 1 NO_DEMANGLE := 1
tools/perf/util/Build +1 -0
@@ -10,6 +10,7 @@ libperf-y += evlist.o libperf-y += evsel.o libperf-y += evsel_fprintf.o libperf-y += find_bit.o +libperf-y += get_current_dir_name.o libperf-y += kallsyms.o libperf-y += levenshtein.o libperf-y += llvm-utils.o
tools/perf/util/get_current_dir_name.c new file +18 -0
@@ -0,0 +1,18 @@ +// SPDX-License-Identifier: GPL-2.0 +// Copyright (C) 2018, Red Hat Inc, Arnaldo Carvalho de Melo <[email protected]> +// +#ifndef HAVE_GET_CURRENT_DIR_NAME +#include "util.h" +#include <unistd.h> +#include <stdlib.h> +#include <stdlib.h> + +/* Android's 'bionic' library, for one, doesn't have this */ + +char *get_current_dir_name (void ) +{ +char pwd[PATH_MAX ]; + +return getcwd (pwd,sizeof (pwd)) ==NULL ?NULL :strdup (pwd); +} +#endif // HAVE_GET_CURRENT_DIR_NAME
tools/perf/util/util.h +4 -0
@@ -59,6 +59,10 @@ int fetch_kernel_version(unsigned int *puint,const char *perf_tip (const char *dirpath); +#ifndef HAVE_GET_CURRENT_DIR_NAME +char *get_current_dir_name (void ); +#endif +#ifndef HAVE_SCHED_GETCPU_SUPPORT int sched_getcpu (void );#endif