Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

perf build: Add sdt feature detection

This checks whether sys/sdt.h is available or not, which is required for
DTRACE_PROBE().

We can disable this feature by passing NO_SDT=1 when building.

This flag will be used for SDT test case and further SDT events in
perftools.

Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com>
Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
Cc: Hemant Kumar <hemant@linux.vnet.ibm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/146831795615.17065.17513820540591053933.stgit@devbox
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

authored by

Masami Hiramatsu and committed by
Arnaldo Carvalho de Melo
e26e63be 7e9fca51

+34 -3
+2 -1
tools/build/Makefile.feature
··· 62 62 zlib \ 63 63 lzma \ 64 64 get_cpuid \ 65 - bpf 65 + bpf \ 66 + sdt 66 67 67 68 # FEATURE_TESTS_BASIC + FEATURE_TESTS_EXTRA is the complete list 68 69 # of all feature tests
+5 -1
tools/build/feature/Makefile
··· 45 45 test-zlib.bin \ 46 46 test-lzma.bin \ 47 47 test-bpf.bin \ 48 - test-get_cpuid.bin 48 + test-get_cpuid.bin \ 49 + test-sdt.bin 49 50 50 51 FILES := $(addprefix $(OUTPUT),$(FILES)) 51 52 ··· 212 211 $(BUILD) 213 212 214 213 $(OUTPUT)test-bpf.bin: 214 + $(BUILD) 215 + 216 + $(OUTPUT)test-sdt.bin: 215 217 $(BUILD) 216 218 217 219 -include $(OUTPUT)*.d
+5
tools/build/feature/test-all.c
··· 145 145 # include "test-libcrypto.c" 146 146 #undef main 147 147 148 + #define main main_test_sdt 149 + # include "test-sdt.c" 150 + #undef main 151 + 148 152 int main(int argc, char *argv[]) 149 153 { 150 154 main_test_libpython(); ··· 182 178 main_test_get_cpuid(); 183 179 main_test_bpf(); 184 180 main_test_libcrypto(); 181 + main_test_sdt(); 185 182 186 183 return 0; 187 184 }
+7
tools/build/feature/test-sdt.c
··· 1 + #include <sys/sdt.h> 2 + 3 + int main(void) 4 + { 5 + DTRACE_PROBE(provider, name); 6 + return 0; 7 + }
+3
tools/perf/Makefile.perf
··· 81 81 # 82 82 # Define NO_LIBBPF if you do not want BPF support 83 83 # 84 + # Define NO_SDT if you do not want to define SDT event in perf tools, 85 + # note that it doesn't disable SDT scanning support. 86 + # 84 87 # Define FEATURES_DUMP to provide features detection dump file 85 88 # and bypass the feature detection 86 89
+10
tools/perf/config/Makefile
··· 355 355 endif # NO_LIBBPF 356 356 endif # NO_LIBELF 357 357 358 + ifndef NO_SDT 359 + ifneq ($(feature-sdt), 1) 360 + msg := $(warning No sys/sdt.h found, no SDT events are defined, please install systemtap-sdt-devel or systemtap-sdt-dev); 361 + NO_SDT := 1; 362 + else 363 + CFLAGS += -DHAVE_SDT_EVENT 364 + $(call detected,CONFIG_SDT_EVENT) 365 + endif 366 + endif 367 + 358 368 ifdef PERF_HAVE_JITDUMP 359 369 ifndef NO_DWARF 360 370 $(call detected,CONFIG_JITDUMP)
+2 -1
tools/perf/tests/make
··· 82 82 make_no_libbpf := NO_LIBBPF=1 83 83 make_no_libcrypto := NO_LIBCRYPTO=1 84 84 make_with_babeltrace:= LIBBABELTRACE=1 85 + make_no_sdt := NO_SDT=1 85 86 make_tags := tags 86 87 make_cscope := cscope 87 88 make_help := help ··· 106 105 make_minimal += NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 107 106 make_minimal += NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 108 107 make_minimal += NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 109 - make_minimal += NO_LIBCRYPTO=1 108 + make_minimal += NO_LIBCRYPTO=1 NO_SDT=1 110 109 111 110 # $(run) contains all available tests 112 111 run := make_pure