xref: /linux/kernel/trace/Makefile (revision 01046072880b654dbadf71be2f645aad4a7b5d87)
1d7729643SMarc Zyngier# SPDX-License-Identifier: GPL-2.0
2b53dde9dSIngo Molnar
3b53dde9dSIngo Molnar# Do not instrument the tracer itself:
4b53dde9dSIngo Molnar
515d5761aSMasahiro Yamadaccflags-remove-$(CONFIG_FUNCTION_TRACER) += $(CC_FLAGS_FTRACE)
615d5761aSMasahiro Yamada
7606576ceSSteven Rostedtifdef CONFIG_FUNCTION_TRACER
8d05cdb25SSteven Rostedt
9f5d2313bSMarco Elver# Avoid recursion due to instrumentation.
10f5d2313bSMarco ElverKCSAN_SANITIZE := n
11f5d2313bSMarco Elver
1247239c4dSSteven Rostedtifdef CONFIG_FTRACE_SELFTEST
13d05cdb25SSteven Rostedt# selftest needs instrumentation
14c0a80c0cSHeiko CarstensCFLAGS_trace_selftest_dynamic.o = $(CC_FLAGS_FTRACE)
15d05cdb25SSteven Rostedtobj-y += trace_selftest_dynamic.o
16b53dde9dSIngo Molnarendif
1747239c4dSSteven Rostedtendif
18b53dde9dSIngo Molnar
19f93a7d0cSSteven Rostedt# Allow some files to be function traced
20f93a7d0cSSteven Rostedtifdef CONFIG_FUNCTION_SELF_TRACING
21f93a7d0cSSteven RostedtCFLAGS_trace_output.o = $(CC_FLAGS_FTRACE)
22f93a7d0cSSteven RostedtCFLAGS_trace_seq.o = $(CC_FLAGS_FTRACE)
23f93a7d0cSSteven RostedtCFLAGS_trace_stat.o = $(CC_FLAGS_FTRACE)
24f93a7d0cSSteven RostedtCFLAGS_tracing_map.o = $(CC_FLAGS_FTRACE)
25f93a7d0cSSteven RostedtCFLAGS_synth_event_gen_test.o = $(CC_FLAGS_FTRACE)
26f93a7d0cSSteven RostedtCFLAGS_trace_events.o = $(CC_FLAGS_FTRACE)
27f93a7d0cSSteven RostedtCFLAGS_trace_syscalls.o = $(CC_FLAGS_FTRACE)
28f93a7d0cSSteven RostedtCFLAGS_trace_events_filter.o = $(CC_FLAGS_FTRACE)
29f93a7d0cSSteven RostedtCFLAGS_trace_events_trigger.o = $(CC_FLAGS_FTRACE)
30f93a7d0cSSteven RostedtCFLAGS_trace_events_synth.o = $(CC_FLAGS_FTRACE)
31f93a7d0cSSteven RostedtCFLAGS_trace_events_hist.o = $(CC_FLAGS_FTRACE)
32f93a7d0cSSteven RostedtCFLAGS_trace_events_user.o = $(CC_FLAGS_FTRACE)
33f93a7d0cSSteven RostedtCFLAGS_trace_dynevent.o = $(CC_FLAGS_FTRACE)
34f93a7d0cSSteven Rostedtendif
35f93a7d0cSSteven Rostedt
36d899926fSFrancis Deslauriersifdef CONFIG_FTRACE_STARTUP_TEST
37d899926fSFrancis DeslauriersCFLAGS_trace_kprobe_selftest.o = $(CC_FLAGS_FTRACE)
38d899926fSFrancis Deslauriersobj-$(CONFIG_KPROBE_EVENTS) += trace_kprobe_selftest.o
39d899926fSFrancis Deslauriersendif
40d899926fSFrancis Deslauriers
4152f232cbSSteven Rostedt# If unlikely tracing is enabled, do not trace these files
422ed84eebSSteven Rostedtifdef CONFIG_TRACING_BRANCHES
432ed84eebSSteven RostedtKBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING
4452f232cbSSteven Rostedtendif
4552f232cbSSteven Rostedt
466b7dca40SMasami Hiramatsu# for GCOV coverage profiling
476b7dca40SMasami Hiramatsuifdef CONFIG_GCOV_PROFILE_FTRACE
486b7dca40SMasami HiramatsuGCOV_PROFILE := y
496b7dca40SMasami Hiramatsuendif
506b7dca40SMasami Hiramatsu
51*01046072SKarl Mehltretter# Functions in these files can run from IRQ entry before hardirq context
52*01046072SKarl Mehltretter# is visible to KCOV, and produce coverage unrelated to syscall inputs.
53bb5eb8f3SCongyu LiuKCOV_INSTRUMENT_trace_preemptirq.o := n
54*01046072SKarl MehltretterKCOV_INSTRUMENT_trace_irqsoff.o := n
55bb5eb8f3SCongyu Liu
56ac5a72eaSAlan MaguireCFLAGS_bpf_trace.o := -I$(src)
57ac5a72eaSAlan Maguire
5881dc9f0eSSteven Rostedt (Red Hat)CFLAGS_trace_benchmark.o := -I$(src)
591d0e78e3SJiri OlsaCFLAGS_trace_events_filter.o := -I$(src)
601d0e78e3SJiri Olsa
61ea632e9fSJosh Triplettobj-$(CONFIG_TRACE_CLOCK) += trace_clock.o
6256449f43SIngo Molnar
63606576ceSSteven Rostedtobj-$(CONFIG_FUNCTION_TRACER) += libftrace.o
647a8e76a3SSteven Rostedtobj-$(CONFIG_RING_BUFFER) += ring_buffer.o
655092dbc9SSteven Rostedtobj-$(CONFIG_RING_BUFFER_BENCHMARK) += ring_buffer_benchmark.o
6616444a8aSArnaldo Carvalho de Melo
67bc0c38d1SSteven Rostedtobj-$(CONFIG_TRACING) += trace.o
68f0868d1eSSteven Rostedtobj-$(CONFIG_TRACING) += trace_output.o
6912306276SSteven Rostedt (Red Hat)obj-$(CONFIG_TRACING) += trace_seq.o
70dbd0b4b3SFrederic Weisbeckerobj-$(CONFIG_TRACING) += trace_stat.o
71769b0441SFrederic Weisbeckerobj-$(CONFIG_TRACING) += trace_printk.o
7298021e37SSteven Rostedtobj-$(CONFIG_TRACING) += trace_pid.o
73bade44feSSteven Rostedtobj-$(CONFIG_TRACER_SNAPSHOT) += trace_snapshot.o
746954e415SSteven Rostedt (VMware)obj-$(CONFIG_TRACING) += 	pid_list.o
7508d43a5fSTom Zanussiobj-$(CONFIG_TRACING_MAP) += tracing_map.o
76f96e8577SJoel Fernandes (Google)obj-$(CONFIG_PREEMPTIRQ_DELAY_TEST) += preemptirq_delay_test.o
779fe41efaSTom Zanussiobj-$(CONFIG_SYNTH_EVENT_GEN_TEST) += synth_event_gen_test.o
7864836248STom Zanussiobj-$(CONFIG_KPROBE_EVENT_GEN_TEST) += kprobe_event_gen_test.o
7935e8e302SSteven Rostedtobj-$(CONFIG_CONTEXT_SWITCH_TRACER) += trace_sched_switch.o
80606576ceSSteven Rostedtobj-$(CONFIG_FUNCTION_TRACER) += trace_functions.o
81c3bc8fd6SJoel Fernandes (Google)obj-$(CONFIG_PREEMPTIRQ_TRACEPOINTS) += trace_preemptirq.o
8281d68a96SSteven Rostedtobj-$(CONFIG_IRQSOFF_TRACER) += trace_irqsoff.o
836cd8a4bbSSteven Rostedtobj-$(CONFIG_PREEMPT_TRACER) += trace_irqsoff.o
84352ad25aSSteven Rostedtobj-$(CONFIG_SCHED_TRACER) += trace_sched_wakeup.o
85e7c15cd8SSteven Rostedt (Red Hat)obj-$(CONFIG_HWLAT_TRACER) += trace_hwlat.o
86bce29ac9SDaniel Bristot de Oliveiraobj-$(CONFIG_OSNOISE_TRACER) += trace_osnoise.o
87fb1b6d8bSSteven Noonanobj-$(CONFIG_NOP_TRACER) += trace_nop.o
88e5a81b62SSteven Rostedtobj-$(CONFIG_STACK_TRACER) += trace_stack.o
89f984b51eSPekka Paalanenobj-$(CONFIG_MMIOTRACE) += trace_mmiotrace.o
90fb52607aSFrederic Weisbeckerobj-$(CONFIG_FUNCTION_GRAPH_TRACER) += trace_functions_graph.o
9194b80ffdSSteven Rostedtobj-$(CONFIG_TRACE_BRANCH_PROFILING) += trace_branch.o
922db270a8SFrederic Weisbeckerobj-$(CONFIG_BLK_DEV_IO_TRACE) += blktrace.o
93d864a3caSSteven Rostedt (VMware)obj-$(CONFIG_FUNCTION_GRAPH_TRACER) += fgraph.o
9455782138SLi Zefanifeq ($(CONFIG_BLOCK),y)
9555782138SLi Zefanobj-$(CONFIG_EVENT_TRACING) += blktrace.o
9655782138SLi Zefanendif
975f77a88bSTom Zanussiobj-$(CONFIG_EVENT_TRACING) += trace_events.o
985f77a88bSTom Zanussiobj-$(CONFIG_EVENT_TRACING) += trace_export.o
99ee08c6ecSFrederic Weisbeckerobj-$(CONFIG_FTRACE_SYSCALLS) += trace_syscalls.o
10007b139c8SLi Zefanifeq ($(CONFIG_PERF_EVENTS),y)
10197d5a220SFrederic Weisbeckerobj-$(CONFIG_EVENT_TRACING) += trace_event_perf.o
10207b139c8SLi Zefanendif
1035f77a88bSTom Zanussiobj-$(CONFIG_EVENT_TRACING) += trace_events_filter.o
10485f2b082STom Zanussiobj-$(CONFIG_EVENT_TRACING) += trace_events_trigger.o
1050dd1274aSSteven Rostedtobj-$(CONFIG_EPROBE_EVENTS) += trace_eprobe.o
1066c3edaf9SCong Wangobj-$(CONFIG_TRACE_EVENT_INJECT) += trace_events_inject.o
107726721a5STom Zanussiobj-$(CONFIG_SYNTH_EVENTS) += trace_events_synth.o
1087ef224d1STom Zanussiobj-$(CONFIG_HIST_TRIGGERS) += trace_events_hist.o
1097f5a08c7SBeau Belgraveobj-$(CONFIG_USER_EVENTS) += trace_events_user.o
110e1abf2ccSIngo Molnarobj-$(CONFIG_BPF_EVENTS) += bpf_trace.o
1116b0b7551SAnton Blanchardobj-$(CONFIG_KPROBE_EVENTS) += trace_kprobe.o
1129c0dee54SAlexander Potapenkoobj-$(CONFIG_TRACEPOINTS) += error_report-traces.o
113870915e0SMathieu Desnoyersobj-$(CONFIG_TRACEPOINTS) += power-traces.o
114798bc6d8SRafael J. Wysockiifeq ($(CONFIG_PM),y)
11553b615ccSMing Leiobj-$(CONFIG_TRACEPOINTS) += rpm-traces.o
1162a5306ccSMing Leiendif
117955b61e5SJason Wesselifeq ($(CONFIG_TRACING),y)
118955b61e5SJason Wesselobj-$(CONFIG_KGDB_KDB) += trace_kdb.o
119955b61e5SJason Wesselendif
1205448d44cSMasami Hiramatsuobj-$(CONFIG_DYNAMIC_EVENTS) += trace_dynevent.o
1218ab83f56SSrikar Dronamrajuobj-$(CONFIG_PROBE_EVENTS) += trace_probe.o
122ebeed8d4SMasami Hiramatsu (Google)obj-$(CONFIG_PROBE_EVENTS_BTF_ARGS) += trace_btf.o
1236b0b7551SAnton Blanchardobj-$(CONFIG_UPROBE_EVENTS) += trace_uprobe.o
1249c5b9d3dSMasami Hiramatsuobj-$(CONFIG_BOOTTIME_TRACING) += trace_boot.o
125773c1670SSteven Rostedt (VMware)obj-$(CONFIG_FTRACE_RECORD_RECURSION) += trace_recursion_record.o
126cad9931fSMasami Hiramatsuobj-$(CONFIG_FPROBE) += fprobe.o
12754ecbe6fSMasami Hiramatsuobj-$(CONFIG_RETHOOK) += rethook.o
128334e5519SMasami Hiramatsu (Google)obj-$(CONFIG_FPROBE_EVENTS) += trace_fprobe.o
129bc0c38d1SSteven Rostedt
13081dc9f0eSSteven Rostedt (Red Hat)obj-$(CONFIG_TRACEPOINT_BENCHMARK) += trace_benchmark.o
131102227b9SDaniel Bristot de Oliveiraobj-$(CONFIG_RV) += rv/
13281dc9f0eSSteven Rostedt (Red Hat)
13396e43537SVincent Donnefortobj-$(CONFIG_TRACE_REMOTE) += trace_remote.o
13434e5b958SVincent Donnefortobj-$(CONFIG_SIMPLE_RING_BUFFER) += simple_ring_buffer.o
135ea908a2bSVincent Donnefortobj-$(CONFIG_TRACE_REMOTE_TEST) += remote_test.o
136ea908a2bSVincent Donnefort
137a717943dSVincent Donnefort# simple_ring_buffer is used by the pKVM hypervisor which does not have access
138a717943dSVincent Donnefort# to all kernel symbols. Fail the build if forbidden symbols are found.
1391211907aSVincent Donnefort
1405335e318SPaolo Bonzini# Basic compiler and tooling-generated symbols that can safely be left
1415335e318SPaolo Bonzini# undefined. Ensure KASAN is enabled to avoid logic that may disable
1425335e318SPaolo Bonzini# FORTIFY_SOURCE when KASAN is not enabled. undefsyms_base.o does not
1435335e318SPaolo Bonzini# automatically get KASAN flags because it is not linked into vmlinux.
1441211907aSVincent Donneforttargets += undefsyms_base.o
1451211907aSVincent DonnefortKASAN_SANITIZE_undefsyms_base.o := y
1461211907aSVincent Donnefort
14796350db8SArnd BergmannUNDEFINED_ALLOWLIST = __asan __gcov __kasan __kcsan __hwasan __sancov __sanitizer __tsan __ubsan __msan \
14896350db8SArnd Bergmann		      __aeabi_unwind_cpp __s390_indirect_jump __x86_indirect_thunk simple_ring_buffer \
1491211907aSVincent Donnefort		      $(shell $(NM) -u $(obj)/undefsyms_base.o 2>/dev/null | awk '{print $$2}')
150a717943dSVincent Donnefort
151a717943dSVincent Donnefortquiet_cmd_check_undefined = NM      $<
15258b4bd18SNathan Chancellor      cmd_check_undefined = \
15358b4bd18SNathan Chancellor          undefsyms=$$($(NM) -u $< | grep -v $(addprefix -e , $(UNDEFINED_ALLOWLIST)) || true); \
15458b4bd18SNathan Chancellor          if [ -n "$$undefsyms" ]; then \
15558b4bd18SNathan Chancellor              echo "Unexpected symbols in $<:" >&2; \
15658b4bd18SNathan Chancellor              echo "$$undefsyms" >&2; \
15758b4bd18SNathan Chancellor              false; \
15858b4bd18SNathan Chancellor          fi
159a717943dSVincent Donnefort
1601211907aSVincent Donnefort$(obj)/%.o.checked: $(obj)/%.o $(obj)/undefsyms_base.o FORCE
161a717943dSVincent Donnefort	$(call if_changed,check_undefined)
162a717943dSVincent Donnefort
163a717943dSVincent Donnefortalways-$(CONFIG_SIMPLE_RING_BUFFER) += simple_ring_buffer.o.checked
164a717943dSVincent Donnefort
16516444a8aSArnaldo Carvalho de Melolibftrace-y := ftrace.o
166