tools build: Add test for presence of __get_cpuid() gcc builtin
The auxtrace code needed by Intel PT uses the __get_cpuid() gcc builtin, that is not present in old systems, breaking the build. Add a test to check for that builtin and disable AUXTRACE in those systems. [acme@rhel5 linux]$ make NO_LIBPERL=1 -C tools/perf O=/tmp/build/perf install-bin make: Entering directory `/home/acme/git/linux/tools/perf' BUILD: Doing 'make -j2' parallel build Auto-detecting system features: <SNIP> ... lzma: [ on ] ... get_cpuid: [ OFF ] <SNIP> config/Makefile:630: Your gcc lacks the __get_cpuid() builtin, disables support for auxtrace/Intel PT, please install a newer gcc MKDIR /tmp/build/perf/util/ <SNIP> This fixes the build on old systems such as RHEL/CentOS 5.11. Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Borislav Petkov <bp@suse.de> Cc: David Ahern <dsahern@gmail.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: "Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com> Cc: Stephane Eranian <eranian@google.com> Cc: Victor Kamensky <victor.kamensky@linaro.org> Cc: Vinson Lee <vlee@twopensource.com> Cc: Wang Nan <wangnan0@huawei.com> Link: http://lkml.kernel.org/n/tip-d4puslul0jltoodzpx9r4sje@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
f8ac8606fd
commit
b0063dbfb0
|
@ -52,7 +52,8 @@ FEATURE_TESTS ?= \
|
||||||
timerfd \
|
timerfd \
|
||||||
libdw-dwarf-unwind \
|
libdw-dwarf-unwind \
|
||||||
zlib \
|
zlib \
|
||||||
lzma
|
lzma \
|
||||||
|
get_cpuid
|
||||||
|
|
||||||
FEATURE_DISPLAY ?= \
|
FEATURE_DISPLAY ?= \
|
||||||
dwarf \
|
dwarf \
|
||||||
|
@ -69,7 +70,8 @@ FEATURE_DISPLAY ?= \
|
||||||
libunwind \
|
libunwind \
|
||||||
libdw-dwarf-unwind \
|
libdw-dwarf-unwind \
|
||||||
zlib \
|
zlib \
|
||||||
lzma
|
lzma \
|
||||||
|
get_cpuid
|
||||||
|
|
||||||
# Set FEATURE_CHECK_(C|LD)FLAGS-all for all FEATURE_TESTS features.
|
# Set FEATURE_CHECK_(C|LD)FLAGS-all for all FEATURE_TESTS features.
|
||||||
# If in the future we need per-feature checks/flags for features not
|
# If in the future we need per-feature checks/flags for features not
|
||||||
|
|
|
@ -35,7 +35,8 @@ FILES= \
|
||||||
test-compile-x32.bin \
|
test-compile-x32.bin \
|
||||||
test-zlib.bin \
|
test-zlib.bin \
|
||||||
test-lzma.bin \
|
test-lzma.bin \
|
||||||
test-bpf.bin
|
test-bpf.bin \
|
||||||
|
test-get_cpuid.bin
|
||||||
|
|
||||||
CC := $(CROSS_COMPILE)gcc -MD
|
CC := $(CROSS_COMPILE)gcc -MD
|
||||||
PKG_CONFIG := $(CROSS_COMPILE)pkg-config
|
PKG_CONFIG := $(CROSS_COMPILE)pkg-config
|
||||||
|
@ -166,6 +167,9 @@ test-zlib.bin:
|
||||||
test-lzma.bin:
|
test-lzma.bin:
|
||||||
$(BUILD) -llzma
|
$(BUILD) -llzma
|
||||||
|
|
||||||
|
test-get_cpuid.bin:
|
||||||
|
$(BUILD)
|
||||||
|
|
||||||
test-bpf.bin:
|
test-bpf.bin:
|
||||||
$(BUILD)
|
$(BUILD)
|
||||||
|
|
||||||
|
|
|
@ -121,6 +121,10 @@
|
||||||
# include "test-lzma.c"
|
# include "test-lzma.c"
|
||||||
#undef main
|
#undef main
|
||||||
|
|
||||||
|
#define main main_test_get_cpuid
|
||||||
|
# include "test-get_cpuid.c"
|
||||||
|
#undef main
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
main_test_libpython();
|
main_test_libpython();
|
||||||
|
@ -148,6 +152,7 @@ int main(int argc, char *argv[])
|
||||||
main_test_zlib();
|
main_test_zlib();
|
||||||
main_test_pthread_attr_setaffinity_np();
|
main_test_pthread_attr_setaffinity_np();
|
||||||
main_test_lzma();
|
main_test_lzma();
|
||||||
|
main_test_get_cpuid();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
#include <cpuid.h>
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
unsigned int eax = 0, ebx = 0, ecx = 0, edx = 0;
|
||||||
|
return __get_cpuid(0x15, &eax, &ebx, &ecx, &edx);
|
||||||
|
}
|
|
@ -626,8 +626,13 @@ ifdef LIBBABELTRACE
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifndef NO_AUXTRACE
|
ifndef NO_AUXTRACE
|
||||||
$(call detected,CONFIG_AUXTRACE)
|
ifeq ($(feature-get_cpuid), 0)
|
||||||
CFLAGS += -DHAVE_AUXTRACE_SUPPORT
|
msg := $(warning Your gcc lacks the __get_cpuid() builtin, disables support for auxtrace/Intel PT, please install a newer gcc);
|
||||||
|
NO_AUXTRACE := 1
|
||||||
|
else
|
||||||
|
$(call detected,CONFIG_AUXTRACE)
|
||||||
|
CFLAGS += -DHAVE_AUXTRACE_SUPPORT
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Among the variables below, these:
|
# Among the variables below, these:
|
||||||
|
|
Loading…
Reference in New Issue