| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- # Define compiler and options
- CC = /usr/bin/clang
- LLC = /usr/bin/llc
- LLVM_STRIP = /usr/bin/llvm-strip
- # Define source and output directories
- SRC = ./ebpf/ebpf.c
- ifeq ($(debug),1)
- DEBUG_MODE=-D_DEBUG_MODE
- endif
- ARCH ?= $(shell uname -m | sed -e s/x86_64/x86_64/ \
- -e s/aarch64.\*/arm64/)
- MACHINE_ARCH := $(ARCH)
- GO_ARCH := $(MACHINE_ARCH)
- ARCH_TAG=-D__TARGET_ARCH_x86 -D__x86_64__
- ifeq ($(MACHINE_ARCH),x86_64)
- MACHINE_ARCH := amd64
- GO_ARCH := amd64
- endif
- ifeq ($(MACHINE_ARCH),amd64)
- MACHINE_ARCH := amd64
- GO_ARCH := amd64
- endif
- ifeq ($(MACHINE_ARCH),aarch64)
- MACHINE_ARCH := arm64
- GO_ARCH := arm64
- ARCH_TAG=-D__TARGET_ARCH_arm64 -D__aarch64__ -D__AARCH64EB__
- endif
- ifeq ($(MACHINE_ARCH),arm64)
- MACHINE_ARCH := arm64
- GO_ARCH := arm64
- ARCH_TAG=-D__TARGET_ARCH_arm64 -D__aarch64__ -D__AARCH64EB__
- endif
- OBJ_DIR = ebpf/bin/$(MACHINE_ARCH)
- # Define flags
- CFLAGS = -I. -Ivmlinux -Iinclude -Iebpf/include -Iebpf/utrace/go/include -Iebpf/utrace/java/include -Iebpf/utrace/netcore/include \
- -D__BPF_TRACING__ -D GROUP_LEADER_OFFSET_OVERRIDE=0 -DSTART_BOOTTIME_OFFSET_OVERRIDE=0 \
- -DSTART_BOOTTIME_VARNAME=real_start_time -std=gnu99 -Wimplicit-function-declaration \
- -ffreestanding -fno-builtin -Wall -Wno-deprecated-declarations \
- -Wno-gnu-variable-sized-type-not-at-end -Wno-pragma-once-outside-header \
- -Wno-address-of-packed-member -Wno-unknown-warning-option \
- -fno-color-diagnostics -fno-unwind-tables -fno-stack-protector \
- -Wno-unused-variable \
- $(ARCH_TAG) \
- $(DEBUG_MODE) \
- -fno-asynchronous-unwind-tables -g -O2 -emit-llvm
- # Define kernel versions and corresponding object files
- KERNEL_VERSIONS = 416
- #KERNEL_VERSIONS = 512 506 420 416
- define MAP_VERSION
- $(if $(filter $1,$(VERSION_512)),v5.12,$(if $(filter $1,$(VERSION_506)),v5.6,$(if $(filter $1,$(VERSION_420)),v4.20,$(if $(filter $1,$(VERSION_416)),v4.16,unknown))))
- endef
- # 定义版本值
- VERSION_512 = 512
- VERSION_506 = 506
- VERSION_420 = 420
- VERSION_416 = 416
- # Create necessary directories
- $(OBJ_DIR):
- mkdir -p $(OBJ_DIR)
- all: $(KERNEL_VERSIONS:%=$(OBJ_DIR)/%_$(MACHINE_ARCH).o)
- # Rule to compile and process eBPF for each kernel version
- $(OBJ_DIR)/%_$(MACHINE_ARCH).o: $(OBJ_DIR)/%_$(MACHINE_ARCH).ll
- $(LLC) -march=bpf -filetype=obj -mcpu=v2 -o $(OBJ_DIR)/$(call MAP_VERSION,$*)_$(MACHINE_ARCH).o $<
- $(LLVM_STRIP) -g $(OBJ_DIR)/$(call MAP_VERSION,$*)_$(MACHINE_ARCH).o
- # Rule to generate LLVM IR from eBPF source
- $(OBJ_DIR)/%_$(MACHINE_ARCH).ll: $(SRC) | $(OBJ_DIR)
- $(CC) $(CFLAGS) -D__KERNEL_FROM=$* -o $@ -c $(SRC)
- clean:
- rm -f $(OBJ_DIR)/*_$(MACHINE_ARCH).ll $(OBJ_DIR)/*_$(MACHINE_ARCH).o
- .PHONY: all clean
|