106f6ba60Sopenharmony_ci# Copyright (c) Huawei Technologies Co., Ltd. 2021. All rights reserved. 206f6ba60Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 306f6ba60Sopenharmony_ci# you may not use this file except in compliance with the License. 406f6ba60Sopenharmony_ci# You may obtain a copy of the License at 506f6ba60Sopenharmony_ci# 606f6ba60Sopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 706f6ba60Sopenharmony_ci# 806f6ba60Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software 906f6ba60Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 1006f6ba60Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1106f6ba60Sopenharmony_ci# See the License for the specific language governing permissions and 1206f6ba60Sopenharmony_ci# limitations under the License. 1306f6ba60Sopenharmony_ci 1406f6ba60Sopenharmony_ciimport("//build/ohos.gni") 1506f6ba60Sopenharmony_ciimport("//developtools/profiler/device/base/config.gni") 1606f6ba60Sopenharmony_ci 1706f6ba60Sopenharmony_ciskel_src_dir = "$target_out_dir/src" 1806f6ba60Sopenharmony_ciskel_out_dir = "$root_gen_dir/cpp/developtools/profiler/hiebpf/ebpf_skeleton" 1906f6ba60Sopenharmony_ci 2006f6ba60Sopenharmony_ciconfig("common_config") { 2106f6ba60Sopenharmony_ci cflags = [ 2206f6ba60Sopenharmony_ci "-Wno-unused-command-line-argument", 2306f6ba60Sopenharmony_ci "-Wno-unused-variable", 2406f6ba60Sopenharmony_ci "-Wno-unused-function", 2506f6ba60Sopenharmony_ci "-Wno-gnu-folding-constant", 2606f6ba60Sopenharmony_ci "-fno-omit-frame-pointer", 2706f6ba60Sopenharmony_ci "-mno-omit-leaf-frame-pointer", 2806f6ba60Sopenharmony_ci "-fno-inline", 2906f6ba60Sopenharmony_ci "-fno-optimize-sibling-calls", 3006f6ba60Sopenharmony_ci "-Wno-format", 3106f6ba60Sopenharmony_ci "-Wno-switch", 3206f6ba60Sopenharmony_ci "-Wno-braced-scalar-init", 3306f6ba60Sopenharmony_ci "-fno-common", 3406f6ba60Sopenharmony_ci ] 3506f6ba60Sopenharmony_ci defines = [ 3606f6ba60Sopenharmony_ci "__KERNEL__", 3706f6ba60Sopenharmony_ci "BPF_LOGGER_DEBUG", 3806f6ba60Sopenharmony_ci "HH_LOGGER_DEBUG", 3906f6ba60Sopenharmony_ci ] 4006f6ba60Sopenharmony_ci include_dirs = [ 4106f6ba60Sopenharmony_ci "$skel_out_dir", 4206f6ba60Sopenharmony_ci "./include", 4306f6ba60Sopenharmony_ci "//third_party/libbpf/src", 4406f6ba60Sopenharmony_ci ] 4506f6ba60Sopenharmony_ci} 4606f6ba60Sopenharmony_ci 4706f6ba60Sopenharmony_ciconfig("user_common_config") { 4806f6ba60Sopenharmony_ci cflags = [ 4906f6ba60Sopenharmony_ci "-g", 5006f6ba60Sopenharmony_ci "-Wno-unknown-attributes", 5106f6ba60Sopenharmony_ci "-Wno-bitwise-op-parentheses", 5206f6ba60Sopenharmony_ci "-Wno-shift-op-parentheses", 5306f6ba60Sopenharmony_ci "-Wno-sign-compare", 5406f6ba60Sopenharmony_ci "-Wno-format", 5506f6ba60Sopenharmony_ci ] 5606f6ba60Sopenharmony_ci include_dirs = [] 5706f6ba60Sopenharmony_ci defines = [ "__aarch64__" ] 5806f6ba60Sopenharmony_ci} 5906f6ba60Sopenharmony_ci 6006f6ba60Sopenharmony_ciconfig("kern_common_config") { 6106f6ba60Sopenharmony_ci cflags = [ 6206f6ba60Sopenharmony_ci "-target", 6306f6ba60Sopenharmony_ci "bpf", 6406f6ba60Sopenharmony_ci "-g", 6506f6ba60Sopenharmony_ci "-fno-stack-protector", 6606f6ba60Sopenharmony_ci "-fno-data-sections", 6706f6ba60Sopenharmony_ci ] 6806f6ba60Sopenharmony_ci defines = [ "__aarch64__" ] 6906f6ba60Sopenharmony_ci include_dirs = [] 7006f6ba60Sopenharmony_ci} 7106f6ba60Sopenharmony_ci 7206f6ba60Sopenharmony_ciohos_source_set("hiebpf.bpf") { 7306f6ba60Sopenharmony_ci remove_configs = [ "//build/config/coverage:default_coverage" ] 7406f6ba60Sopenharmony_ci if (use_libfuzzer) { 7506f6ba60Sopenharmony_ci remove_configs += [ "//build/config/sanitizers:default_sanitizer_flags" ] 7606f6ba60Sopenharmony_ci } 7706f6ba60Sopenharmony_ci cflags_c = [ "-fno-lto" ] 7806f6ba60Sopenharmony_ci sources = [ "./src/hiebpf.bpf.c" ] 7906f6ba60Sopenharmony_ci configs = [ 8006f6ba60Sopenharmony_ci ":common_config", 8106f6ba60Sopenharmony_ci ":kern_common_config", 8206f6ba60Sopenharmony_ci ] 8306f6ba60Sopenharmony_ci subsystem_name = "${OHOS_PROFILER_SUBSYS_NAME}" 8406f6ba60Sopenharmony_ci part_name = "${OHOS_PROFILER_PART_NAME}" 8506f6ba60Sopenharmony_ci output_name = "hiebpf.bpf.o" 8606f6ba60Sopenharmony_ci} 8706f6ba60Sopenharmony_ci 8806f6ba60Sopenharmony_ciaction("gen_bpf_skeleton") { 8906f6ba60Sopenharmony_ci script = "./scripts/gen_skeleton.sh" 9006f6ba60Sopenharmony_ci sources = [] 9106f6ba60Sopenharmony_ci outputs = [ "$skel_out_dir/hiebpf.skel.h" ] 9206f6ba60Sopenharmony_ci bpftool_dir = rebase_path("//prebuilts/develop_tools/bpftool/bin/bpftool") 9306f6ba60Sopenharmony_ci skel_src_dir_abs = rebase_path("${skel_src_dir}") 9406f6ba60Sopenharmony_ci skel_out_dir_abs = rebase_path("${skel_out_dir}") 9506f6ba60Sopenharmony_ci args = [ 9606f6ba60Sopenharmony_ci bpftool_dir, 9706f6ba60Sopenharmony_ci skel_src_dir_abs, 9806f6ba60Sopenharmony_ci skel_out_dir_abs, 9906f6ba60Sopenharmony_ci ] 10006f6ba60Sopenharmony_ci deps = [ ":hiebpf.bpf" ] 10106f6ba60Sopenharmony_ci} 10206f6ba60Sopenharmony_ci 10306f6ba60Sopenharmony_ciohos_source_set("hiebpf_source_common") { 10406f6ba60Sopenharmony_ci public_configs = [ 10506f6ba60Sopenharmony_ci ":common_config", 10606f6ba60Sopenharmony_ci ":user_common_config", 10706f6ba60Sopenharmony_ci "${OHOS_PROFILER_DIR}/device/base:hiprofiler_test_config", 10806f6ba60Sopenharmony_ci ] 10906f6ba60Sopenharmony_ci 11006f6ba60Sopenharmony_ci sources = [ 11106f6ba60Sopenharmony_ci "./src/bpf_controller.cpp", 11206f6ba60Sopenharmony_ci "./src/bpf_event_receiver.cpp", 11306f6ba60Sopenharmony_ci "./src/bpf_log_reader.cpp", 11406f6ba60Sopenharmony_ci "./src/command_helper.cpp", 11506f6ba60Sopenharmony_ci "./src/elf_file.cpp", 11606f6ba60Sopenharmony_ci "./src/elf_symbol_info.cpp", 11706f6ba60Sopenharmony_ci "./src/fstrace_args_converter.cpp", 11806f6ba60Sopenharmony_ci "./src/hhlog.cpp", 11906f6ba60Sopenharmony_ci "./src/hiebpf_data_file.cpp", 12006f6ba60Sopenharmony_ci "./src/ipc_unix_socket.cpp", 12106f6ba60Sopenharmony_ci "./src/kernel_symbol_info.cpp", 12206f6ba60Sopenharmony_ci "./src/libbpf_logger.cpp", 12306f6ba60Sopenharmony_ci "./src/maps_info.cpp", 12406f6ba60Sopenharmony_ci "./src/ringbuffer.cpp", 12506f6ba60Sopenharmony_ci "./src/utilities.cpp", 12606f6ba60Sopenharmony_ci ] 12706f6ba60Sopenharmony_ci 12806f6ba60Sopenharmony_ci public_deps = [ ":gen_bpf_skeleton" ] 12906f6ba60Sopenharmony_ci external_deps = [ 13006f6ba60Sopenharmony_ci "bounds_checking_function:libsec_shared", 13106f6ba60Sopenharmony_ci "libbpf:libbpf", 13206f6ba60Sopenharmony_ci ] 13306f6ba60Sopenharmony_ci subsystem_name = "${OHOS_PROFILER_SUBSYS_NAME}" 13406f6ba60Sopenharmony_ci part_name = "${OHOS_PROFILER_PART_NAME}" 13506f6ba60Sopenharmony_ci} 13606f6ba60Sopenharmony_ci 13706f6ba60Sopenharmony_ciohos_executable("hiebpf") { 13806f6ba60Sopenharmony_ci sources = [ "./src/hiebpf.cpp" ] # this is main() 13906f6ba60Sopenharmony_ci 14006f6ba60Sopenharmony_ci deps = [ ":hiebpf_source_common" ] 14106f6ba60Sopenharmony_ci external_deps = [ "bounds_checking_function:libsec_shared" ] 14206f6ba60Sopenharmony_ci subsystem_name = "${OHOS_PROFILER_SUBSYS_NAME}" 14306f6ba60Sopenharmony_ci part_name = "${OHOS_PROFILER_PART_NAME}" 14406f6ba60Sopenharmony_ci output_name = "hiebpf" 14506f6ba60Sopenharmony_ci} 14606f6ba60Sopenharmony_ci 14706f6ba60Sopenharmony_cigroup("hiebpf_tool") { 14806f6ba60Sopenharmony_ci if (current_toolchain == "//build/toolchain/ohos:ohos_clang_arm64") { 14906f6ba60Sopenharmony_ci if (!is_asan && !is_tsan && use_musl) { 15006f6ba60Sopenharmony_ci if (build_variant == "root") { 15106f6ba60Sopenharmony_ci deps = [ 15206f6ba60Sopenharmony_ci ":hiebpf", 15306f6ba60Sopenharmony_ci ":hiebpf.bpf", 15406f6ba60Sopenharmony_ci ] 15506f6ba60Sopenharmony_ci } 15606f6ba60Sopenharmony_ci } 15706f6ba60Sopenharmony_ci } 15806f6ba60Sopenharmony_ci} 15906f6ba60Sopenharmony_ci 16006f6ba60Sopenharmony_cigroup("hiebpf_all") { 16106f6ba60Sopenharmony_ci testonly = true 16206f6ba60Sopenharmony_ci deps = [ 16306f6ba60Sopenharmony_ci ":hiebpf_tool", 16406f6ba60Sopenharmony_ci "test:hiebpf_ut", 16506f6ba60Sopenharmony_ci ] 16606f6ba60Sopenharmony_ci} 167