mirror of
https://github.com/eunomia-bpf/bpf-developer-tutorial.git
synced 2026-02-03 10:14:44 +08:00
Move submodule to src/third_party and remove duplicated (#65)
* add submodule * fix duplicate submodule * fix submodule and remove duplicate code * fix blazsym version
This commit is contained in:
16
.gitmodules
vendored
16
.gitmodules
vendored
@@ -1,9 +1,9 @@
|
||||
[submodule "libbpf"]
|
||||
path = libbpf
|
||||
url = https://github.com/libbpf/libbpf.git
|
||||
[submodule "bpftool"]
|
||||
path = bpftool
|
||||
url = https://github.com/libbpf/bpftool
|
||||
[submodule "blazesym"]
|
||||
path = blazesym
|
||||
[submodule "src/third_party/blazesym"]
|
||||
path = src/third_party/blazesym
|
||||
url = https://github.com/libbpf/blazesym
|
||||
[submodule "src/third_party/libbpf"]
|
||||
path = src/third_party/libbpf
|
||||
url = https://github.com/libbpf/libbpf.git
|
||||
[submodule "src/third_party/bpftool"]
|
||||
path = src/third_party/bpftool
|
||||
url = https://github.com/libbpf/bpftool
|
||||
|
||||
1
bpftool
1
bpftool
Submodule bpftool deleted from 19ff056498
1
libbpf
1
libbpf
Submodule libbpf deleted from fbd60dbff5
@@ -1,12 +1,12 @@
|
||||
# SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
|
||||
OUTPUT := .output
|
||||
CLANG ?= clang
|
||||
LIBBPF_SRC := $(abspath ../../libbpf/src)
|
||||
BPFTOOL_SRC := $(abspath ../../bpftool/src)
|
||||
LIBBPF_SRC := $(abspath ../third_party/libbpf/src)
|
||||
BPFTOOL_SRC := $(abspath ../third_party/bpftool/src)
|
||||
LIBBPF_OBJ := $(abspath $(OUTPUT)/libbpf.a)
|
||||
BPFTOOL_OUTPUT ?= $(abspath $(OUTPUT)/bpftool)
|
||||
BPFTOOL ?= $(BPFTOOL_OUTPUT)/bootstrap/bpftool
|
||||
LIBBLAZESYM_SRC := $(abspath ../../blazesym/)
|
||||
LIBBLAZESYM_SRC := $(abspath ../third_party/blazesym/)
|
||||
LIBBLAZESYM_OBJ := $(abspath $(OUTPUT)/libblazesym.a)
|
||||
LIBBLAZESYM_HEADER := $(abspath $(OUTPUT)/blazesym.h)
|
||||
ARCH ?= $(shell uname -m | sed 's/x86_64/x86/' \
|
||||
@@ -16,11 +16,11 @@ ARCH ?= $(shell uname -m | sed 's/x86_64/x86/' \
|
||||
| sed 's/mips.*/mips/' \
|
||||
| sed 's/riscv64/riscv/' \
|
||||
| sed 's/loongarch64/loongarch/')
|
||||
VMLINUX := ../../vmlinux/$(ARCH)/vmlinux.h
|
||||
VMLINUX := ../third_party/vmlinux/$(ARCH)/vmlinux.h
|
||||
# Use our own libbpf API headers and Linux UAPI headers distributed with
|
||||
# libbpf to avoid dependency on system-wide headers, which could be missing or
|
||||
# outdated
|
||||
INCLUDES := -I$(OUTPUT) -I../../libbpf/include/uapi -I$(dir $(VMLINUX))
|
||||
INCLUDES := -I$(OUTPUT) -I../third_party/libbpf/include/uapi -I$(dir $(VMLINUX))
|
||||
CFLAGS := -g -Wall
|
||||
ALL_LDFLAGS := $(LDFLAGS) $(EXTRA_LDFLAGS)
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
|
||||
OUTPUT := .output
|
||||
CLANG ?= clang
|
||||
LIBBPF_SRC := $(abspath ../../libbpf/src)
|
||||
BPFTOOL_SRC := $(abspath ../../bpftool/src)
|
||||
LIBBPF_SRC := $(abspath ../third_party/libbpf/src)
|
||||
BPFTOOL_SRC := $(abspath ../third_party/bpftool/src)
|
||||
LIBBPF_OBJ := $(abspath $(OUTPUT)/libbpf.a)
|
||||
BPFTOOL_OUTPUT ?= $(abspath $(OUTPUT)/bpftool)
|
||||
BPFTOOL ?= $(BPFTOOL_OUTPUT)/bootstrap/bpftool
|
||||
LIBBLAZESYM_SRC := $(abspath ../../blazesym/)
|
||||
LIBBLAZESYM_SRC := $(abspath ../third_party/blazesym/)
|
||||
LIBBLAZESYM_OBJ := $(abspath $(OUTPUT)/libblazesym.a)
|
||||
LIBBLAZESYM_HEADER := $(abspath $(OUTPUT)/blazesym.h)
|
||||
ARCH ?= $(shell uname -m | sed 's/x86_64/x86/' \
|
||||
@@ -16,11 +16,11 @@ ARCH ?= $(shell uname -m | sed 's/x86_64/x86/' \
|
||||
| sed 's/mips.*/mips/' \
|
||||
| sed 's/riscv64/riscv/' \
|
||||
| sed 's/loongarch64/loongarch/')
|
||||
VMLINUX := ../../vmlinux/$(ARCH)/vmlinux.h
|
||||
VMLINUX := ../third_party/vmlinux/$(ARCH)/vmlinux.h
|
||||
# Use our own libbpf API headers and Linux UAPI headers distributed with
|
||||
# libbpf to avoid dependency on system-wide headers, which could be missing or
|
||||
# outdated
|
||||
INCLUDES := -I$(OUTPUT) -I../../libbpf/include/uapi -I$(dir $(VMLINUX))
|
||||
INCLUDES := -I$(OUTPUT) -I../third_party/libbpf/include/uapi -I$(dir $(VMLINUX))
|
||||
CFLAGS := -g -Wall
|
||||
ALL_LDFLAGS := $(LDFLAGS) $(EXTRA_LDFLAGS)
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
|
||||
OUTPUT := .output
|
||||
CLANG ?= clang
|
||||
LIBBPF_SRC := $(abspath ../../libbpf/src)
|
||||
BPFTOOL_SRC := $(abspath ../../bpftool/src)
|
||||
LIBBPF_SRC := $(abspath ../third_party/libbpf/src)
|
||||
BPFTOOL_SRC := $(abspath ../third_party/bpftool/src)
|
||||
LIBBPF_OBJ := $(abspath $(OUTPUT)/libbpf.a)
|
||||
BPFTOOL_OUTPUT ?= $(abspath $(OUTPUT)/bpftool)
|
||||
BPFTOOL ?= $(BPFTOOL_OUTPUT)/bootstrap/bpftool
|
||||
LIBBLAZESYM_SRC := $(abspath ../../blazesym/)
|
||||
LIBBLAZESYM_SRC := $(abspath ../third_party/blazesym/)
|
||||
LIBBLAZESYM_OBJ := $(abspath $(OUTPUT)/libblazesym.a)
|
||||
LIBBLAZESYM_HEADER := $(abspath $(OUTPUT)/blazesym.h)
|
||||
ARCH ?= $(shell uname -m | sed 's/x86_64/x86/' \
|
||||
@@ -16,11 +16,11 @@ ARCH ?= $(shell uname -m | sed 's/x86_64/x86/' \
|
||||
| sed 's/mips.*/mips/' \
|
||||
| sed 's/riscv64/riscv/' \
|
||||
| sed 's/loongarch64/loongarch/')
|
||||
VMLINUX := ../../vmlinux/$(ARCH)/vmlinux.h
|
||||
VMLINUX := ../third_party/vmlinux/$(ARCH)/vmlinux.h
|
||||
# Use our own libbpf API headers and Linux UAPI headers distributed with
|
||||
# libbpf to avoid dependency on system-wide headers, which could be missing or
|
||||
# outdated
|
||||
INCLUDES := -I$(OUTPUT) -I../../libbpf/include/uapi -I$(dir $(VMLINUX))
|
||||
INCLUDES := -I$(OUTPUT) -I../third_party/libbpf/include/uapi -I$(dir $(VMLINUX))
|
||||
CFLAGS := -g -Wall
|
||||
ALL_LDFLAGS := $(LDFLAGS) $(EXTRA_LDFLAGS)
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
|
||||
OUTPUT := .output
|
||||
CLANG ?= clang
|
||||
LIBBPF_SRC := $(abspath ../../libbpf/src)
|
||||
BPFTOOL_SRC := $(abspath ../../bpftool/src)
|
||||
LIBBPF_SRC := $(abspath ../third_party/libbpf/src)
|
||||
BPFTOOL_SRC := $(abspath ../third_party/bpftool/src)
|
||||
LIBBPF_OBJ := $(abspath $(OUTPUT)/libbpf.a)
|
||||
BPFTOOL_OUTPUT ?= $(abspath $(OUTPUT)/bpftool)
|
||||
BPFTOOL ?= $(BPFTOOL_OUTPUT)/bootstrap/bpftool
|
||||
LIBBLAZESYM_SRC := $(abspath ../../blazesym/)
|
||||
LIBBLAZESYM_SRC := $(abspath ../third_party/blazesym/)
|
||||
LIBBLAZESYM_OBJ := $(abspath $(OUTPUT)/libblazesym.a)
|
||||
LIBBLAZESYM_HEADER := $(abspath $(OUTPUT)/blazesym.h)
|
||||
ARCH ?= $(shell uname -m | sed 's/x86_64/x86/' \
|
||||
@@ -16,11 +16,11 @@ ARCH ?= $(shell uname -m | sed 's/x86_64/x86/' \
|
||||
| sed 's/mips.*/mips/' \
|
||||
| sed 's/riscv64/riscv/' \
|
||||
| sed 's/loongarch64/loongarch/')
|
||||
VMLINUX := ../../vmlinux/$(ARCH)/vmlinux.h
|
||||
VMLINUX := ../third_party/vmlinux/$(ARCH)/vmlinux.h
|
||||
# Use our own libbpf API headers and Linux UAPI headers distributed with
|
||||
# libbpf to avoid dependency on system-wide headers, which could be missing or
|
||||
# outdated
|
||||
INCLUDES := -I$(OUTPUT) -I../../libbpf/include/uapi -I$(dir $(VMLINUX))
|
||||
INCLUDES := -I$(OUTPUT) -I../third_party/libbpf/include/uapi -I$(dir $(VMLINUX))
|
||||
CFLAGS := -g -Wall
|
||||
ALL_LDFLAGS := $(LDFLAGS) $(EXTRA_LDFLAGS)
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
|
||||
OUTPUT := .output
|
||||
CLANG ?= clang
|
||||
LIBBPF_SRC := $(abspath ../../libbpf/src)
|
||||
BPFTOOL_SRC := $(abspath ../../bpftool/src)
|
||||
LIBBPF_SRC := $(abspath ../third_party/libbpf/src)
|
||||
BPFTOOL_SRC := $(abspath ../third_party/bpftool/src)
|
||||
LIBBPF_OBJ := $(abspath $(OUTPUT)/libbpf.a)
|
||||
BPFTOOL_OUTPUT ?= $(abspath $(OUTPUT)/bpftool)
|
||||
BPFTOOL ?= $(BPFTOOL_OUTPUT)/bootstrap/bpftool
|
||||
LIBBLAZESYM_SRC := $(abspath ../../blazesym/)
|
||||
LIBBLAZESYM_SRC := $(abspath ../third_party/blazesym/)
|
||||
LIBBLAZESYM_OBJ := $(abspath $(OUTPUT)/libblazesym.a)
|
||||
LIBBLAZESYM_HEADER := $(abspath $(OUTPUT)/blazesym.h)
|
||||
ARCH ?= $(shell uname -m | sed 's/x86_64/x86/' \
|
||||
@@ -16,11 +16,11 @@ ARCH ?= $(shell uname -m | sed 's/x86_64/x86/' \
|
||||
| sed 's/mips.*/mips/' \
|
||||
| sed 's/riscv64/riscv/' \
|
||||
| sed 's/loongarch64/loongarch/')
|
||||
VMLINUX := ../../vmlinux/$(ARCH)/vmlinux.h
|
||||
VMLINUX := ../third_party/vmlinux/$(ARCH)/vmlinux.h
|
||||
# Use our own libbpf API headers and Linux UAPI headers distributed with
|
||||
# libbpf to avoid dependency on system-wide headers, which could be missing or
|
||||
# outdated
|
||||
INCLUDES := -I$(OUTPUT) -I../../libbpf/include/uapi -I$(dir $(VMLINUX))
|
||||
INCLUDES := -I$(OUTPUT) -I../third_party/libbpf/include/uapi -I$(dir $(VMLINUX))
|
||||
CFLAGS := -g -Wall
|
||||
ALL_LDFLAGS := $(LDFLAGS) $(EXTRA_LDFLAGS)
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
|
||||
OUTPUT := .output
|
||||
CLANG ?= clang
|
||||
LIBBPF_SRC := $(abspath ../../libbpf/src)
|
||||
BPFTOOL_SRC := $(abspath ../../bpftool/src)
|
||||
LIBBPF_SRC := $(abspath ../third_party/libbpf/src)
|
||||
BPFTOOL_SRC := $(abspath ../third_party/bpftool/src)
|
||||
LIBBPF_OBJ := $(abspath $(OUTPUT)/libbpf.a)
|
||||
BPFTOOL_OUTPUT ?= $(abspath $(OUTPUT)/bpftool)
|
||||
BPFTOOL ?= $(BPFTOOL_OUTPUT)/bootstrap/bpftool
|
||||
LIBBLAZESYM_SRC := $(abspath ../../blazesym/)
|
||||
LIBBLAZESYM_SRC := $(abspath ../third_party/blazesym/)
|
||||
LIBBLAZESYM_OBJ := $(abspath $(OUTPUT)/libblazesym.a)
|
||||
LIBBLAZESYM_HEADER := $(abspath $(OUTPUT)/blazesym.h)
|
||||
ARCH ?= $(shell uname -m | sed 's/x86_64/x86/' \
|
||||
@@ -16,11 +16,11 @@ ARCH ?= $(shell uname -m | sed 's/x86_64/x86/' \
|
||||
| sed 's/mips.*/mips/' \
|
||||
| sed 's/riscv64/riscv/' \
|
||||
| sed 's/loongarch64/loongarch/')
|
||||
VMLINUX := ../../vmlinux/$(ARCH)/vmlinux.h
|
||||
VMLINUX := ../third_party/vmlinux/$(ARCH)/vmlinux.h
|
||||
# Use our own libbpf API headers and Linux UAPI headers distributed with
|
||||
# libbpf to avoid dependency on system-wide headers, which could be missing or
|
||||
# outdated
|
||||
INCLUDES := -I$(OUTPUT) -I../../libbpf/include/uapi -I$(dir $(VMLINUX))
|
||||
INCLUDES := -I$(OUTPUT) -I../third_party/libbpf/include/uapi -I$(dir $(VMLINUX))
|
||||
CFLAGS := -g -Wall
|
||||
ALL_LDFLAGS := $(LDFLAGS) $(EXTRA_LDFLAGS)
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
|
||||
OUTPUT := .output
|
||||
CLANG ?= clang
|
||||
LIBBPF_SRC := $(abspath ../../libbpf/src)
|
||||
BPFTOOL_SRC := $(abspath ../../bpftool/src)
|
||||
LIBBPF_SRC := $(abspath ../third_party/libbpf/src)
|
||||
BPFTOOL_SRC := $(abspath ../third_party/bpftool/src)
|
||||
LIBBPF_OBJ := $(abspath $(OUTPUT)/libbpf.a)
|
||||
BPFTOOL_OUTPUT ?= $(abspath $(OUTPUT)/bpftool)
|
||||
BPFTOOL ?= $(BPFTOOL_OUTPUT)/bootstrap/bpftool
|
||||
LIBBLAZESYM_SRC := $(abspath ../../blazesym/)
|
||||
LIBBLAZESYM_SRC := $(abspath ../third_party/blazesym/)
|
||||
LIBBLAZESYM_OBJ := $(abspath $(OUTPUT)/libblazesym.a)
|
||||
LIBBLAZESYM_HEADER := $(abspath $(OUTPUT)/blazesym.h)
|
||||
ARCH ?= $(shell uname -m | sed 's/x86_64/x86/' \
|
||||
@@ -16,11 +16,11 @@ ARCH ?= $(shell uname -m | sed 's/x86_64/x86/' \
|
||||
| sed 's/mips.*/mips/' \
|
||||
| sed 's/riscv64/riscv/' \
|
||||
| sed 's/loongarch64/loongarch/')
|
||||
VMLINUX := ../../vmlinux/$(ARCH)/vmlinux.h
|
||||
VMLINUX := ../third_party/vmlinux/$(ARCH)/vmlinux.h
|
||||
# Use our own libbpf API headers and Linux UAPI headers distributed with
|
||||
# libbpf to avoid dependency on system-wide headers, which could be missing or
|
||||
# outdated
|
||||
INCLUDES := -I$(OUTPUT) -I../../libbpf/include/uapi -I$(dir $(VMLINUX))
|
||||
INCLUDES := -I$(OUTPUT) -I../third_party/libbpf/include/uapi -I$(dir $(VMLINUX))
|
||||
CFLAGS := -g -Wall
|
||||
ALL_LDFLAGS := $(LDFLAGS) $(EXTRA_LDFLAGS)
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
|
||||
OUTPUT := .output
|
||||
CLANG ?= clang
|
||||
LIBBPF_SRC := $(abspath ../../libbpf/src)
|
||||
BPFTOOL_SRC := $(abspath ../../bpftool/src)
|
||||
LIBBPF_SRC := $(abspath ../third_party/libbpf/src)
|
||||
BPFTOOL_SRC := $(abspath ../third_party/bpftool/src)
|
||||
LIBBPF_OBJ := $(abspath $(OUTPUT)/libbpf.a)
|
||||
BPFTOOL_OUTPUT ?= $(abspath $(OUTPUT)/bpftool)
|
||||
BPFTOOL ?= $(BPFTOOL_OUTPUT)/bootstrap/bpftool
|
||||
LIBBLAZESYM_SRC := $(abspath ../../blazesym/)
|
||||
LIBBLAZESYM_SRC := $(abspath ../third_party/blazesym/)
|
||||
LIBBLAZESYM_OBJ := $(abspath $(OUTPUT)/libblazesym.a)
|
||||
LIBBLAZESYM_HEADER := $(abspath $(OUTPUT)/blazesym.h)
|
||||
ARCH ?= $(shell uname -m | sed 's/x86_64/x86/' \
|
||||
@@ -16,11 +16,11 @@ ARCH ?= $(shell uname -m | sed 's/x86_64/x86/' \
|
||||
| sed 's/mips.*/mips/' \
|
||||
| sed 's/riscv64/riscv/' \
|
||||
| sed 's/loongarch64/loongarch/')
|
||||
VMLINUX := ../../vmlinux/$(ARCH)/vmlinux.h
|
||||
VMLINUX := ../third_party/vmlinux/$(ARCH)/vmlinux.h
|
||||
# Use our own libbpf API headers and Linux UAPI headers distributed with
|
||||
# libbpf to avoid dependency on system-wide headers, which could be missing or
|
||||
# outdated
|
||||
INCLUDES := -I$(OUTPUT) -I../../libbpf/include/uapi -I$(dir $(VMLINUX))
|
||||
INCLUDES := -I$(OUTPUT) -I../third_party/libbpf/include/uapi -I$(dir $(VMLINUX))
|
||||
CFLAGS := -g -Wall
|
||||
ALL_LDFLAGS := $(LDFLAGS) $(EXTRA_LDFLAGS)
|
||||
|
||||
|
||||
@@ -1,141 +0,0 @@
|
||||
# SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
|
||||
OUTPUT := .output
|
||||
CLANG ?= clang
|
||||
LIBBPF_SRC := $(abspath ../../libbpf/src)
|
||||
BPFTOOL_SRC := $(abspath ../../bpftool/src)
|
||||
LIBBPF_OBJ := $(abspath $(OUTPUT)/libbpf.a)
|
||||
BPFTOOL_OUTPUT ?= $(abspath $(OUTPUT)/bpftool)
|
||||
BPFTOOL ?= $(BPFTOOL_OUTPUT)/bootstrap/bpftool
|
||||
LIBBLAZESYM_SRC := $(abspath ../../blazesym/)
|
||||
LIBBLAZESYM_OBJ := $(abspath $(OUTPUT)/libblazesym.a)
|
||||
LIBBLAZESYM_HEADER := $(abspath $(OUTPUT)/blazesym.h)
|
||||
ARCH ?= $(shell uname -m | sed 's/x86_64/x86/' \
|
||||
| sed 's/arm.*/arm/' \
|
||||
| sed 's/aarch64/arm64/' \
|
||||
| sed 's/ppc64le/powerpc/' \
|
||||
| sed 's/mips.*/mips/' \
|
||||
| sed 's/riscv64/riscv/' \
|
||||
| sed 's/loongarch64/loongarch/')
|
||||
VMLINUX := ../../vmlinux/$(ARCH)/vmlinux.h
|
||||
# Use our own libbpf API headers and Linux UAPI headers distributed with
|
||||
# libbpf to avoid dependency on system-wide headers, which could be missing or
|
||||
# outdated
|
||||
INCLUDES := -I$(OUTPUT) -I../../libbpf/include/uapi -I$(dir $(VMLINUX))
|
||||
CFLAGS := -g -Wall
|
||||
ALL_LDFLAGS := $(LDFLAGS) $(EXTRA_LDFLAGS)
|
||||
|
||||
APPS = bpfdos # minimal minimal_legacy uprobe kprobe fentry usdt sockfilter tc ksyscall
|
||||
|
||||
CARGO ?= $(shell which cargo)
|
||||
ifeq ($(strip $(CARGO)),)
|
||||
BZS_APPS :=
|
||||
else
|
||||
BZS_APPS := # profile
|
||||
APPS += $(BZS_APPS)
|
||||
# Required by libblazesym
|
||||
ALL_LDFLAGS += -lrt -ldl -lpthread -lm
|
||||
endif
|
||||
|
||||
# Get Clang's default includes on this system. We'll explicitly add these dirs
|
||||
# to the includes list when compiling with `-target bpf` because otherwise some
|
||||
# architecture-specific dirs will be "missing" on some architectures/distros -
|
||||
# headers such as asm/types.h, asm/byteorder.h, asm/socket.h, asm/sockios.h,
|
||||
# sys/cdefs.h etc. might be missing.
|
||||
#
|
||||
# Use '-idirafter': Don't interfere with include mechanics except where the
|
||||
# build would have failed anyways.
|
||||
CLANG_BPF_SYS_INCLUDES ?= $(shell $(CLANG) -v -E - </dev/null 2>&1 \
|
||||
| sed -n '/<...> search starts here:/,/End of search list./{ s| \(/.*\)|-idirafter \1|p }')
|
||||
|
||||
ifeq ($(V),1)
|
||||
Q =
|
||||
msg =
|
||||
else
|
||||
Q = @
|
||||
msg = @printf ' %-8s %s%s\n' \
|
||||
"$(1)" \
|
||||
"$(patsubst $(abspath $(OUTPUT))/%,%,$(2))" \
|
||||
"$(if $(3), $(3))";
|
||||
MAKEFLAGS += --no-print-directory
|
||||
endif
|
||||
|
||||
define allow-override
|
||||
$(if $(or $(findstring environment,$(origin $(1))),\
|
||||
$(findstring command line,$(origin $(1)))),,\
|
||||
$(eval $(1) = $(2)))
|
||||
endef
|
||||
|
||||
$(call allow-override,CC,$(CROSS_COMPILE)cc)
|
||||
$(call allow-override,LD,$(CROSS_COMPILE)ld)
|
||||
|
||||
.PHONY: all
|
||||
all: $(APPS)
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
$(call msg,CLEAN)
|
||||
$(Q)rm -rf $(OUTPUT) $(APPS)
|
||||
|
||||
$(OUTPUT) $(OUTPUT)/libbpf $(BPFTOOL_OUTPUT):
|
||||
$(call msg,MKDIR,$@)
|
||||
$(Q)mkdir -p $@
|
||||
|
||||
# Build libbpf
|
||||
$(LIBBPF_OBJ): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(OUTPUT)/libbpf
|
||||
$(call msg,LIB,$@)
|
||||
$(Q)$(MAKE) -C $(LIBBPF_SRC) BUILD_STATIC_ONLY=1 \
|
||||
OBJDIR=$(dir $@)/libbpf DESTDIR=$(dir $@) \
|
||||
INCLUDEDIR= LIBDIR= UAPIDIR= \
|
||||
install
|
||||
|
||||
# Build bpftool
|
||||
$(BPFTOOL): | $(BPFTOOL_OUTPUT)
|
||||
$(call msg,BPFTOOL,$@)
|
||||
$(Q)$(MAKE) ARCH= CROSS_COMPILE= OUTPUT=$(BPFTOOL_OUTPUT)/ -C $(BPFTOOL_SRC) bootstrap
|
||||
|
||||
|
||||
$(LIBBLAZESYM_SRC)/target/release/libblazesym.a::
|
||||
$(Q)cd $(LIBBLAZESYM_SRC) && $(CARGO) build --features=cheader,dont-generate-test-files --release
|
||||
|
||||
$(LIBBLAZESYM_OBJ): $(LIBBLAZESYM_SRC)/target/release/libblazesym.a | $(OUTPUT)
|
||||
$(call msg,LIB, $@)
|
||||
$(Q)cp $(LIBBLAZESYM_SRC)/target/release/libblazesym.a $@
|
||||
|
||||
$(LIBBLAZESYM_HEADER): $(LIBBLAZESYM_SRC)/target/release/libblazesym.a | $(OUTPUT)
|
||||
$(call msg,LIB,$@)
|
||||
$(Q)cp $(LIBBLAZESYM_SRC)/target/release/blazesym.h $@
|
||||
|
||||
# Build BPF code
|
||||
$(OUTPUT)/%.bpf.o: %.bpf.c $(LIBBPF_OBJ) $(wildcard %.h) $(VMLINUX) | $(OUTPUT) $(BPFTOOL)
|
||||
$(call msg,BPF,$@)
|
||||
$(Q)$(CLANG) -g -O2 -target bpf -D__TARGET_ARCH_$(ARCH) \
|
||||
$(INCLUDES) $(CLANG_BPF_SYS_INCLUDES) \
|
||||
-c $(filter %.c,$^) -o $(patsubst %.bpf.o,%.tmp.bpf.o,$@)
|
||||
$(Q)$(BPFTOOL) gen object $@ $(patsubst %.bpf.o,%.tmp.bpf.o,$@)
|
||||
|
||||
# Generate BPF skeletons
|
||||
$(OUTPUT)/%.skel.h: $(OUTPUT)/%.bpf.o | $(OUTPUT) $(BPFTOOL)
|
||||
$(call msg,GEN-SKEL,$@)
|
||||
$(Q)$(BPFTOOL) gen skeleton $< > $@
|
||||
|
||||
# Build user-space code
|
||||
$(patsubst %,$(OUTPUT)/%.o,$(APPS)): %.o: %.skel.h
|
||||
|
||||
$(OUTPUT)/%.o: %.c $(wildcard %.h) | $(OUTPUT)
|
||||
$(call msg,CC,$@)
|
||||
$(Q)$(CC) $(CFLAGS) $(INCLUDES) -c $(filter %.c,$^) -o $@
|
||||
|
||||
$(patsubst %,$(OUTPUT)/%.o,$(BZS_APPS)): $(LIBBLAZESYM_HEADER)
|
||||
|
||||
$(BZS_APPS): $(LIBBLAZESYM_OBJ)
|
||||
|
||||
# Build application binary
|
||||
$(APPS): %: $(OUTPUT)/%.o $(LIBBPF_OBJ) | $(OUTPUT)
|
||||
$(call msg,BINARY,$@)
|
||||
$(Q)$(CC) $(CFLAGS) $^ $(ALL_LDFLAGS) -lelf -lz -o $@
|
||||
|
||||
# delete failed targets
|
||||
.DELETE_ON_ERROR:
|
||||
|
||||
# keep intermediate (.skel.h, .bpf.o, etc) targets
|
||||
.SECONDARY:
|
||||
@@ -1,129 +0,0 @@
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
#include <argp.h>
|
||||
#include <unistd.h>
|
||||
#include "bpfdos.skel.h"
|
||||
#include "common_um.h"
|
||||
#include "common.h"
|
||||
|
||||
// Setup Argument stuff
|
||||
static struct env {
|
||||
int target_ppid;
|
||||
} env;
|
||||
|
||||
const char *argp_program_version = "bpfdos 1.0";
|
||||
const char *argp_program_bug_address = "<path@tofile.dev>";
|
||||
const char argp_program_doc[] =
|
||||
"BPF DOS\n"
|
||||
"\n"
|
||||
"Sends a SIGKILL to any program attempting to use\n"
|
||||
"the ptrace syscall (e.g. strace)\n"
|
||||
"\n"
|
||||
"USAGE: ./bpfdos [-t 1111]\n";
|
||||
|
||||
static const struct argp_option opts[] = {
|
||||
{ "target-ppid", 't', "PPID", 0, "Optional Parent PID, will only affect its children." },
|
||||
{},
|
||||
};
|
||||
static error_t parse_arg(int key, char *arg, struct argp_state *state)
|
||||
{
|
||||
switch (key) {
|
||||
case 't':
|
||||
errno = 0;
|
||||
env.target_ppid = strtol(arg, NULL, 10);
|
||||
if (errno || env.target_ppid <= 0) {
|
||||
fprintf(stderr, "Invalid pid: %s\n", arg);
|
||||
argp_usage(state);
|
||||
}
|
||||
break;
|
||||
case ARGP_KEY_ARG:
|
||||
argp_usage(state);
|
||||
break;
|
||||
default:
|
||||
return ARGP_ERR_UNKNOWN;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
static const struct argp argp = {
|
||||
.options = opts,
|
||||
.parser = parse_arg,
|
||||
.doc = argp_program_doc,
|
||||
};
|
||||
|
||||
static int handle_event(void *ctx, void *data, size_t data_sz)
|
||||
{
|
||||
const struct event *e = data;
|
||||
if (e->success)
|
||||
printf("Killed PID %d (%s) for trying to use ptrace syscall\n", e->pid, e->comm);
|
||||
else
|
||||
printf("Failed to kill PID %d (%s) for trying to use ptrace syscall\n", e->pid, e->comm);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
struct ring_buffer *rb = NULL;
|
||||
struct bpfdos_bpf *skel;
|
||||
int err;
|
||||
|
||||
// Parse command line arguments
|
||||
err = argp_parse(&argp, argc, argv, 0, NULL, NULL);
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
|
||||
// Do common setup
|
||||
if (!setup()) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// Open BPF application
|
||||
skel = bpfdos_bpf__open();
|
||||
if (!skel) {
|
||||
fprintf(stderr, "Failed to open BPF program: %s\n", strerror(errno));
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Set target ppid
|
||||
skel->rodata->target_ppid = env.target_ppid;
|
||||
|
||||
// Verify and load program
|
||||
err = bpfdos_bpf__load(skel);
|
||||
if (err) {
|
||||
fprintf(stderr, "Failed to load and verify BPF skeleton\n");
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
// Attach tracepoint handler
|
||||
err = bpfdos_bpf__attach( skel);
|
||||
if (err) {
|
||||
fprintf(stderr, "Failed to attach BPF program: %s\n", strerror(errno));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
// Set up ring buffer
|
||||
rb = ring_buffer__new(bpf_map__fd( skel->maps.rb), handle_event, NULL, NULL);
|
||||
if (!rb) {
|
||||
err = -1;
|
||||
fprintf(stderr, "Failed to create ring buffer\n");
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
printf("Successfully started!\n");
|
||||
printf("Sending SIGKILL to any program using the bpf syscall\n");
|
||||
while (!exiting) {
|
||||
err = ring_buffer__poll(rb, 100 /* timeout, ms */);
|
||||
/* Ctrl-C will cause -EINTR */
|
||||
if (err == -EINTR) {
|
||||
err = 0;
|
||||
break;
|
||||
}
|
||||
if (err < 0) {
|
||||
printf("Error polling perf buffer: %d\n", err);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
cleanup:
|
||||
bpfdos_bpf__destroy( skel);
|
||||
return -err;
|
||||
}
|
||||
@@ -1,96 +0,0 @@
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
#ifndef BAD_BPF_COMMON_UM_H
|
||||
#define BAD_BPF_COMMON_UM_H
|
||||
|
||||
#include <bpf/bpf.h>
|
||||
#include <bpf/libbpf.h>
|
||||
#include <unistd.h>
|
||||
#include <signal.h>
|
||||
#include <sys/resource.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
static volatile sig_atomic_t exiting;
|
||||
|
||||
void sig_int(int signo)
|
||||
{
|
||||
exiting = 1;
|
||||
}
|
||||
|
||||
static bool setup_sig_handler() {
|
||||
// Add handlers for SIGINT and SIGTERM so we shutdown cleanly
|
||||
__sighandler_t sighandler = signal(SIGINT, sig_int);
|
||||
if (sighandler == SIG_ERR) {
|
||||
fprintf(stderr, "can't set signal handler: %s\n", strerror(errno));
|
||||
return false;
|
||||
}
|
||||
sighandler = signal(SIGTERM, sig_int);
|
||||
if (sighandler == SIG_ERR) {
|
||||
fprintf(stderr, "can't set signal handler: %s\n", strerror(errno));
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static int libbpf_print_fn(enum libbpf_print_level level, const char *format, va_list args)
|
||||
{
|
||||
return vfprintf(stderr, format, args);
|
||||
}
|
||||
|
||||
static bool bump_memlock_rlimit(void)
|
||||
{
|
||||
struct rlimit rlim_new = {
|
||||
.rlim_cur = RLIM_INFINITY,
|
||||
.rlim_max = RLIM_INFINITY,
|
||||
};
|
||||
|
||||
if (setrlimit(RLIMIT_MEMLOCK, &rlim_new)) {
|
||||
fprintf(stderr, "Failed to increase RLIMIT_MEMLOCK limit! (hint: run as root)\n");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
static bool setup() {
|
||||
// Set up libbpf errors and debug info callback
|
||||
libbpf_set_print(libbpf_print_fn);
|
||||
|
||||
// Bump RLIMIT_MEMLOCK to allow BPF sub-system to do anything
|
||||
if (!bump_memlock_rlimit()) {
|
||||
return false;
|
||||
};
|
||||
|
||||
// Setup signal handler so we exit cleanly
|
||||
if (!setup_sig_handler()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
#ifdef BAD_BPF_USE_TRACE_PIPE
|
||||
static void read_trace_pipe(void) {
|
||||
int trace_fd;
|
||||
|
||||
trace_fd = open("/sys/kernel/debug/tracing/trace_pipe", O_RDONLY, 0);
|
||||
if (trace_fd == -1) {
|
||||
printf("Error opening trace_pipe: %s\n", strerror(errno));
|
||||
return;
|
||||
}
|
||||
|
||||
while (!exiting) {
|
||||
static char buf[4096];
|
||||
ssize_t sz;
|
||||
|
||||
sz = read(trace_fd, buf, sizeof(buf) -1);
|
||||
if (sz > 0) {
|
||||
buf[sz] = '\x00';
|
||||
puts(buf);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif // BAD_BPF_USE_TRACE_PIPE
|
||||
|
||||
#endif // BAD_BPF_COMMON_UM_H
|
||||
@@ -1,12 +1,12 @@
|
||||
# SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
|
||||
OUTPUT := .output
|
||||
CLANG ?= clang
|
||||
LIBBPF_SRC := $(abspath ../../libbpf/src)
|
||||
BPFTOOL_SRC := $(abspath ../../bpftool/src)
|
||||
LIBBPF_SRC := $(abspath ../third_party/libbpf/src)
|
||||
BPFTOOL_SRC := $(abspath ../third_party/bpftool/src)
|
||||
LIBBPF_OBJ := $(abspath $(OUTPUT)/libbpf.a)
|
||||
BPFTOOL_OUTPUT ?= $(abspath $(OUTPUT)/bpftool)
|
||||
BPFTOOL ?= $(BPFTOOL_OUTPUT)/bootstrap/bpftool
|
||||
LIBBLAZESYM_SRC := $(abspath ../../blazesym/)
|
||||
LIBBLAZESYM_SRC := $(abspath ../third_party/blazesym/)
|
||||
LIBBLAZESYM_OBJ := $(abspath $(OUTPUT)/libblazesym.a)
|
||||
LIBBLAZESYM_HEADER := $(abspath $(OUTPUT)/blazesym.h)
|
||||
ARCH ?= $(shell uname -m | sed 's/x86_64/x86/' \
|
||||
@@ -16,11 +16,11 @@ ARCH ?= $(shell uname -m | sed 's/x86_64/x86/' \
|
||||
| sed 's/mips.*/mips/' \
|
||||
| sed 's/riscv64/riscv/' \
|
||||
| sed 's/loongarch64/loongarch/')
|
||||
VMLINUX := ../../vmlinux/$(ARCH)/vmlinux.h
|
||||
VMLINUX := ../third_party/vmlinux/$(ARCH)/vmlinux.h
|
||||
# Use our own libbpf API headers and Linux UAPI headers distributed with
|
||||
# libbpf to avoid dependency on system-wide headers, which could be missing or
|
||||
# outdated
|
||||
INCLUDES := -I$(OUTPUT) -I../../libbpf/include/uapi -I$(dir $(VMLINUX))
|
||||
INCLUDES := -I$(OUTPUT) -I../third_party/libbpf/include/uapi -I$(dir $(VMLINUX))
|
||||
CFLAGS := -g -Wall
|
||||
ALL_LDFLAGS := $(LDFLAGS) $(EXTRA_LDFLAGS)
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
|
||||
OUTPUT := .output
|
||||
CLANG ?= clang
|
||||
LIBBPF_SRC := $(abspath ../../libbpf/src)
|
||||
BPFTOOL_SRC := $(abspath ../../bpftool/src)
|
||||
LIBBPF_SRC := $(abspath ../third_party/libbpf/src)
|
||||
BPFTOOL_SRC := $(abspath ../third_party/bpftool/src)
|
||||
LIBBPF_OBJ := $(abspath $(OUTPUT)/libbpf.a)
|
||||
BPFTOOL_OUTPUT ?= $(abspath $(OUTPUT)/bpftool)
|
||||
BPFTOOL ?= $(BPFTOOL_OUTPUT)/bootstrap/bpftool
|
||||
LIBBLAZESYM_SRC := $(abspath ../../blazesym/)
|
||||
LIBBLAZESYM_SRC := $(abspath ../third_party/blazesym/)
|
||||
LIBBLAZESYM_OBJ := $(abspath $(OUTPUT)/libblazesym.a)
|
||||
LIBBLAZESYM_HEADER := $(abspath $(OUTPUT)/blazesym.h)
|
||||
ARCH ?= $(shell uname -m | sed 's/x86_64/x86/' \
|
||||
@@ -16,11 +16,11 @@ ARCH ?= $(shell uname -m | sed 's/x86_64/x86/' \
|
||||
| sed 's/mips.*/mips/' \
|
||||
| sed 's/riscv64/riscv/' \
|
||||
| sed 's/loongarch64/loongarch/')
|
||||
VMLINUX := ../../vmlinux/$(ARCH)/vmlinux.h
|
||||
VMLINUX := ../third_party/vmlinux/$(ARCH)/vmlinux.h
|
||||
# Use our own libbpf API headers and Linux UAPI headers distributed with
|
||||
# libbpf to avoid dependency on system-wide headers, which could be missing or
|
||||
# outdated
|
||||
INCLUDES := -I$(OUTPUT) -I../../libbpf/include/uapi -I$(dir $(VMLINUX))
|
||||
INCLUDES := -I$(OUTPUT) -I../third_party/libbpf/include/uapi -I$(dir $(VMLINUX))
|
||||
CFLAGS := -g -Wall
|
||||
ALL_LDFLAGS := $(LDFLAGS) $(EXTRA_LDFLAGS)
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
|
||||
OUTPUT := .output
|
||||
CLANG ?= clang
|
||||
LIBBPF_SRC := $(abspath ../../libbpf/src)
|
||||
BPFTOOL_SRC := $(abspath ../../bpftool/src)
|
||||
LIBBPF_SRC := $(abspath ../third_party/libbpf/src)
|
||||
BPFTOOL_SRC := $(abspath ../third_party/bpftool/src)
|
||||
LIBBPF_OBJ := $(abspath $(OUTPUT)/libbpf.a)
|
||||
BPFTOOL_OUTPUT ?= $(abspath $(OUTPUT)/bpftool)
|
||||
BPFTOOL ?= $(BPFTOOL_OUTPUT)/bootstrap/bpftool
|
||||
LIBBLAZESYM_SRC := $(abspath ../../blazesym/)
|
||||
LIBBLAZESYM_SRC := $(abspath ../third_party/blazesym/)
|
||||
LIBBLAZESYM_OBJ := $(abspath $(OUTPUT)/libblazesym.a)
|
||||
LIBBLAZESYM_HEADER := $(abspath $(OUTPUT)/blazesym.h)
|
||||
ARCH ?= $(shell uname -m | sed 's/x86_64/x86/' \
|
||||
@@ -16,11 +16,11 @@ ARCH ?= $(shell uname -m | sed 's/x86_64/x86/' \
|
||||
| sed 's/mips.*/mips/' \
|
||||
| sed 's/riscv64/riscv/' \
|
||||
| sed 's/loongarch64/loongarch/')
|
||||
VMLINUX := ../../vmlinux/$(ARCH)/vmlinux.h
|
||||
VMLINUX := ../third_party/vmlinux/$(ARCH)/vmlinux.h
|
||||
# Use our own libbpf API headers and Linux UAPI headers distributed with
|
||||
# libbpf to avoid dependency on system-wide headers, which could be missing or
|
||||
# outdated
|
||||
INCLUDES := -I$(OUTPUT) -I../../libbpf/include/uapi -I$(dir $(VMLINUX))
|
||||
INCLUDES := -I$(OUTPUT) -I../third_party/libbpf/include/uapi -I$(dir $(VMLINUX))
|
||||
CFLAGS := -g -Wall
|
||||
ALL_LDFLAGS := $(LDFLAGS) $(EXTRA_LDFLAGS)
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
|
||||
OUTPUT := .output
|
||||
CLANG ?= clang
|
||||
LIBBPF_SRC := $(abspath ../../libbpf/src)
|
||||
BPFTOOL_SRC := $(abspath ../../bpftool/src)
|
||||
LIBBPF_SRC := $(abspath ../third_party/libbpf/src)
|
||||
BPFTOOL_SRC := $(abspath ../third_party/bpftool/src)
|
||||
LIBBPF_OBJ := $(abspath $(OUTPUT)/libbpf.a)
|
||||
BPFTOOL_OUTPUT ?= $(abspath $(OUTPUT)/bpftool)
|
||||
BPFTOOL ?= $(BPFTOOL_OUTPUT)/bootstrap/bpftool
|
||||
LIBBLAZESYM_SRC := $(abspath ../../blazesym/)
|
||||
LIBBLAZESYM_SRC := $(abspath ../third_party/blazesym/)
|
||||
LIBBLAZESYM_OBJ := $(abspath $(OUTPUT)/libblazesym.a)
|
||||
LIBBLAZESYM_HEADER := $(abspath $(OUTPUT)/blazesym.h)
|
||||
ARCH ?= $(shell uname -m | sed 's/x86_64/x86/' \
|
||||
@@ -16,11 +16,11 @@ ARCH ?= $(shell uname -m | sed 's/x86_64/x86/' \
|
||||
| sed 's/mips.*/mips/' \
|
||||
| sed 's/riscv64/riscv/' \
|
||||
| sed 's/loongarch64/loongarch/')
|
||||
VMLINUX := ../../vmlinux/$(ARCH)/vmlinux.h
|
||||
VMLINUX := ../third_party/vmlinux/$(ARCH)/vmlinux.h
|
||||
# Use our own libbpf API headers and Linux UAPI headers distributed with
|
||||
# libbpf to avoid dependency on system-wide headers, which could be missing or
|
||||
# outdated
|
||||
INCLUDES := -I$(OUTPUT) -I../../libbpf/include/uapi -I$(dir $(VMLINUX))
|
||||
INCLUDES := -I$(OUTPUT) -I../third_party/libbpf/include/uapi -I$(dir $(VMLINUX))
|
||||
CFLAGS := -g -Wall
|
||||
ALL_LDFLAGS := $(LDFLAGS) $(EXTRA_LDFLAGS)
|
||||
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
|
||||
certs:
|
||||
openssl req -x509 -nodes -newkey rsa:4096 -keyout client.key -out client.crt -days 365 -subj '/CN=example.com'
|
||||
openssl req -x509 -nodes -newkey rsa:4096 -keyout server.key -out server.crt -days 365 -subj '/CN=example.com'
|
||||
|
||||
clean:
|
||||
rm -f client.key client.crt
|
||||
rm -f server.key server.crt
|
||||
|
||||
@@ -1,62 +0,0 @@
|
||||
# openssl_tracer
|
||||
|
||||
> openssl_tracer: 基于eBPF技术实现TLS加密的明文捕获。
|
||||
|
||||
该样例项目是基于eBPF来追踪OpenSSL动态库的例子,使用 libbpf 进行追踪。在eBPF 程序中,
|
||||
由于 libbpf 方法内核已经支持了 BTF,不再需要引入众多的内核头文件来获取内核数据结构的定义,
|
||||
取而代之的是 bpftool 生成的 vmlinux.h 头文件,其中包含内核数据结构的定义。
|
||||
|
||||
这个样例是为了配合“使用eBPF跟踪 SSL/TLS 连接” [这个 Blog](https://kiosk007.top/post/%E4%BD%BF%E7%94%A8ebpf%E8%B7%9F%E8%B8%AA-ssltls-%E8%BF%9E%E6%8E%A5/)
|
||||
|
||||
## OpenSSL Tracer using BPF
|
||||
|
||||

|
||||
|
||||
|
||||
This is a basic example of how to trace the OpenSSL library using eBPF. This tracer uses BCC to deploy the eBPF probes. This demo was created to accompany the "Debugging with eBPF Part 3: Tracing SSL/TLS connections" blog post.
|
||||
|
||||
|
||||
eBPF 程序能够加载到 trace points、内核及用户空间应用程序中的 probe points,
|
||||
这种能力使我们对应用程序的运行时行为(runtime behavior)和系统本身 (system itself)提供了史无前例的可观测性。
|
||||
|
||||
## Prerequisites
|
||||
操作系统版本最好大于 5.x,本样例运行于 ubuntu 5.15.x 版本。 一些5.4版本以下的内核还会存在些许问题,详见 https://github.com/iovisor/bcc/issues/2948
|
||||
```bash
|
||||
$ uname -r
|
||||
5.15.0-30-generic
|
||||
```
|
||||
|
||||
`CONFIG_DEBUG_INFO_BTF = y`,新的 BPF 二进制文件仅在设置了此内核配置选项后才可用,Ubuntu 20.10 已经将此配置选项设置为默认选项
|
||||
|
||||
需要安装 libbpf 工具,在Ubuntu 上执行以下命令,
|
||||
``` bash
|
||||
$ sudo apt install libbpf-dev
|
||||
```
|
||||
其他操作系统有类似的命令。
|
||||
|
||||
## Build
|
||||
执行以下命令
|
||||
```bash
|
||||
make ebpf
|
||||
make build
|
||||
```
|
||||
|
||||
## Run Demo Application
|
||||
该 Demo 包含一个 ssl_client_server 的 ssl 通信的小程序。运行该小程序可以稳定的运行 ssl 通信数据。
|
||||
``` bash
|
||||
cd ssl_client_server; python3 ./server.py
|
||||
cd ssl_client_server; python3 ./client.py
|
||||
```
|
||||
|
||||
## Run Tracer
|
||||
以下方式
|
||||
```bash
|
||||
sudo ./openssl_tracer <pid>
|
||||
```
|
||||
如果是追踪小程序,则可以
|
||||
|
||||
```bash
|
||||
sudo ./openssl_tracer $(pgrep -f "./client.py")
|
||||
```
|
||||
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFDTCCAvWgAwIBAgIUelsm684mMQjCCN029zGerL7lN6gwDQYJKoZIhvcNAQEL
|
||||
BQAwFjEUMBIGA1UEAwwLZXhhbXBsZS5jb20wHhcNMjIwNTA1MTUxNTQ1WhcNMjMw
|
||||
NTA1MTUxNTQ1WjAWMRQwEgYDVQQDDAtleGFtcGxlLmNvbTCCAiIwDQYJKoZIhvcN
|
||||
AQEBBQADggIPADCCAgoCggIBAL1PHUhs7Ua78Xf789ZKna+1aNnXJuJ8kzjuv3A1
|
||||
iLCvs8rJgmhThlnjXQVOsOXVUCHoajW/z6OWf9bMx/MH7z9btXdZFyWF847x37Gy
|
||||
9qYroppu5grXwIZjQYPK4ZO5K8MDBfRD3M8oWvj9d5aU0/S2ia6jP+A7Az6wf8cl
|
||||
BBQ32DQA7ySCocbKbaFcikqpaez1nADXg5TdBxf1YsKkYFKj4P9Il3QSByeNcRwY
|
||||
ZE0x8gK7AGZEEjoUU2+IL2BqEx54yJQDYZ7NZ+5IBl7HkMYByR1PgHUhreWAMPTr
|
||||
sO8/WrNj10nbJRBZEpsphAnvC5noaQ7SdqMRbr8i2y+LUA6jqtusd8OZsUwNDwD3
|
||||
g1VZZ9f1QyJ5IgV3SQqEDSFCbOS1ASqMODU7Iubpt170PiCxEUIZbP93VtP+0tuS
|
||||
noI0lki/61ui+z3yhwNMzkohby+XDY79oZNw8phI5rYJmxjayzrfjGv2p1a37//p
|
||||
pQiL0YKdcoL9HIe4qu8WKHH324h2RCpUw/SPhG1U4627hv97DQotA1Ee+t5+dh96
|
||||
GLVacGiRzAASprELHmfJ37/fdb170gncZh3kLaG+TV4hsMhijKjX9CW+bmwehPCe
|
||||
BUuHvBYkiZVjIl937R34qznW5Cnhvktaj6sC6QU6sI6C3K3odkaCfcGR0Sb9NZ4a
|
||||
zXq1AgMBAAGjUzBRMB0GA1UdDgQWBBTGX8kbOfG3OivNo2u0i4qb8fe4CjAfBgNV
|
||||
HSMEGDAWgBTGX8kbOfG3OivNo2u0i4qb8fe4CjAPBgNVHRMBAf8EBTADAQH/MA0G
|
||||
CSqGSIb3DQEBCwUAA4ICAQBToRKubwmK3lEKMm5mPP+lQbPO+Y0kW6OXpdAMSLCT
|
||||
TP+hml/SD5+G86cj/XmxPT2BFUrEOaqfTV7Yk7QyV7Wi15Bd1dqnSINM7HzuD0WF
|
||||
7MS6tQ3/qErSWmUPhgp+9smxJSsSJDyjkRZnKT0p9c/1f7J4jOhByF+OLbSMVy0c
|
||||
MTV5iivgBKdZW/IQp03lc/2Tj0zbCePXR26WDiFBJ7fgkWOXZG/FmUkSp2rKNv7v
|
||||
vGEo9K5nEcYzTuGnO/J5TyYxlMQrJjz2+dfSOfN/Xv9sSAifJG4M7UqcY6UWrKZ+
|
||||
r4Yd+pVAN5ahNljqC/daekKyLn8fYx1LyAGmgViV1rR53gnStutquMaHiz+UrE7N
|
||||
3L2UL0lSDGR7vUMa3LuVrAHAk/GKgVRGi4qaprl2GhXpd1mDhiSW48C/C9MZGS3J
|
||||
2Nwmu5hBuGdBtVhSU7rYNiU3rMxPwPcy6PgJIo4xlaKDzSvy2cSqiKND3yh9WfmV
|
||||
s+xXlQG+6xr5+eiQDe3o0/li006jTv1Ypql/nf/ma5qQrhe2DsZl1WGOxo1sOpJo
|
||||
IAVCIuTMnxSxvPfL9Ux47J7hA5/ovumRwiyApbOncw8/I66geHwTKG2kt3Mni53h
|
||||
qP7Q2II7NqEU4BfWMUsgJAOLbXvLtwdP5+naY52GvEAK9KgipHVeSKUKASLDxzC8
|
||||
NA==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,52 +0,0 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQC9Tx1IbO1Gu/F3
|
||||
+/PWSp2vtWjZ1ybifJM47r9wNYiwr7PKyYJoU4ZZ410FTrDl1VAh6Go1v8+jln/W
|
||||
zMfzB+8/W7V3WRclhfOO8d+xsvamK6KabuYK18CGY0GDyuGTuSvDAwX0Q9zPKFr4
|
||||
/XeWlNP0tomuoz/gOwM+sH/HJQQUN9g0AO8kgqHGym2hXIpKqWns9ZwA14OU3QcX
|
||||
9WLCpGBSo+D/SJd0EgcnjXEcGGRNMfICuwBmRBI6FFNviC9gahMeeMiUA2GezWfu
|
||||
SAZex5DGAckdT4B1Ia3lgDD067DvP1qzY9dJ2yUQWRKbKYQJ7wuZ6GkO0najEW6/
|
||||
Itsvi1AOo6rbrHfDmbFMDQ8A94NVWWfX9UMieSIFd0kKhA0hQmzktQEqjDg1OyLm
|
||||
6bde9D4gsRFCGWz/d1bT/tLbkp6CNJZIv+tbovs98ocDTM5KIW8vlw2O/aGTcPKY
|
||||
SOa2CZsY2ss634xr9qdWt+//6aUIi9GCnXKC/RyHuKrvFihx99uIdkQqVMP0j4Rt
|
||||
VOOtu4b/ew0KLQNRHvrefnYfehi1WnBokcwAEqaxCx5nyd+/33W9e9IJ3GYd5C2h
|
||||
vk1eIbDIYoyo1/Qlvm5sHoTwngVLh7wWJImVYyJfd+0d+Ks51uQp4b5LWo+rAukF
|
||||
OrCOgtyt6HZGgn3BkdEm/TWeGs16tQIDAQABAoICAAH6LA+gF6BYAS8kIglYcSov
|
||||
Jl+0GBNggrcjAzvcS0exJhsVnLeTO8F/lu6hwkY8QqCACW/zR2tpfH9VVzdKG20Z
|
||||
e506AHxjWEZjb1cvS9UzenjLdLqjQz8EFWCXg2CkG/lm9C53cPx26vBT0WZwuoAB
|
||||
UhHRYa7pXuDOPh9p2w+M/8SXR+glNyRY4+k+CrG58EHJ1O3LUnQBFPxikzv+NIVY
|
||||
cdaovvA26f03RHmrJY0K2wC9TEVFK72QjciJ7xi+MuHsGAg3utLKSW4bMXnW8sOm
|
||||
rB+Sv4A5sFPH0XsVZR0yl7Ns9Qgv8kSn8YJOXjMuXHwoicReXV/ZpEL5zblC5ryj
|
||||
zpajbOYKRjo7Dspt2e9cStcoZg+Nax1/vg4cgQnD5VOAJtMakNPvTtEp3nDc8sKZ
|
||||
yAENKJYj5f2IUIHp8m25QzXzv9qc4+KZSqYq4qefqziHD2RSkCfcG6AjkP7be75V
|
||||
8gGTxpaw+2xTlzHkFaiJnlC/vPtcbNKArS4l6jxlMMQMdmffIVIuEKMGebQ8fmE6
|
||||
V6PIWSIwdRVQ+AIa8qyxwv8Gdf2gz1xK/f75GgG434MrgHJ5sfChPsM1kuB46V84
|
||||
G6BGAizEgHOFrX1P82axs8Dr8eVagmPsoN4D7XnLcVv48/4SifGqGJqfLuodlaLZ
|
||||
fybPpZOD1ixTlAXFDcKnAoIBAQDfjYTHq6Sp/sD5A5aPmYpKZCnYHuipFwiL0uK4
|
||||
8U58iuC8iyGEFFum7q785NLhDBhgfYd77BkEExtj/mwVinWO/JTJJfwiet2Ay8D0
|
||||
z+FgPcVZWj0807VrdH1juBAcXfQ28i9pKnfRC25Q9BnSKQoWUwAyvECpwJacbqA7
|
||||
V8gWVtcpJqxY7qw46aeTlLGQV478IYOcYDkQXrRScfwhpiEGftoKy5rQvUakpFGu
|
||||
qy1y1qbjSWc3W+Hpuf3qwdX/rNqNq1mEp1SSiv6x3L82kjO2Qln49GzxwhUnBrYx
|
||||
zlMh4FkUqi+s3fQgs9othMW4j4bDI/aECA1srKRlk1rO/ouvAoIBAQDYyTX6GezB
|
||||
mIx3tNcvfaEWC418nZsPL3vB7YPGMNp274SiIior4dbpAb1fOd7E+/jHSA60FCSK
|
||||
B4iejgn3Py6b5qpxI9vDomoaH7E4dSY/2UP9B4MjLFR6vuamrLaT0PBlov50Q3xB
|
||||
PetjnCmuL6c256bcgdzSEzoKNyM/pnkaHlC5l0osAawM/vgz2jge/K4fOgSbI+vk
|
||||
Px/eGozUIq2YsAANErAhkL17f+VzSfSkohBrbGg/iCY3o+cFETfNjPMTNVD1Qm3P
|
||||
PhzHuHctNqN3jJNUmngjrksOl//h+xyXySFHwyDnGKyVcC2P3nFGj4/QnG98KhiY
|
||||
cyzactKCBsTbAoIBAC/IV/E1xuRvB2AyXCQldWGhNzByqtg5jCIW2U8ehOAp7w9d
|
||||
zbQlhdGQguabIlfn9e3p5uOd+1rbmqcs4n1YMvh1FHhKHjJggKfe5Uduh4XCrkQC
|
||||
/cPanJRzObnuxcLKckCsU2XvJd0QzGuRQVOiYf2TkB9IDao69/ZHzwfgI2xi82pg
|
||||
UcZQfY9Mofzxc2Ke1Hkf0LnD926AT5qvsmyezcBNrN1R1612R3s5hBwJipVZPCKo
|
||||
td8nTIpgrt1WwR79G1ncni20dmc8PmRWAqjvZw418HU+CWtDSLImxRqwNySuh1vb
|
||||
ZIVWi6/RwXipQHnKc8uSDEb8UaJA5IKxlF9aGRECggEBAJLnjz9jcBAlCxNXpfbV
|
||||
wGKLA58twlUBDXF2PbUBiBnO5+djFYbVLOiLOEQemDqOsaCB0QzxFW2/+zHO+Svm
|
||||
UfRt1JSFAzjIh/QaA+NJZ9kepzcBbzlXogvn76+FHNiAX1fQo3QwAzTG/AttWMVk
|
||||
H4FSa73D9tsZEly3zpgkfK5ZWsTZo/a8T1YjNhkVSLCe9HPOwi5Lol/y8up0vXhH
|
||||
47GzmuVBA8BLMExPeDKvLCygclYJiX98CMHtvPCvIUyWtmYO3ETHdlhZM/GXrJMk
|
||||
EpRB29kaME2ln9FM6aa+nzqwnm/d6B8SlmlSMl3rFIIHaSKpz9apRC+S5RNHeiWI
|
||||
5r8CggEAUYVdEqAzlaLHVu5RoPhOiOhX4myi4nAt2+ewQxKDjAyBiHHtVeetzak9
|
||||
gSRyogW4nkb73831qQXkIOigBa6GQIGHg6t7W75F8f9DumWQgJPqc5CObnDohsOj
|
||||
BMqBRCv6L3fXHOmNNGomEnGKDTkjrUzWgVVj4u3rPA33Di7QtF7CqMZJhVF7Hj3R
|
||||
reWCh2ozYBZdYGZT5Ln/udcAptkJ6NBbQvIbGrwSnWManK6UnY/cBwFfboswDJWn
|
||||
VXPi15ZP0PenKuvu6N43ez8tTIw8hz2VXKnwuyZ9oMMLerqozlfUDC9UiFPQCfmg
|
||||
YJBwHSU2XT8UgdxJka4Kou0tlNpmhw==
|
||||
-----END PRIVATE KEY-----
|
||||
@@ -1,50 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
# Copyright 2018- The Pixie Authors.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import socket
|
||||
import ssl
|
||||
import time
|
||||
import random
|
||||
|
||||
host_addr = '127.0.0.1'
|
||||
host_port = 8082
|
||||
|
||||
server_sni_hostname = 'example.com'
|
||||
client_cert = 'client.crt'
|
||||
client_key = 'client.key'
|
||||
server_cert = 'server.crt'
|
||||
|
||||
context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH, cafile=server_cert)
|
||||
context.load_cert_chain(certfile=client_cert, keyfile=client_key)
|
||||
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
conn = context.wrap_socket(s, server_side=False, server_hostname=server_sni_hostname)
|
||||
conn.connect((host_addr, host_port))
|
||||
print("SSL established.")
|
||||
|
||||
count = 0
|
||||
while True:
|
||||
time.sleep(1)
|
||||
secret = random.randint(0, 1024 * 1024 * 1024)
|
||||
conn.send("Client secret {} is {}".format(count, secret).encode())
|
||||
data = conn.recv(1024)
|
||||
print(data.decode())
|
||||
count += 1
|
||||
|
||||
print("Closing connection")
|
||||
conn.close()
|
||||
@@ -1,30 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFDTCCAvWgAwIBAgIUYR+ByE3MsNfeQxOwoD6Qdn5NQlIwDQYJKoZIhvcNAQEL
|
||||
BQAwFjEUMBIGA1UEAwwLZXhhbXBsZS5jb20wHhcNMjIwNTA1MTUxNTQ2WhcNMjMw
|
||||
NTA1MTUxNTQ2WjAWMRQwEgYDVQQDDAtleGFtcGxlLmNvbTCCAiIwDQYJKoZIhvcN
|
||||
AQEBBQADggIPADCCAgoCggIBAJbRQViOAWLIz8pue5lT09OYpvbHsp9wpjo+yUbE
|
||||
zOzCJwraBDUEaiGVokjWiqMBkZP8fJKu5lt1guTwStPJRj66ZK/GmxGN27OhXGT9
|
||||
M1mBTH42cFyld/17Wny0MX4HOl1jZFT/HYxJDc58SNAXWRUQAL8ihq0NFQS4yqfR
|
||||
OkxAna/PsvfVj2CkW0vxF6/iUJ3wHJ8pBHXdNu26awM72Ih3zgpF3AICKAyYid8v
|
||||
2vXTOyzi9Ay5sQPnhmuiysdC/YoYd9ocDSw20HyXfn6lSrZ7LIaw8miRGIug+O+y
|
||||
BoIxjqAv5u6pDckkzmcsjuWc8xIcXIu/BzBKpWDmdn/rZxA2OElp9y1P98BcTmNR
|
||||
yYYWyeKWxMPwa3Wdb5rJpb4OlJ+5grDS7bAZwwwm4RfRAJif62RwnToxzd/+GcMP
|
||||
aJ+E2/T/hIlv5Sp51QdTrLZl3etGxygEkw9Kcdt7YH/4MD77OVNYPla2PHIHPcLH
|
||||
oqBfDia0b2gQJVRQFEzMsTka9EYNuhqwHyPjVFoGJC6R4PJxceFC6rJ2n3f9i9Tz
|
||||
R4Wm0i4fi4Mt91Kn2AEclRo4mpVoUy9gbxYYOMw6AlGt+DrKjawMFJ6gOH1ueBaI
|
||||
Tz92NGQzqwOcTf8YeL2YwoDNGNrIfems76/A5PFWCTH+DA+raQgtgTguopKTYkcu
|
||||
1xdzAgMBAAGjUzBRMB0GA1UdDgQWBBTuryJv3wC6IefOQGPvCIRjamrAPDAfBgNV
|
||||
HSMEGDAWgBTuryJv3wC6IefOQGPvCIRjamrAPDAPBgNVHRMBAf8EBTADAQH/MA0G
|
||||
CSqGSIb3DQEBCwUAA4ICAQAbXdXeM1cqdJBipS0tRw0fl5GxFjY5wYtu81+Ga4Rm
|
||||
oQhzG58c1qpx6uqXEq2OBc+tF/ypN+EF5XIyOB5i08TZ/feyiB6/bRPXkB6tleog
|
||||
KOFS2OZb7/R+CdRAkx/nrWs7M4ZK9Ucxn+XqVDZG+LM1SGOuScE2J8x57BfQxUEC
|
||||
Yu8sOOwO+0+2fjLeUa7FpOxrX6WUGRwOlm4mWeKaevDD20hZ3gTa4s3AiNPhA2Si
|
||||
MpuPtVzQbC2WGiFpXSBrvKUhH5IkXepRKSmPaddPUNs6ROqENO9wklo+ttfOzuAL
|
||||
b8xmSPui+UlivnqFfDEzWAdMv3FJ2rZR+vKPkxCg3WQd8jhs9lR5E1AoIS5CECd2
|
||||
qmIy8zKb10J0z4ZN9laSppPZ2ktkqbQqs4lSFVgaUUDvvBAlFtorN3fOce7D+PG+
|
||||
v51sPiHRrnMSvSHpcwyOAWSxw3B+3oOId0UtD4LLXKIXROL0ibT/Iy+xigpgDk32
|
||||
8aU7kcrviMRrWvnVhT32r6xIVjgfyB+GRO7xKd0kcsWRWSO1Xf28lJKHXLQJ11b+
|
||||
6HC8ix/8bDue9YDZ37Au7/DGInza+Y6YzlpM6qGAo290A0BjoV5I4P2QZeElSGaa
|
||||
1GMPCz119ftHdueEXzXhXHnbI0QdinOI9rYC8SsBfIVoDX3OsKGm2FHGAW7ZxMeo
|
||||
vA==
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,52 +0,0 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
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
|
||||
OldWF5Wk+mFkrEGSlxf7RYw3fFly
|
||||
-----END PRIVATE KEY-----
|
||||
@@ -1,57 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
# Copyright 2018- The Pixie Authors.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import socket
|
||||
import ssl
|
||||
import time
|
||||
import random
|
||||
|
||||
listen_addr = '127.0.0.1'
|
||||
listen_port = 8082
|
||||
server_cert = 'server.crt'
|
||||
server_key = 'server.key'
|
||||
client_certs = 'client.crt'
|
||||
|
||||
context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
|
||||
context.verify_mode = ssl.CERT_REQUIRED
|
||||
context.load_cert_chain(certfile=server_cert, keyfile=server_key)
|
||||
context.load_verify_locations(cafile=client_certs)
|
||||
|
||||
bindsocket = socket.socket()
|
||||
bindsocket.bind((listen_addr, listen_port))
|
||||
bindsocket.listen(5)
|
||||
|
||||
while True:
|
||||
print("Waiting for client")
|
||||
newsocket, fromaddr = bindsocket.accept()
|
||||
print("Client connected: {}:{}".format(fromaddr[0], fromaddr[1]))
|
||||
conn = context.wrap_socket(newsocket, server_side=True)
|
||||
print("SSL established.")
|
||||
|
||||
count = 0
|
||||
while True:
|
||||
time.sleep(1)
|
||||
data = conn.recv(1024)
|
||||
print(data.decode())
|
||||
secret = random.randint(0, 1024 * 1024 * 1024)
|
||||
conn.send("Server secret {} is {}".format(count, secret).encode())
|
||||
count += 1
|
||||
|
||||
print("Closing connection")
|
||||
conn.shutdown(socket.SHUT_RDWR)
|
||||
conn.close()
|
||||
@@ -1,12 +1,12 @@
|
||||
# SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
|
||||
OUTPUT := .output
|
||||
CLANG ?= clang
|
||||
LIBBPF_SRC := $(abspath ../../libbpf/src)
|
||||
BPFTOOL_SRC := $(abspath ../../bpftool/src)
|
||||
LIBBPF_SRC := $(abspath ../third_party/libbpf/src)
|
||||
BPFTOOL_SRC := $(abspath ../third_party/bpftool/src)
|
||||
LIBBPF_OBJ := $(abspath $(OUTPUT)/libbpf.a)
|
||||
BPFTOOL_OUTPUT ?= $(abspath $(OUTPUT)/bpftool)
|
||||
BPFTOOL ?= $(BPFTOOL_OUTPUT)/goroutine/bpftool
|
||||
LIBBLAZESYM_SRC := $(abspath ../../blazesym/)
|
||||
LIBBLAZESYM_SRC := $(abspath ../third_party/blazesym/)
|
||||
LIBBLAZESYM_OBJ := $(abspath $(OUTPUT)/libblazesym.a)
|
||||
LIBBLAZESYM_HEADER := $(abspath $(OUTPUT)/blazesym.h)
|
||||
ARCH ?= $(shell uname -m | sed 's/x86_64/x86/' \
|
||||
@@ -16,11 +16,11 @@ ARCH ?= $(shell uname -m | sed 's/x86_64/x86/' \
|
||||
| sed 's/mips.*/mips/' \
|
||||
| sed 's/riscv64/riscv/' \
|
||||
| sed 's/loongarch64/loongarch/')
|
||||
VMLINUX := ../../vmlinux/$(ARCH)/vmlinux.h
|
||||
VMLINUX := ../third_party/vmlinux/$(ARCH)/vmlinux.h
|
||||
# Use our own libbpf API headers and Linux UAPI headers distributed with
|
||||
# libbpf to avoid dependency on system-wide headers, which could be missing or
|
||||
# outdated
|
||||
INCLUDES := -I$(OUTPUT) -I../../libbpf/include/uapi -I$(dir $(VMLINUX))
|
||||
INCLUDES := -I$(OUTPUT) -I../third_party/libbpf/include/uapi -I$(dir $(VMLINUX))
|
||||
CFLAGS := -g -Wall
|
||||
ALL_LDFLAGS := $(LDFLAGS) $(EXTRA_LDFLAGS)
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
|
||||
OUTPUT := .output
|
||||
CLANG ?= clang
|
||||
LIBBPF_SRC := $(abspath ../../libbpf/src)
|
||||
BPFTOOL_SRC := $(abspath ../../bpftool/src)
|
||||
LIBBPF_SRC := $(abspath ../third_party/libbpf/src)
|
||||
BPFTOOL_SRC := $(abspath ../third_party/bpftool/src)
|
||||
LIBBPF_OBJ := $(abspath $(OUTPUT)/libbpf.a)
|
||||
BPFTOOL_OUTPUT ?= $(abspath $(OUTPUT)/bpftool)
|
||||
BPFTOOL ?= $(BPFTOOL_OUTPUT)/funclatency/bpftool
|
||||
LIBBLAZESYM_SRC := $(abspath ../../blazesym/)
|
||||
LIBBLAZESYM_SRC := $(abspath ../third_party/blazesym/)
|
||||
LIBBLAZESYM_OBJ := $(abspath $(OUTPUT)/libblazesym.a)
|
||||
LIBBLAZESYM_HEADER := $(abspath $(OUTPUT)/blazesym.h)
|
||||
ARCH ?= $(shell uname -m | sed 's/x86_64/x86/' \
|
||||
@@ -16,11 +16,11 @@ ARCH ?= $(shell uname -m | sed 's/x86_64/x86/' \
|
||||
| sed 's/mips.*/mips/' \
|
||||
| sed 's/riscv64/riscv/' \
|
||||
| sed 's/loongarch64/loongarch/')
|
||||
VMLINUX := ../../vmlinux/$(ARCH)/vmlinux.h
|
||||
VMLINUX := ../third_party/vmlinux/$(ARCH)/vmlinux.h
|
||||
# Use our own libbpf API headers and Linux UAPI headers distributed with
|
||||
# libbpf to avoid dependency on system-wide headers, which could be missing or
|
||||
# outdated
|
||||
INCLUDES := -I$(OUTPUT) -I../../libbpf/include/uapi -I$(dir $(VMLINUX))
|
||||
INCLUDES := -I$(OUTPUT) -I../third_party/libbpf/include/uapi -I$(dir $(VMLINUX))
|
||||
CFLAGS := -g -Wall
|
||||
ALL_LDFLAGS := $(LDFLAGS) $(EXTRA_LDFLAGS)
|
||||
|
||||
|
||||
0
blazesym → src/third_party/blazesym
vendored
0
blazesym → src/third_party/blazesym
vendored
1
src/third_party/bpftool
vendored
Submodule
1
src/third_party/bpftool
vendored
Submodule
Submodule src/third_party/bpftool added at 88156afd0f
1
src/third_party/libbpf
vendored
Submodule
1
src/third_party/libbpf
vendored
Submodule
Submodule src/third_party/libbpf added at 05f94ddbb8
Reference in New Issue
Block a user