xref: /aosp_15_r20/external/libtracefs/scripts/features.mk (revision 287e80b3a36113050663245e7f2c00d274188f18)
1*287e80b3SSadaf Ebrahimi# SPDX-License-Identifier: GPL-2.0
2*287e80b3SSadaf Ebrahimi
3*287e80b3SSadaf Ebrahimi# taken from perf which was based on Linux Kbuild
4*287e80b3SSadaf Ebrahimi# try-cc
5*287e80b3SSadaf Ebrahimi# Usage: option = $(call try-cc, source-to-build, cc-options)
6*287e80b3SSadaf Ebrahimitry-cc = $(shell sh -c							\
7*287e80b3SSadaf Ebrahimi	'TMP="$(BUILD_OUTPUT)$(TMPOUT).$$$$";						\
8*287e80b3SSadaf Ebrahimi	echo "$(1)" |							\
9*287e80b3SSadaf Ebrahimi	$(CC) -x c - $(2) -o "$$TMP" > /dev/null 2>&1 && echo y;	\
10*287e80b3SSadaf Ebrahimi	rm -f "$$TMP"')
11*287e80b3SSadaf Ebrahimi
12*287e80b3SSadaf Ebrahimidefine SOURCE_PTRACE
13*287e80b3SSadaf Ebrahimi#include <stdio.h>
14*287e80b3SSadaf Ebrahimi#include <sys/ptrace.h>
15*287e80b3SSadaf Ebrahimi
16*287e80b3SSadaf Ebrahimiint main (void)
17*287e80b3SSadaf Ebrahimi{
18*287e80b3SSadaf Ebrahimi	int ret;
19*287e80b3SSadaf Ebrahimi	ret = ptrace(PTRACE_ATTACH, 0, NULL, 0);
20*287e80b3SSadaf Ebrahimi	ptrace(PTRACE_TRACEME, 0, NULL, 0);
21*287e80b3SSadaf Ebrahimi	ptrace(PTRACE_GETSIGINFO, 0, NULL, NULL);
22*287e80b3SSadaf Ebrahimi	ptrace(PTRACE_GETEVENTMSG, 0, NULL, NULL);
23*287e80b3SSadaf Ebrahimi	ptrace(PTRACE_SETOPTIONS, NULL, NULL,
24*287e80b3SSadaf Ebrahimi		       PTRACE_O_TRACEFORK |
25*287e80b3SSadaf Ebrahimi		       PTRACE_O_TRACEVFORK |
26*287e80b3SSadaf Ebrahimi		       PTRACE_O_TRACECLONE |
27*287e80b3SSadaf Ebrahimi		       PTRACE_O_TRACEEXIT);
28*287e80b3SSadaf Ebrahimi	ptrace(PTRACE_CONT, NULL, NULL, 0);
29*287e80b3SSadaf Ebrahimi	ptrace(PTRACE_DETACH, 0, NULL, NULL);
30*287e80b3SSadaf Ebrahimi	ptrace(PTRACE_SETOPTIONS, 0, NULL,
31*287e80b3SSadaf Ebrahimi	       PTRACE_O_TRACEFORK |
32*287e80b3SSadaf Ebrahimi	       PTRACE_O_TRACEVFORK |
33*287e80b3SSadaf Ebrahimi	       PTRACE_O_TRACECLONE |
34*287e80b3SSadaf Ebrahimi	       PTRACE_O_TRACEEXIT);
35*287e80b3SSadaf Ebrahimi	return ret;
36*287e80b3SSadaf Ebrahimi}
37*287e80b3SSadaf Ebrahimiendef
38