| .. | .. | 
|---|
| 4 | 4 |  TOOLS_PATH := $(BPF_SAMPLES_PATH)/../../tools | 
|---|
| 5 | 5 |   | 
|---|
| 6 | 6 |  # List of programs to build | 
|---|
| 7 |  | -hostprogs-y := test_lru_dist  | 
|---|
| 8 |  | -hostprogs-y += sock_example  | 
|---|
| 9 |  | -hostprogs-y += fds_example  | 
|---|
| 10 |  | -hostprogs-y += sockex1  | 
|---|
| 11 |  | -hostprogs-y += sockex2  | 
|---|
| 12 |  | -hostprogs-y += sockex3  | 
|---|
| 13 |  | -hostprogs-y += tracex1  | 
|---|
| 14 |  | -hostprogs-y += tracex2  | 
|---|
| 15 |  | -hostprogs-y += tracex3  | 
|---|
| 16 |  | -hostprogs-y += tracex4  | 
|---|
| 17 |  | -hostprogs-y += tracex5  | 
|---|
| 18 |  | -hostprogs-y += tracex6  | 
|---|
| 19 |  | -hostprogs-y += tracex7  | 
|---|
| 20 |  | -hostprogs-y += test_probe_write_user  | 
|---|
| 21 |  | -hostprogs-y += trace_output  | 
|---|
| 22 |  | -hostprogs-y += lathist  | 
|---|
| 23 |  | -hostprogs-y += offwaketime  | 
|---|
| 24 |  | -hostprogs-y += spintest  | 
|---|
| 25 |  | -hostprogs-y += map_perf_test  | 
|---|
| 26 |  | -hostprogs-y += test_overhead  | 
|---|
| 27 |  | -hostprogs-y += test_cgrp2_array_pin  | 
|---|
| 28 |  | -hostprogs-y += test_cgrp2_attach  | 
|---|
| 29 |  | -hostprogs-y += test_cgrp2_attach2  | 
|---|
| 30 |  | -hostprogs-y += test_cgrp2_sock  | 
|---|
| 31 |  | -hostprogs-y += test_cgrp2_sock2  | 
|---|
| 32 |  | -hostprogs-y += xdp1  | 
|---|
| 33 |  | -hostprogs-y += xdp2  | 
|---|
| 34 |  | -hostprogs-y += xdp_router_ipv4  | 
|---|
| 35 |  | -hostprogs-y += test_current_task_under_cgroup  | 
|---|
| 36 |  | -hostprogs-y += trace_event  | 
|---|
| 37 |  | -hostprogs-y += sampleip  | 
|---|
| 38 |  | -hostprogs-y += tc_l2_redirect  | 
|---|
| 39 |  | -hostprogs-y += lwt_len_hist  | 
|---|
| 40 |  | -hostprogs-y += xdp_tx_iptunnel  | 
|---|
| 41 |  | -hostprogs-y += test_map_in_map  | 
|---|
| 42 |  | -hostprogs-y += per_socket_stats_example  | 
|---|
| 43 |  | -hostprogs-y += load_sock_ops  | 
|---|
| 44 |  | -hostprogs-y += xdp_redirect  | 
|---|
| 45 |  | -hostprogs-y += xdp_redirect_map  | 
|---|
| 46 |  | -hostprogs-y += xdp_redirect_cpu  | 
|---|
| 47 |  | -hostprogs-y += xdp_monitor  | 
|---|
| 48 |  | -hostprogs-y += xdp_rxq_info  | 
|---|
| 49 |  | -hostprogs-y += syscall_tp  | 
|---|
| 50 |  | -hostprogs-y += cpustat  | 
|---|
| 51 |  | -hostprogs-y += xdp_adjust_tail  | 
|---|
| 52 |  | -hostprogs-y += xdpsock  | 
|---|
| 53 |  | -hostprogs-y += xdp_fwd  | 
|---|
| 54 |  | -hostprogs-y += task_fd_query  | 
|---|
| 55 |  | -hostprogs-y += xdp_sample_pkts  | 
|---|
 | 7 | +tprogs-y := test_lru_dist  | 
|---|
 | 8 | +tprogs-y += sock_example  | 
|---|
 | 9 | +tprogs-y += fds_example  | 
|---|
 | 10 | +tprogs-y += sockex1  | 
|---|
 | 11 | +tprogs-y += sockex2  | 
|---|
 | 12 | +tprogs-y += sockex3  | 
|---|
 | 13 | +tprogs-y += tracex1  | 
|---|
 | 14 | +tprogs-y += tracex2  | 
|---|
 | 15 | +tprogs-y += tracex3  | 
|---|
 | 16 | +tprogs-y += tracex4  | 
|---|
 | 17 | +tprogs-y += tracex5  | 
|---|
 | 18 | +tprogs-y += tracex6  | 
|---|
 | 19 | +tprogs-y += tracex7  | 
|---|
 | 20 | +tprogs-y += test_probe_write_user  | 
|---|
 | 21 | +tprogs-y += trace_output  | 
|---|
 | 22 | +tprogs-y += lathist  | 
|---|
 | 23 | +tprogs-y += offwaketime  | 
|---|
 | 24 | +tprogs-y += spintest  | 
|---|
 | 25 | +tprogs-y += map_perf_test  | 
|---|
 | 26 | +tprogs-y += test_overhead  | 
|---|
 | 27 | +tprogs-y += test_cgrp2_array_pin  | 
|---|
 | 28 | +tprogs-y += test_cgrp2_attach  | 
|---|
 | 29 | +tprogs-y += test_cgrp2_sock  | 
|---|
 | 30 | +tprogs-y += test_cgrp2_sock2  | 
|---|
 | 31 | +tprogs-y += xdp1  | 
|---|
 | 32 | +tprogs-y += xdp2  | 
|---|
 | 33 | +tprogs-y += xdp_router_ipv4  | 
|---|
 | 34 | +tprogs-y += test_current_task_under_cgroup  | 
|---|
 | 35 | +tprogs-y += trace_event  | 
|---|
 | 36 | +tprogs-y += sampleip  | 
|---|
 | 37 | +tprogs-y += tc_l2_redirect  | 
|---|
 | 38 | +tprogs-y += lwt_len_hist  | 
|---|
 | 39 | +tprogs-y += xdp_tx_iptunnel  | 
|---|
 | 40 | +tprogs-y += test_map_in_map  | 
|---|
 | 41 | +tprogs-y += per_socket_stats_example  | 
|---|
 | 42 | +tprogs-y += xdp_redirect  | 
|---|
 | 43 | +tprogs-y += xdp_redirect_map  | 
|---|
 | 44 | +tprogs-y += xdp_redirect_cpu  | 
|---|
 | 45 | +tprogs-y += xdp_monitor  | 
|---|
 | 46 | +tprogs-y += xdp_rxq_info  | 
|---|
 | 47 | +tprogs-y += syscall_tp  | 
|---|
 | 48 | +tprogs-y += cpustat  | 
|---|
 | 49 | +tprogs-y += xdp_adjust_tail  | 
|---|
 | 50 | +tprogs-y += xdpsock  | 
|---|
 | 51 | +tprogs-y += xsk_fwd  | 
|---|
 | 52 | +tprogs-y += xdp_fwd  | 
|---|
 | 53 | +tprogs-y += task_fd_query  | 
|---|
 | 54 | +tprogs-y += xdp_sample_pkts  | 
|---|
 | 55 | +tprogs-y += ibumad  | 
|---|
 | 56 | +tprogs-y += hbm  | 
|---|
| 56 | 57 |   | 
|---|
| 57 | 58 |  # Libbpf dependencies | 
|---|
| 58 | 59 |  LIBBPF = $(TOOLS_PATH)/lib/bpf/libbpf.a | 
|---|
| .. | .. | 
|---|
| 60 | 61 |  CGROUP_HELPERS := ../../tools/testing/selftests/bpf/cgroup_helpers.o | 
|---|
| 61 | 62 |  TRACE_HELPERS := ../../tools/testing/selftests/bpf/trace_helpers.o | 
|---|
| 62 | 63 |   | 
|---|
| 63 |  | -fds_example-objs := bpf_load.o fds_example.o  | 
|---|
| 64 |  | -sockex1-objs := bpf_load.o sockex1_user.o  | 
|---|
| 65 |  | -sockex2-objs := bpf_load.o sockex2_user.o  | 
|---|
| 66 |  | -sockex3-objs := bpf_load.o sockex3_user.o  | 
|---|
| 67 |  | -tracex1-objs := bpf_load.o tracex1_user.o  | 
|---|
| 68 |  | -tracex2-objs := bpf_load.o tracex2_user.o  | 
|---|
| 69 |  | -tracex3-objs := bpf_load.o tracex3_user.o  | 
|---|
| 70 |  | -tracex4-objs := bpf_load.o tracex4_user.o  | 
|---|
| 71 |  | -tracex5-objs := bpf_load.o tracex5_user.o  | 
|---|
| 72 |  | -tracex6-objs := bpf_load.o tracex6_user.o  | 
|---|
| 73 |  | -tracex7-objs := bpf_load.o tracex7_user.o  | 
|---|
| 74 |  | -load_sock_ops-objs := bpf_load.o load_sock_ops.o  | 
|---|
| 75 |  | -test_probe_write_user-objs := bpf_load.o test_probe_write_user_user.o  | 
|---|
| 76 |  | -trace_output-objs := bpf_load.o trace_output_user.o $(TRACE_HELPERS)  | 
|---|
| 77 |  | -lathist-objs := bpf_load.o lathist_user.o  | 
|---|
| 78 |  | -offwaketime-objs := bpf_load.o offwaketime_user.o $(TRACE_HELPERS)  | 
|---|
| 79 |  | -spintest-objs := bpf_load.o spintest_user.o $(TRACE_HELPERS)  | 
|---|
| 80 |  | -map_perf_test-objs := bpf_load.o map_perf_test_user.o  | 
|---|
 | 64 | +fds_example-objs := fds_example.o  | 
|---|
 | 65 | +sockex1-objs := sockex1_user.o  | 
|---|
 | 66 | +sockex2-objs := sockex2_user.o  | 
|---|
 | 67 | +sockex3-objs := sockex3_user.o  | 
|---|
 | 68 | +tracex1-objs := tracex1_user.o $(TRACE_HELPERS)  | 
|---|
 | 69 | +tracex2-objs := tracex2_user.o  | 
|---|
 | 70 | +tracex3-objs := tracex3_user.o  | 
|---|
 | 71 | +tracex4-objs := tracex4_user.o  | 
|---|
 | 72 | +tracex5-objs := tracex5_user.o $(TRACE_HELPERS)  | 
|---|
 | 73 | +tracex6-objs := tracex6_user.o  | 
|---|
 | 74 | +tracex7-objs := tracex7_user.o  | 
|---|
 | 75 | +test_probe_write_user-objs := test_probe_write_user_user.o  | 
|---|
 | 76 | +trace_output-objs := trace_output_user.o $(TRACE_HELPERS)  | 
|---|
 | 77 | +lathist-objs := lathist_user.o  | 
|---|
 | 78 | +offwaketime-objs := offwaketime_user.o $(TRACE_HELPERS)  | 
|---|
 | 79 | +spintest-objs := spintest_user.o $(TRACE_HELPERS)  | 
|---|
 | 80 | +map_perf_test-objs := map_perf_test_user.o  | 
|---|
| 81 | 81 |  test_overhead-objs := bpf_load.o test_overhead_user.o | 
|---|
| 82 | 82 |  test_cgrp2_array_pin-objs := test_cgrp2_array_pin.o | 
|---|
| 83 | 83 |  test_cgrp2_attach-objs := test_cgrp2_attach.o | 
|---|
| 84 |  | -test_cgrp2_attach2-objs := test_cgrp2_attach2.o $(CGROUP_HELPERS)  | 
|---|
| 85 | 84 |  test_cgrp2_sock-objs := test_cgrp2_sock.o | 
|---|
| 86 | 85 |  test_cgrp2_sock2-objs := bpf_load.o test_cgrp2_sock2.o | 
|---|
| 87 | 86 |  xdp1-objs := xdp1_user.o | 
|---|
| 88 | 87 |  # reuse xdp1 source intentionally | 
|---|
| 89 | 88 |  xdp2-objs := xdp1_user.o | 
|---|
| 90 |  | -xdp_router_ipv4-objs := bpf_load.o xdp_router_ipv4_user.o  | 
|---|
| 91 |  | -test_current_task_under_cgroup-objs := bpf_load.o $(CGROUP_HELPERS) \  | 
|---|
 | 89 | +xdp_router_ipv4-objs := xdp_router_ipv4_user.o  | 
|---|
 | 90 | +test_current_task_under_cgroup-objs := $(CGROUP_HELPERS) \  | 
|---|
| 92 | 91 |  				       test_current_task_under_cgroup_user.o | 
|---|
| 93 |  | -trace_event-objs := bpf_load.o trace_event_user.o $(TRACE_HELPERS)  | 
|---|
| 94 |  | -sampleip-objs := bpf_load.o sampleip_user.o $(TRACE_HELPERS)  | 
|---|
 | 92 | +trace_event-objs := trace_event_user.o $(TRACE_HELPERS)  | 
|---|
 | 93 | +sampleip-objs := sampleip_user.o $(TRACE_HELPERS)  | 
|---|
| 95 | 94 |  tc_l2_redirect-objs := bpf_load.o tc_l2_redirect_user.o | 
|---|
| 96 | 95 |  lwt_len_hist-objs := bpf_load.o lwt_len_hist_user.o | 
|---|
| 97 |  | -xdp_tx_iptunnel-objs := bpf_load.o xdp_tx_iptunnel_user.o  | 
|---|
| 98 |  | -test_map_in_map-objs := bpf_load.o test_map_in_map_user.o  | 
|---|
 | 96 | +xdp_tx_iptunnel-objs := xdp_tx_iptunnel_user.o  | 
|---|
 | 97 | +test_map_in_map-objs := test_map_in_map_user.o  | 
|---|
| 99 | 98 |  per_socket_stats_example-objs := cookie_uid_helper_example.o | 
|---|
| 100 |  | -xdp_redirect-objs := bpf_load.o xdp_redirect_user.o  | 
|---|
| 101 |  | -xdp_redirect_map-objs := bpf_load.o xdp_redirect_map_user.o  | 
|---|
| 102 |  | -xdp_redirect_cpu-objs := bpf_load.o xdp_redirect_cpu_user.o  | 
|---|
| 103 |  | -xdp_monitor-objs := bpf_load.o xdp_monitor_user.o  | 
|---|
 | 99 | +xdp_redirect-objs := xdp_redirect_user.o  | 
|---|
 | 100 | +xdp_redirect_map-objs := xdp_redirect_map_user.o  | 
|---|
 | 101 | +xdp_redirect_cpu-objs := xdp_redirect_cpu_user.o  | 
|---|
 | 102 | +xdp_monitor-objs := xdp_monitor_user.o  | 
|---|
| 104 | 103 |  xdp_rxq_info-objs := xdp_rxq_info_user.o | 
|---|
| 105 |  | -syscall_tp-objs := bpf_load.o syscall_tp_user.o  | 
|---|
| 106 |  | -cpustat-objs := bpf_load.o cpustat_user.o  | 
|---|
 | 104 | +syscall_tp-objs := syscall_tp_user.o  | 
|---|
 | 105 | +cpustat-objs := cpustat_user.o  | 
|---|
| 107 | 106 |  xdp_adjust_tail-objs := xdp_adjust_tail_user.o | 
|---|
| 108 | 107 |  xdpsock-objs := xdpsock_user.o | 
|---|
 | 108 | +xsk_fwd-objs := xsk_fwd.o  | 
|---|
| 109 | 109 |  xdp_fwd-objs := xdp_fwd_user.o | 
|---|
| 110 | 110 |  task_fd_query-objs := bpf_load.o task_fd_query_user.o $(TRACE_HELPERS) | 
|---|
| 111 | 111 |  xdp_sample_pkts-objs := xdp_sample_pkts_user.o $(TRACE_HELPERS) | 
|---|
 | 112 | +ibumad-objs := bpf_load.o ibumad_user.o $(TRACE_HELPERS)  | 
|---|
 | 113 | +hbm-objs := bpf_load.o hbm.o $(CGROUP_HELPERS)  | 
|---|
| 112 | 114 |   | 
|---|
| 113 | 115 |  # Tell kbuild to always build the programs | 
|---|
| 114 |  | -always := $(hostprogs-y)  | 
|---|
| 115 |  | -always += sockex1_kern.o  | 
|---|
| 116 |  | -always += sockex2_kern.o  | 
|---|
| 117 |  | -always += sockex3_kern.o  | 
|---|
| 118 |  | -always += tracex1_kern.o  | 
|---|
| 119 |  | -always += tracex2_kern.o  | 
|---|
| 120 |  | -always += tracex3_kern.o  | 
|---|
| 121 |  | -always += tracex4_kern.o  | 
|---|
| 122 |  | -always += tracex5_kern.o  | 
|---|
| 123 |  | -always += tracex6_kern.o  | 
|---|
| 124 |  | -always += tracex7_kern.o  | 
|---|
| 125 |  | -always += sock_flags_kern.o  | 
|---|
| 126 |  | -always += test_probe_write_user_kern.o  | 
|---|
| 127 |  | -always += trace_output_kern.o  | 
|---|
| 128 |  | -always += tcbpf1_kern.o  | 
|---|
| 129 |  | -always += tc_l2_redirect_kern.o  | 
|---|
| 130 |  | -always += lathist_kern.o  | 
|---|
| 131 |  | -always += offwaketime_kern.o  | 
|---|
| 132 |  | -always += spintest_kern.o  | 
|---|
| 133 |  | -always += map_perf_test_kern.o  | 
|---|
| 134 |  | -always += test_overhead_tp_kern.o  | 
|---|
| 135 |  | -always += test_overhead_raw_tp_kern.o  | 
|---|
| 136 |  | -always += test_overhead_kprobe_kern.o  | 
|---|
| 137 |  | -always += parse_varlen.o parse_simple.o parse_ldabs.o  | 
|---|
| 138 |  | -always += test_cgrp2_tc_kern.o  | 
|---|
| 139 |  | -always += xdp1_kern.o  | 
|---|
| 140 |  | -always += xdp2_kern.o  | 
|---|
| 141 |  | -always += xdp_router_ipv4_kern.o  | 
|---|
| 142 |  | -always += test_current_task_under_cgroup_kern.o  | 
|---|
| 143 |  | -always += trace_event_kern.o  | 
|---|
| 144 |  | -always += sampleip_kern.o  | 
|---|
| 145 |  | -always += lwt_len_hist_kern.o  | 
|---|
| 146 |  | -always += xdp_tx_iptunnel_kern.o  | 
|---|
| 147 |  | -always += test_map_in_map_kern.o  | 
|---|
| 148 |  | -always += cookie_uid_helper_example.o  | 
|---|
| 149 |  | -always += tcp_synrto_kern.o  | 
|---|
| 150 |  | -always += tcp_rwnd_kern.o  | 
|---|
| 151 |  | -always += tcp_bufs_kern.o  | 
|---|
| 152 |  | -always += tcp_cong_kern.o  | 
|---|
| 153 |  | -always += tcp_iw_kern.o  | 
|---|
| 154 |  | -always += tcp_clamp_kern.o  | 
|---|
| 155 |  | -always += tcp_basertt_kern.o  | 
|---|
| 156 |  | -always += xdp_redirect_kern.o  | 
|---|
| 157 |  | -always += xdp_redirect_map_kern.o  | 
|---|
| 158 |  | -always += xdp_redirect_cpu_kern.o  | 
|---|
| 159 |  | -always += xdp_monitor_kern.o  | 
|---|
| 160 |  | -always += xdp_rxq_info_kern.o  | 
|---|
| 161 |  | -always += xdp2skb_meta_kern.o  | 
|---|
| 162 |  | -always += syscall_tp_kern.o  | 
|---|
| 163 |  | -always += cpustat_kern.o  | 
|---|
| 164 |  | -always += xdp_adjust_tail_kern.o  | 
|---|
| 165 |  | -always += xdpsock_kern.o  | 
|---|
| 166 |  | -always += xdp_fwd_kern.o  | 
|---|
| 167 |  | -always += task_fd_query_kern.o  | 
|---|
| 168 |  | -always += xdp_sample_pkts_kern.o  | 
|---|
 | 116 | +always-y := $(tprogs-y)  | 
|---|
 | 117 | +always-y += sockex1_kern.o  | 
|---|
 | 118 | +always-y += sockex2_kern.o  | 
|---|
 | 119 | +always-y += sockex3_kern.o  | 
|---|
 | 120 | +always-y += tracex1_kern.o  | 
|---|
 | 121 | +always-y += tracex2_kern.o  | 
|---|
 | 122 | +always-y += tracex3_kern.o  | 
|---|
 | 123 | +always-y += tracex4_kern.o  | 
|---|
 | 124 | +always-y += tracex5_kern.o  | 
|---|
 | 125 | +always-y += tracex6_kern.o  | 
|---|
 | 126 | +always-y += tracex7_kern.o  | 
|---|
 | 127 | +always-y += sock_flags_kern.o  | 
|---|
 | 128 | +always-y += test_probe_write_user_kern.o  | 
|---|
 | 129 | +always-y += trace_output_kern.o  | 
|---|
 | 130 | +always-y += tcbpf1_kern.o  | 
|---|
 | 131 | +always-y += tc_l2_redirect_kern.o  | 
|---|
 | 132 | +always-y += lathist_kern.o  | 
|---|
 | 133 | +always-y += offwaketime_kern.o  | 
|---|
 | 134 | +always-y += spintest_kern.o  | 
|---|
 | 135 | +always-y += map_perf_test_kern.o  | 
|---|
 | 136 | +always-y += test_overhead_tp_kern.o  | 
|---|
 | 137 | +always-y += test_overhead_raw_tp_kern.o  | 
|---|
 | 138 | +always-y += test_overhead_kprobe_kern.o  | 
|---|
 | 139 | +always-y += parse_varlen.o parse_simple.o parse_ldabs.o  | 
|---|
 | 140 | +always-y += test_cgrp2_tc_kern.o  | 
|---|
 | 141 | +always-y += xdp1_kern.o  | 
|---|
 | 142 | +always-y += xdp2_kern.o  | 
|---|
 | 143 | +always-y += xdp_router_ipv4_kern.o  | 
|---|
 | 144 | +always-y += test_current_task_under_cgroup_kern.o  | 
|---|
 | 145 | +always-y += trace_event_kern.o  | 
|---|
 | 146 | +always-y += sampleip_kern.o  | 
|---|
 | 147 | +always-y += lwt_len_hist_kern.o  | 
|---|
 | 148 | +always-y += xdp_tx_iptunnel_kern.o  | 
|---|
 | 149 | +always-y += test_map_in_map_kern.o  | 
|---|
 | 150 | +always-y += tcp_synrto_kern.o  | 
|---|
 | 151 | +always-y += tcp_rwnd_kern.o  | 
|---|
 | 152 | +always-y += tcp_bufs_kern.o  | 
|---|
 | 153 | +always-y += tcp_cong_kern.o  | 
|---|
 | 154 | +always-y += tcp_iw_kern.o  | 
|---|
 | 155 | +always-y += tcp_clamp_kern.o  | 
|---|
 | 156 | +always-y += tcp_basertt_kern.o  | 
|---|
 | 157 | +always-y += tcp_tos_reflect_kern.o  | 
|---|
 | 158 | +always-y += tcp_dumpstats_kern.o  | 
|---|
 | 159 | +always-y += xdp_redirect_kern.o  | 
|---|
 | 160 | +always-y += xdp_redirect_map_kern.o  | 
|---|
 | 161 | +always-y += xdp_redirect_cpu_kern.o  | 
|---|
 | 162 | +always-y += xdp_monitor_kern.o  | 
|---|
 | 163 | +always-y += xdp_rxq_info_kern.o  | 
|---|
 | 164 | +always-y += xdp2skb_meta_kern.o  | 
|---|
 | 165 | +always-y += syscall_tp_kern.o  | 
|---|
 | 166 | +always-y += cpustat_kern.o  | 
|---|
 | 167 | +always-y += xdp_adjust_tail_kern.o  | 
|---|
 | 168 | +always-y += xdp_fwd_kern.o  | 
|---|
 | 169 | +always-y += task_fd_query_kern.o  | 
|---|
 | 170 | +always-y += xdp_sample_pkts_kern.o  | 
|---|
 | 171 | +always-y += ibumad_kern.o  | 
|---|
 | 172 | +always-y += hbm_out_kern.o  | 
|---|
 | 173 | +always-y += hbm_edt_kern.o  | 
|---|
 | 174 | +always-y += xdpsock_kern.o  | 
|---|
| 169 | 175 |   | 
|---|
| 170 |  | -KBUILD_HOSTCFLAGS += -I$(objtree)/usr/include  | 
|---|
| 171 |  | -KBUILD_HOSTCFLAGS += -I$(srctree)/tools/lib/  | 
|---|
| 172 |  | -KBUILD_HOSTCFLAGS += -I$(srctree)/tools/testing/selftests/bpf/  | 
|---|
| 173 |  | -KBUILD_HOSTCFLAGS += -I$(srctree)/tools/lib/ -I$(srctree)/tools/include  | 
|---|
| 174 |  | -KBUILD_HOSTCFLAGS += -I$(srctree)/tools/perf  | 
|---|
| 175 |  | -KBUILD_HOSTCFLAGS += -DHAVE_ATTR_TEST=0  | 
|---|
 | 176 | +ifeq ($(ARCH), arm)  | 
|---|
 | 177 | +# Strip all except -D__LINUX_ARM_ARCH__ option needed to handle linux  | 
|---|
 | 178 | +# headers when arm instruction set identification is requested.  | 
|---|
 | 179 | +ARM_ARCH_SELECTOR := $(filter -D__LINUX_ARM_ARCH__%, $(KBUILD_CFLAGS))  | 
|---|
 | 180 | +BPF_EXTRA_CFLAGS := $(ARM_ARCH_SELECTOR)  | 
|---|
 | 181 | +TPROGS_CFLAGS += $(ARM_ARCH_SELECTOR)  | 
|---|
 | 182 | +endif  | 
|---|
| 176 | 183 |   | 
|---|
| 177 |  | -HOSTCFLAGS_bpf_load.o += -I$(objtree)/usr/include -Wno-unused-variable  | 
|---|
| 178 |  | -HOSTCFLAGS_trace_helpers.o += -I$(srctree)/tools/lib/bpf/  | 
|---|
 | 184 | +TPROGS_CFLAGS += -Wall -O2  | 
|---|
 | 185 | +TPROGS_CFLAGS += -Wmissing-prototypes  | 
|---|
 | 186 | +TPROGS_CFLAGS += -Wstrict-prototypes  | 
|---|
| 179 | 187 |   | 
|---|
| 180 |  | -HOSTCFLAGS_trace_output_user.o += -I$(srctree)/tools/lib/bpf/  | 
|---|
| 181 |  | -HOSTCFLAGS_offwaketime_user.o += -I$(srctree)/tools/lib/bpf/  | 
|---|
| 182 |  | -HOSTCFLAGS_spintest_user.o += -I$(srctree)/tools/lib/bpf/  | 
|---|
| 183 |  | -HOSTCFLAGS_trace_event_user.o += -I$(srctree)/tools/lib/bpf/  | 
|---|
| 184 |  | -HOSTCFLAGS_sampleip_user.o += -I$(srctree)/tools/lib/bpf/  | 
|---|
| 185 |  | -HOSTCFLAGS_task_fd_query_user.o += -I$(srctree)/tools/lib/bpf/  | 
|---|
| 186 |  | -HOSTCFLAGS_xdp_sample_pkts_user.o += -I$(srctree)/tools/lib/bpf/  | 
|---|
 | 188 | +TPROGS_CFLAGS += -I$(objtree)/usr/include  | 
|---|
 | 189 | +TPROGS_CFLAGS += -I$(srctree)/tools/testing/selftests/bpf/  | 
|---|
 | 190 | +TPROGS_CFLAGS += -I$(srctree)/tools/lib/  | 
|---|
 | 191 | +TPROGS_CFLAGS += -I$(srctree)/tools/include  | 
|---|
 | 192 | +TPROGS_CFLAGS += -I$(srctree)/tools/perf  | 
|---|
 | 193 | +TPROGS_CFLAGS += -DHAVE_ATTR_TEST=0  | 
|---|
| 187 | 194 |   | 
|---|
| 188 |  | -KBUILD_HOSTLDLIBS		+= $(LIBBPF) -lelf  | 
|---|
| 189 |  | -HOSTLDLIBS_tracex4		+= -lrt  | 
|---|
| 190 |  | -HOSTLDLIBS_trace_output	+= -lrt  | 
|---|
| 191 |  | -HOSTLDLIBS_map_perf_test	+= -lrt  | 
|---|
| 192 |  | -HOSTLDLIBS_test_overhead	+= -lrt  | 
|---|
| 193 |  | -HOSTLDLIBS_xdpsock		+= -pthread  | 
|---|
 | 195 | +ifdef SYSROOT  | 
|---|
 | 196 | +TPROGS_CFLAGS += --sysroot=$(SYSROOT)  | 
|---|
 | 197 | +TPROGS_LDFLAGS := -L$(SYSROOT)/usr/lib  | 
|---|
 | 198 | +endif  | 
|---|
 | 199 | +  | 
|---|
 | 200 | +TPROGCFLAGS_bpf_load.o += -Wno-unused-variable  | 
|---|
 | 201 | +  | 
|---|
 | 202 | +TPROGS_LDLIBS			+= $(LIBBPF) -lelf -lz  | 
|---|
 | 203 | +TPROGLDLIBS_tracex4		+= -lrt  | 
|---|
 | 204 | +TPROGLDLIBS_trace_output	+= -lrt  | 
|---|
 | 205 | +TPROGLDLIBS_map_perf_test	+= -lrt  | 
|---|
 | 206 | +TPROGLDLIBS_test_overhead	+= -lrt  | 
|---|
 | 207 | +TPROGLDLIBS_xdpsock		+= -pthread  | 
|---|
 | 208 | +TPROGLDLIBS_xsk_fwd		+= -pthread  | 
|---|
| 194 | 209 |   | 
|---|
| 195 | 210 |  # Allows pointing LLC/CLANG to a LLVM backend with bpf support, redefine on cmdline: | 
|---|
| 196 |  | -#  make samples/bpf/ LLC=~/git/llvm/build/bin/llc CLANG=~/git/llvm/build/bin/clang  | 
|---|
 | 211 | +#  make M=samples/bpf/ LLC=~/git/llvm/build/bin/llc CLANG=~/git/llvm/build/bin/clang  | 
|---|
| 197 | 212 |  LLC ?= llc | 
|---|
| 198 | 213 |  CLANG ?= clang | 
|---|
 | 214 | +OPT ?= opt  | 
|---|
 | 215 | +LLVM_DIS ?= llvm-dis  | 
|---|
| 199 | 216 |  LLVM_OBJCOPY ?= llvm-objcopy | 
|---|
| 200 | 217 |  BTF_PAHOLE ?= pahole | 
|---|
| 201 | 218 |   | 
|---|
| 202 | 219 |  # Detect that we're cross compiling and use the cross compiler | 
|---|
| 203 | 220 |  ifdef CROSS_COMPILE | 
|---|
| 204 |  | -HOSTCC = $(CROSS_COMPILE)gcc  | 
|---|
| 205 |  | -CLANG_ARCH_ARGS = -target $(ARCH)  | 
|---|
 | 221 | +CLANG_ARCH_ARGS = --target=$(notdir $(CROSS_COMPILE:%-=%))  | 
|---|
 | 222 | +endif  | 
|---|
 | 223 | +  | 
|---|
 | 224 | +# Don't evaluate probes and warnings if we need to run make recursively  | 
|---|
 | 225 | +ifneq ($(src),)  | 
|---|
 | 226 | +HDR_PROBE := $(shell printf "\#include <linux/types.h>\n struct list_head { int a; }; int main() { return 0; }" | \  | 
|---|
 | 227 | +	$(CC) $(TPROGS_CFLAGS) $(TPROGS_LDFLAGS) -x c - \  | 
|---|
 | 228 | +	-o /dev/null 2>/dev/null && echo okay)  | 
|---|
 | 229 | +  | 
|---|
 | 230 | +ifeq ($(HDR_PROBE),)  | 
|---|
 | 231 | +$(warning WARNING: Detected possible issues with include path.)  | 
|---|
 | 232 | +$(warning WARNING: Please install kernel headers locally (make headers_install).)  | 
|---|
| 206 | 233 |  endif | 
|---|
| 207 | 234 |   | 
|---|
| 208 | 235 |  BTF_LLC_PROBE := $(shell $(LLC) -march=bpf -mattr=help 2>&1 | grep dwarfris) | 
|---|
| 209 | 236 |  BTF_PAHOLE_PROBE := $(shell $(BTF_PAHOLE) --help 2>&1 | grep BTF) | 
|---|
| 210 | 237 |  BTF_OBJCOPY_PROBE := $(shell $(LLVM_OBJCOPY) --help 2>&1 | grep -i 'usage.*llvm') | 
|---|
 | 238 | +BTF_LLVM_PROBE := $(shell echo "int main() { return 0; }" | \  | 
|---|
 | 239 | +			  $(CLANG) -target bpf -O2 -g -c -x c - -o ./llvm_btf_verify.o; \  | 
|---|
 | 240 | +			  readelf -S ./llvm_btf_verify.o | grep BTF; \  | 
|---|
 | 241 | +			  /bin/rm -f ./llvm_btf_verify.o)  | 
|---|
| 211 | 242 |   | 
|---|
 | 243 | +BPF_EXTRA_CFLAGS += -fno-stack-protector  | 
|---|
 | 244 | +ifneq ($(BTF_LLVM_PROBE),)  | 
|---|
 | 245 | +	BPF_EXTRA_CFLAGS += -g  | 
|---|
 | 246 | +else  | 
|---|
| 212 | 247 |  ifneq ($(and $(BTF_LLC_PROBE),$(BTF_PAHOLE_PROBE),$(BTF_OBJCOPY_PROBE)),) | 
|---|
| 213 |  | -	EXTRA_CFLAGS += -g  | 
|---|
 | 248 | +	BPF_EXTRA_CFLAGS += -g  | 
|---|
| 214 | 249 |  	LLC_FLAGS += -mattr=dwarfris | 
|---|
| 215 | 250 |  	DWARF2BTF = y | 
|---|
 | 251 | +endif  | 
|---|
 | 252 | +endif  | 
|---|
| 216 | 253 |  endif | 
|---|
| 217 | 254 |   | 
|---|
| 218 | 255 |  # Trick to allow make to be run from this directory | 
|---|
| 219 | 256 |  all: | 
|---|
| 220 |  | -	$(MAKE) -C ../../ $(CURDIR)/ BPF_SAMPLES_PATH=$(CURDIR)  | 
|---|
 | 257 | +	$(MAKE) -C ../../ M=$(CURDIR) BPF_SAMPLES_PATH=$(CURDIR)  | 
|---|
| 221 | 258 |   | 
|---|
| 222 | 259 |  clean: | 
|---|
| 223 | 260 |  	$(MAKE) -C ../../ M=$(CURDIR) clean | 
|---|
| .. | .. | 
|---|
| 225 | 262 |   | 
|---|
| 226 | 263 |  $(LIBBPF): FORCE | 
|---|
| 227 | 264 |  # Fix up variables inherited from Kbuild that tools/ build system won't like | 
|---|
| 228 |  | -	$(MAKE) -C $(dir $@) RM='rm -rf' LDFLAGS= srctree=$(BPF_SAMPLES_PATH)/../../ O=  | 
|---|
| 229 |  | -  | 
|---|
| 230 |  | -$(obj)/syscall_nrs.s:	$(src)/syscall_nrs.c  | 
|---|
| 231 |  | -	$(call if_changed_dep,cc_s_c)  | 
|---|
 | 265 | +	$(MAKE) -C $(dir $@) RM='rm -rf' EXTRA_CFLAGS="$(TPROGS_CFLAGS)" \  | 
|---|
 | 266 | +		LDFLAGS=$(TPROGS_LDFLAGS) srctree=$(BPF_SAMPLES_PATH)/../../ O=  | 
|---|
| 232 | 267 |   | 
|---|
| 233 | 268 |  $(obj)/syscall_nrs.h:	$(obj)/syscall_nrs.s FORCE | 
|---|
| 234 | 269 |  	$(call filechk,offsets,__SYSCALL_NRS_H__) | 
|---|
| 235 | 270 |   | 
|---|
 | 271 | +targets += syscall_nrs.s  | 
|---|
| 236 | 272 |  clean-files += syscall_nrs.h | 
|---|
| 237 | 273 |   | 
|---|
| 238 | 274 |  FORCE: | 
|---|
| .. | .. | 
|---|
| 260 | 296 |  $(src)/*.c: verify_target_bpf $(LIBBPF) | 
|---|
| 261 | 297 |   | 
|---|
| 262 | 298 |  $(obj)/tracex5_kern.o: $(obj)/syscall_nrs.h | 
|---|
 | 299 | +$(obj)/hbm_out_kern.o: $(src)/hbm.h $(src)/hbm_kern.h  | 
|---|
 | 300 | +$(obj)/hbm.o: $(src)/hbm.h  | 
|---|
 | 301 | +$(obj)/hbm_edt_kern.o: $(src)/hbm.h $(src)/hbm_kern.h  | 
|---|
 | 302 | +  | 
|---|
 | 303 | +-include $(BPF_SAMPLES_PATH)/Makefile.target  | 
|---|
| 263 | 304 |   | 
|---|
| 264 | 305 |  # asm/sysreg.h - inline assembly used by it is incompatible with llvm. | 
|---|
| 265 | 306 |  # But, there is no easy way to fix it, so just exclude it since it is | 
|---|
| 266 | 307 |  # useless for BPF samples. | 
|---|
 | 308 | +# below we use long chain of commands, clang | opt | llvm-dis | llc,  | 
|---|
 | 309 | +# to generate final object file. 'clang' compiles the source into IR  | 
|---|
 | 310 | +# with native target, e.g., x64, arm64, etc. 'opt' does bpf CORE IR builtin  | 
|---|
 | 311 | +# processing (llvm12) and IR optimizations. 'llvm-dis' converts  | 
|---|
 | 312 | +# 'opt' output to IR, and finally 'llc' generates bpf byte code.  | 
|---|
| 267 | 313 |  $(obj)/%.o: $(src)/%.c | 
|---|
| 268 | 314 |  	@echo "  CLANG-bpf " $@ | 
|---|
| 269 |  | -	$(Q)$(CLANG) $(NOSTDINC_FLAGS) $(LINUXINCLUDE) $(EXTRA_CFLAGS) -I$(obj) \  | 
|---|
| 270 |  | -		-I$(srctree)/tools/testing/selftests/bpf/ \  | 
|---|
 | 315 | +	$(Q)$(CLANG) $(NOSTDINC_FLAGS) $(LINUXINCLUDE) $(BPF_EXTRA_CFLAGS) \  | 
|---|
 | 316 | +		-I$(obj) -I$(srctree)/tools/testing/selftests/bpf/ \  | 
|---|
 | 317 | +		-I$(srctree)/tools/lib/ \  | 
|---|
| 271 | 318 |  		-D__KERNEL__ -D__BPF_TRACING__ -Wno-unused-value -Wno-pointer-sign \ | 
|---|
| 272 |  | -		-D__TARGET_ARCH_$(ARCH) -Wno-compare-distinct-pointer-types \  | 
|---|
 | 319 | +		-D__TARGET_ARCH_$(SRCARCH) -Wno-compare-distinct-pointer-types \  | 
|---|
| 273 | 320 |  		-Wno-gnu-variable-sized-type-not-at-end \ | 
|---|
| 274 | 321 |  		-Wno-address-of-packed-member -Wno-tautological-compare \ | 
|---|
| 275 | 322 |  		-Wno-unknown-warning-option $(CLANG_ARCH_ARGS) \ | 
|---|
| 276 |  | -		-O2 -emit-llvm -c $< -o -| $(LLC) -march=bpf $(LLC_FLAGS) -filetype=obj -o $@  | 
|---|
 | 323 | +		-I$(srctree)/samples/bpf/ -include asm_goto_workaround.h \  | 
|---|
 | 324 | +		-O2 -emit-llvm -Xclang -disable-llvm-passes -c $< -o - | \  | 
|---|
 | 325 | +		$(OPT) -O2 -mtriple=bpf-pc-linux | $(LLVM_DIS) | \  | 
|---|
 | 326 | +		$(LLC) -march=bpf $(LLC_FLAGS) -filetype=obj -o $@  | 
|---|
| 277 | 327 |  ifeq ($(DWARF2BTF),y) | 
|---|
| 278 | 328 |  	$(BTF_PAHOLE) -J $@ | 
|---|
| 279 | 329 |  endif | 
|---|