1// 2// Copyright (C) 2022 The Android Open Source Project 3// 4// Licensed under the Apache License, Version 2.0 (the "License"); 5// you may not use this file except in compliance with the License. 6// You may obtain a copy of the License at 7// 8// http://www.apache.org/licenses/LICENSE-2.0 9// 10// Unless required by applicable law or agreed to in writing, software 11// distributed under the License is distributed on an "AS IS" BASIS, 12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13// See the License for the specific language governing permissions and 14// limitations under the License. 15// 16 17package { 18 // See: http://go/android-license-faq 19 // A large-scale-change added 'default_applicable_licenses' to import 20 // all of the 'license_kinds' from "external_bcc_license" 21 // to get the below license kinds: 22 // SPDX-license-identifier-Apache-2.0 23 // SPDX-license-identifier-GPL-2.0 24 default_applicable_licenses: ["external_bcc_license"], 25} 26 27cc_defaults { 28 name: "bcc_bpf_defaults", 29 compile_multilib: "first", 30 cflags: [ 31 "--target=bpf", 32 "-fno-data-sections", 33 "-fno-function-sections", 34 "-fno-stack-protector", 35 "-fno-unwind-tables", 36 "-mcpu=generic", 37 "-Wno-pointer-arith", 38 "-Wno-unused-command-line-argument", 39 "-Wno-unused-parameter", 40 ], 41 header_libs: [ 42 "bpf_prog_headers", 43 ], 44 generated_headers: ["libbpf_headers"], 45 arch: { 46 arm: { 47 local_include_dirs: ["arm64"], 48 cflags: [ 49 "-D__TARGET_ARCH_arm64", 50 ], 51 }, 52 arm64: { 53 local_include_dirs: ["arm64"], 54 cflags: [ 55 "-D__TARGET_ARCH_arm64", 56 ], 57 }, 58 x86: { 59 local_include_dirs: ["x86"], 60 cflags: [ 61 "-D__TARGET_ARCH_x86" 62 ], 63 }, 64 x86_64: { 65 local_include_dirs: ["x86"], 66 cflags: [ 67 "-D__TARGET_ARCH_x86" 68 ], 69 }, 70 }, 71 visibility: ["//visibility:private"], 72} 73 74genrule_defaults { 75 name: "bpf_skeleton_hdr_defaults", 76 tools: ["bpftool"], 77 cmd: "$(location bpftool) gen skeleton $(in) > $(out)", 78 visibility: ["//visibility:private"], 79 arch: { 80 arm: { 81 enabled: false, 82 }, 83 x86: { 84 enabled: false, 85 }, 86 }, 87} 88 89cc_defaults { 90 name: "bcc_binary_defaults", 91 generated_headers: [ 92 "libbpf_headers", 93 ], 94 local_include_dirs: [ 95 "android", 96 ], 97 srcs: [ 98 "android/argp.cpp", 99 "trace_helpers.c", 100 ], 101 static_libs: [ 102 "libbpf", 103 "libelf", 104 "libz", 105 ], 106 cflags: [ 107 "-Wno-pointer-bool-conversion", 108 "-Wno-pointer-arith", 109 "-Wno-unused-parameter", 110 "-Wno-unused-variable", 111 ], 112 arch: { 113 arm: { 114 enabled: false, 115 }, 116 x86: { 117 enabled: false, 118 }, 119 }, 120} 121 122cc_object { 123 name: "bindsnoop.bpf.o", 124 srcs: ["bindsnoop.bpf.c"], 125 defaults: ["bcc_bpf_defaults"], 126} 127 128genrule { 129 name: "bindsnoop.skel.h", 130 srcs: [":bindsnoop.bpf.o"], 131 out: ["bindsnoop.skel.h"], 132 defaults: ["bpf_skeleton_hdr_defaults"], 133} 134 135cc_binary { 136 name: "bindsnoop", 137 srcs: ["bindsnoop.c"], 138 generated_headers: ["bindsnoop.skel.h"], 139 defaults: ["bcc_binary_defaults"], 140} 141 142cc_object { 143 name: "cpudist.bpf.o", 144 srcs: ["cpudist.bpf.c"], 145 defaults: ["bcc_bpf_defaults"], 146} 147 148genrule { 149 name: "cpudist.skel.h", 150 srcs: [":cpudist.bpf.o"], 151 out: ["cpudist.skel.h"], 152 defaults: ["bpf_skeleton_hdr_defaults"], 153} 154 155cc_binary { 156 name: "cpudist", 157 srcs: ["cpudist.c"], 158 generated_headers: ["cpudist.skel.h"], 159 defaults: ["bcc_binary_defaults"], 160} 161 162cc_object { 163 name: "cpufreq.bpf.o", 164 srcs: ["cpufreq.bpf.c"], 165 defaults: ["bcc_bpf_defaults"], 166} 167 168genrule { 169 name: "cpufreq.skel.h", 170 srcs: [":cpufreq.bpf.o"], 171 out: ["cpufreq.skel.h"], 172 defaults: ["bpf_skeleton_hdr_defaults"], 173} 174 175cc_binary { 176 name: "cpufreq", 177 srcs: ["cpufreq.c"], 178 generated_headers: ["cpufreq.skel.h"], 179 defaults: ["bcc_binary_defaults"], 180} 181 182cc_object { 183 name: "drsnoop.bpf.o", 184 srcs: ["drsnoop.bpf.c"], 185 defaults: ["bcc_bpf_defaults"], 186} 187 188genrule { 189 name: "drsnoop.skel.h", 190 srcs: [":drsnoop.bpf.o"], 191 out: ["drsnoop.skel.h"], 192 defaults: ["bpf_skeleton_hdr_defaults"], 193} 194 195cc_binary { 196 name: "drsnoop", 197 srcs: ["drsnoop.c"], 198 generated_headers: ["drsnoop.skel.h"], 199 defaults: ["bcc_binary_defaults"], 200} 201 202cc_object { 203 name: "filelife.bpf.o", 204 srcs: ["filelife.bpf.c"], 205 defaults: ["bcc_bpf_defaults"], 206} 207 208genrule { 209 name: "filelife.skel.h", 210 srcs: [":filelife.bpf.o"], 211 out: ["filelife.skel.h"], 212 defaults: ["bpf_skeleton_hdr_defaults"], 213} 214 215cc_binary { 216 name: "filelife", 217 srcs: ["filelife.c"], 218 generated_headers: ["filelife.skel.h"], 219 defaults: ["bcc_binary_defaults"], 220} 221 222cc_object { 223 name: "filetop.bpf.o", 224 srcs: ["filetop.bpf.c"], 225 defaults: ["bcc_bpf_defaults"], 226} 227 228genrule { 229 name: "filetop.skel.h", 230 srcs: [":filetop.bpf.o"], 231 out: ["filetop.skel.h"], 232 defaults: ["bpf_skeleton_hdr_defaults"], 233} 234 235cc_binary { 236 name: "filetop", 237 srcs: ["filetop.c"], 238 generated_headers: ["filetop.skel.h"], 239 defaults: ["bcc_binary_defaults"], 240} 241 242cc_object { 243 name: "fsdist.bpf.o", 244 srcs: ["fsdist.bpf.c"], 245 defaults: ["bcc_bpf_defaults"], 246} 247 248genrule { 249 name: "fsdist.skel.h", 250 srcs: [":fsdist.bpf.o"], 251 out: ["fsdist.skel.h"], 252 defaults: ["bpf_skeleton_hdr_defaults"], 253} 254 255cc_binary { 256 name: "fsdist", 257 srcs: ["fsdist.c"], 258 generated_headers: ["fsdist.skel.h"], 259 defaults: ["bcc_binary_defaults"], 260} 261 262cc_object { 263 name: "fsslower.bpf.o", 264 srcs: ["fsslower.bpf.c"], 265 defaults: ["bcc_bpf_defaults"], 266} 267 268genrule { 269 name: "fsslower.skel.h", 270 srcs: [":fsslower.bpf.o"], 271 out: ["fsslower.skel.h"], 272 defaults: ["bpf_skeleton_hdr_defaults"], 273} 274 275cc_binary { 276 name: "fsslower", 277 srcs: ["fsslower.c"], 278 generated_headers: ["fsslower.skel.h"], 279 defaults: ["bcc_binary_defaults"], 280} 281 282cc_object { 283 name: "funclatency.bpf.o", 284 srcs: ["funclatency.bpf.c"], 285 defaults: ["bcc_bpf_defaults"], 286} 287 288genrule { 289 name: "funclatency.skel.h", 290 srcs: [":funclatency.bpf.o"], 291 out: ["funclatency.skel.h"], 292 defaults: ["bpf_skeleton_hdr_defaults"], 293} 294 295cc_binary { 296 name: "funclatency", 297 srcs: [ 298 "funclatency.c", 299 "uprobe_helpers.c", 300 ], 301 generated_headers: ["funclatency.skel.h"], 302 defaults: ["bcc_binary_defaults"], 303} 304 305cc_object { 306 name: "gethostlatency.bpf.o", 307 srcs: ["gethostlatency.bpf.c"], 308 defaults: ["bcc_bpf_defaults"], 309} 310 311genrule { 312 name: "gethostlatency.skel.h", 313 srcs: [":gethostlatency.bpf.o"], 314 out: ["gethostlatency.skel.h"], 315 defaults: ["bpf_skeleton_hdr_defaults"], 316} 317 318cc_binary { 319 name: "gethostlatency", 320 srcs: [ 321 "gethostlatency.c", 322 "uprobe_helpers.c", 323 ], 324 generated_headers: ["gethostlatency.skel.h"], 325 defaults: ["bcc_binary_defaults"], 326} 327 328cc_object { 329 name: "ksnoop.bpf.o", 330 srcs: ["ksnoop.bpf.c"], 331 defaults: ["bcc_bpf_defaults"], 332} 333 334genrule { 335 name: "ksnoop.skel.h", 336 srcs: [":ksnoop.bpf.o"], 337 out: ["ksnoop.skel.h"], 338 defaults: ["bpf_skeleton_hdr_defaults"], 339} 340 341cc_binary { 342 name: "ksnoop", 343 srcs: ["ksnoop.c"], 344 generated_headers: ["ksnoop.skel.h"], 345 defaults: ["bcc_binary_defaults"], 346} 347 348cc_object { 349 name: "llcstat.bpf.o", 350 srcs: ["llcstat.bpf.c"], 351 defaults: ["bcc_bpf_defaults"], 352} 353 354genrule { 355 name: "llcstat.skel.h", 356 srcs: [":llcstat.bpf.o"], 357 out: ["llcstat.skel.h"], 358 defaults: ["bpf_skeleton_hdr_defaults"], 359} 360 361cc_binary { 362 name: "llcstat", 363 srcs: ["llcstat.c"], 364 generated_headers: ["llcstat.skel.h"], 365 defaults: ["bcc_binary_defaults"], 366} 367 368cc_object { 369 name: "offcputime.bpf.o", 370 srcs: ["offcputime.bpf.c"], 371 defaults: ["bcc_bpf_defaults"], 372} 373 374genrule { 375 name: "offcputime.skel.h", 376 srcs: [":offcputime.bpf.o"], 377 out: ["offcputime.skel.h"], 378 defaults: ["bpf_skeleton_hdr_defaults"], 379} 380 381cc_binary { 382 name: "offcputime", 383 srcs: [ 384 "offcputime.c", 385 "uprobe_helpers.c", 386 ], 387 generated_headers: ["offcputime.skel.h"], 388 defaults: ["bcc_binary_defaults"], 389} 390 391cc_object { 392 name: "oomkill.bpf.o", 393 srcs: ["oomkill.bpf.c"], 394 defaults: ["bcc_bpf_defaults"], 395} 396 397genrule { 398 name: "oomkill.skel.h", 399 srcs: [":oomkill.bpf.o"], 400 out: ["oomkill.skel.h"], 401 defaults: ["bpf_skeleton_hdr_defaults"], 402} 403 404cc_binary { 405 name: "oomkill", 406 srcs: ["oomkill.c"], 407 generated_headers: ["oomkill.skel.h"], 408 defaults: ["bcc_binary_defaults"], 409} 410 411cc_object { 412 name: "runqlat.bpf.o", 413 srcs: ["runqlat.bpf.c"], 414 defaults: ["bcc_bpf_defaults"], 415} 416 417genrule { 418 name: "runqlat.skel.h", 419 srcs: [":runqlat.bpf.o"], 420 out: ["runqlat.skel.h"], 421 defaults: ["bpf_skeleton_hdr_defaults"], 422} 423 424cc_binary { 425 name: "runqlat", 426 srcs: ["runqlat.c"], 427 generated_headers: ["runqlat.skel.h"], 428 defaults: ["bcc_binary_defaults"], 429} 430 431cc_object { 432 name: "runqlen.bpf.o", 433 srcs: ["runqlen.bpf.c"], 434 defaults: ["bcc_bpf_defaults"], 435} 436 437genrule { 438 name: "runqlen.skel.h", 439 srcs: [":runqlen.bpf.o"], 440 out: ["runqlen.skel.h"], 441 defaults: ["bpf_skeleton_hdr_defaults"], 442} 443 444cc_binary { 445 name: "runqlen", 446 srcs: ["runqlen.c"], 447 generated_headers: ["runqlen.skel.h"], 448 defaults: ["bcc_binary_defaults"], 449} 450 451cc_object { 452 name: "runqslower.bpf.o", 453 srcs: ["runqslower.bpf.c"], 454 defaults: ["bcc_bpf_defaults"], 455} 456 457genrule { 458 name: "runqslower.skel.h", 459 srcs: [":runqslower.bpf.o"], 460 out: ["runqslower.skel.h"], 461 defaults: ["bpf_skeleton_hdr_defaults"], 462} 463 464cc_binary { 465 name: "runqslower", 466 srcs: ["runqslower.c"], 467 generated_headers: ["runqslower.skel.h"], 468 defaults: ["bcc_binary_defaults"], 469} 470 471cc_object { 472 name: "softirqs.bpf.o", 473 srcs: ["softirqs.bpf.c"], 474 defaults: ["bcc_bpf_defaults"], 475} 476 477genrule { 478 name: "softirqs.skel.h", 479 srcs: [":softirqs.bpf.o"], 480 out: ["softirqs.skel.h"], 481 defaults: ["bpf_skeleton_hdr_defaults"], 482} 483 484cc_binary { 485 name: "softirqs", 486 srcs: ["softirqs.c"], 487 generated_headers: ["softirqs.skel.h"], 488 defaults: ["bcc_binary_defaults"], 489} 490 491cc_object { 492 name: "solisten.bpf.o", 493 srcs: ["solisten.bpf.c"], 494 defaults: ["bcc_bpf_defaults"], 495} 496 497genrule { 498 name: "solisten.skel.h", 499 srcs: [":solisten.bpf.o"], 500 out: ["solisten.skel.h"], 501 defaults: ["bpf_skeleton_hdr_defaults"], 502} 503 504cc_binary { 505 name: "solisten", 506 srcs: ["solisten.c"], 507 generated_headers: ["solisten.skel.h"], 508 defaults: ["bcc_binary_defaults"], 509} 510 511cc_object { 512 name: "tcpconnect.bpf.o", 513 srcs: ["tcpconnect.bpf.c"], 514 defaults: ["bcc_bpf_defaults"], 515} 516 517genrule { 518 name: "tcpconnect.skel.h", 519 srcs: [":tcpconnect.bpf.o"], 520 out: ["tcpconnect.skel.h"], 521 defaults: ["bpf_skeleton_hdr_defaults"], 522} 523 524cc_binary { 525 name: "tcpconnect", 526 srcs: [ 527 "map_helpers.c", 528 "tcpconnect.c", 529 ], 530 generated_headers: ["tcpconnect.skel.h"], 531 defaults: ["bcc_binary_defaults"], 532} 533 534cc_object { 535 name: "tcprtt.bpf.o", 536 srcs: ["tcprtt.bpf.c"], 537 defaults: ["bcc_bpf_defaults"], 538} 539 540genrule { 541 name: "tcprtt.skel.h", 542 srcs: [":tcprtt.bpf.o"], 543 out: ["tcprtt.skel.h"], 544 defaults: ["bpf_skeleton_hdr_defaults"], 545} 546 547cc_binary { 548 name: "tcprtt", 549 srcs: ["tcprtt.c"], 550 generated_headers: ["tcprtt.skel.h"], 551 defaults: ["bcc_binary_defaults"], 552} 553 554cc_object { 555 name: "vfsstat.bpf.o", 556 srcs: ["vfsstat.bpf.c"], 557 defaults: ["bcc_bpf_defaults"], 558} 559 560genrule { 561 name: "vfsstat.skel.h", 562 srcs: [":vfsstat.bpf.o"], 563 out: ["vfsstat.skel.h"], 564 defaults: ["bpf_skeleton_hdr_defaults"], 565} 566 567cc_binary { 568 name: "vfsstat", 569 srcs: ["vfsstat.c"], 570 generated_headers: ["vfsstat.skel.h"], 571 defaults: ["bcc_binary_defaults"], 572} 573