From 808042cc937606d7e81919c4d77b7eb3cedcc548 Mon Sep 17 00:00:00 2001 From: Hailiang Date: Fri, 14 Mar 2025 17:40:02 +0800 Subject: [PATCH] add sw_64 support (cherry picked from commit b9925be808c526c1a6d65d7486333da538cbcfc4) --- add-sw_64-support.patch | 72 +++++++++++++++++++++++++++++++++++++++++ libbpf.spec | 6 +++- 2 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 add-sw_64-support.patch diff --git a/add-sw_64-support.patch b/add-sw_64-support.patch new file mode 100644 index 0000000..26301ab --- /dev/null +++ b/add-sw_64-support.patch @@ -0,0 +1,72 @@ +From 93391a6f90774d4e6ee3d21972ef937eb183067c Mon Sep 17 00:00:00 2001 +From: Super User +Date: Fri, 14 Mar 2025 17:31:35 +0800 +Subject: [PATCH] add sw_64 support + +--- + src/bpf_tracing.h | 35 +++++++++++++++++++++++++++++++++++ + 1 file changed, 35 insertions(+) + +diff --git a/src/bpf_tracing.h b/src/bpf_tracing.h +index 6fb3d0f..ba30c3f 100644 +--- a/src/bpf_tracing.h ++++ b/src/bpf_tracing.h +@@ -35,6 +35,9 @@ + #elif defined(__TARGET_ARCH_loongarch) + #define bpf_target_loongarch + #define bpf_target_defined ++#elif defined(__TARGET_ARCH_sw_64) ++ #define bpf_target_sw64 ++ #define bpf_target_defined + #else + + /* Fall back to what the compiler says */ +@@ -68,6 +71,9 @@ + #elif defined(__loongarch__) + #define bpf_target_loongarch + #define bpf_target_defined ++#elif defined(__sw_64__) ++ #define bpf_target_sw64 ++ #define bpf_target_defined + #endif /* no compiler target */ + + #endif +@@ -442,6 +448,35 @@ struct pt_regs___arm64 { + #define __PT_SP_REG regs[3] + #define __PT_IP_REG csr_era + ++#elif defined(bpf_target_sw64) ++ ++/* sw64 provides struct user_pt_regs instead of struct pt_regs to userspace */ ++struct pt_regs; ++#define PT_REGS_SW64 const volatile struct user_pt_regs ++#define PT_REGS_PARM1(x) (((PT_REGS_SW64 *)(x))->regs[16]) ++#define PT_REGS_PARM2(x) (((PT_REGS_SW64 *)(x))->regs[17]) ++#define PT_REGS_PARM3(x) (((PT_REGS_SW64 *)(x))->regs[18]) ++#define PT_REGS_PARM4(x) (((PT_REGS_SW64 *)(x))->regs[19]) ++#define PT_REGS_PARM5(x) (((PT_REGS_SW64 *)(x))->regs[20]) ++#define PT_REGS_RET(x) (((PT_REGS_SW64 *)(x))->regs[26]) ++/* Works only with CONFIG_FRAME_POINTER */ ++#define PT_REGS_FP(x) (((PT_REGS_SW64 *)(x))->regs[15]) ++#define PT_REGS_RC(x) (((PT_REGS_SW64 *)(x))->regs[0]) ++#define PT_REGS_SP(x) (((PT_REGS_SW64 *)(x))->regs[30]) ++#define PT_REGS_IP(x) (((PT_REGS_SW64 *)(x))->pc) ++ ++#define PT_REGS_PARM1_CORE(x) BPF_CORE_READ((PT_REGS_SW64 *)(x), regs[16]) ++#define PT_REGS_PARM2_CORE(x) BPF_CORE_READ((PT_REGS_SW64 *)(x), regs[17]) ++#define PT_REGS_PARM3_CORE(x) BPF_CORE_READ((PT_REGS_SW64 *)(x), regs[18]) ++#define PT_REGS_PARM4_CORE(x) BPF_CORE_READ((PT_REGS_SW64 *)(x), regs[19]) ++#define PT_REGS_PARM5_CORE(x) BPF_CORE_READ((PT_REGS_SW64 *)(x), regs[20]) ++#define PT_REGS_RET_CORE(x) BPF_CORE_READ((PT_REGS_SW64 *)(x), regs[26]) ++#define PT_REGS_FP_CORE(x) BPF_CORE_READ((PT_REGS_SW64 *)(x), regs[15]) ++#define PT_REGS_RC_CORE(x) BPF_CORE_READ((PT_REGS_SW64 *)(x), regs[0]) ++#define PT_REGS_SP_CORE(x) BPF_CORE_READ((PT_REGS_SW64 *)(x), regs[30]) ++#define PT_REGS_IP_CORE(x) BPF_CORE_READ((PT_REGS_SW64 *)(x), pc) ++ ++ + #endif + + #if defined(bpf_target_defined) +-- +2.43.0 + diff --git a/libbpf.spec b/libbpf.spec index caa48c4..f6132d3 100644 --- a/libbpf.spec +++ b/libbpf.spec @@ -4,7 +4,7 @@ Name: %{githubname} Version: %{githubver} -Release: 6 +Release: 7 Summary: Libbpf library License: LGPLv2 or BSD @@ -22,6 +22,7 @@ Patch0005: backport-libbpf-Avoid-uninitialized-value-in-BPF_CORE_READ_BI.pa Patch0006: backport-libbpf-Add-NULL-checks-to-bpf_object__prev_map,next_.patch Patch0007: backport-libbpf-Apply-map_set_def_max_entries-for-inner_maps-.patch Patch0008: backport-libbpf-Dont-take-direct-pointers-into-BTF-data-from-.patch +Patch0009: add-sw_64-support.patch # This package supersedes libbpf from kernel-tools, # which has default Epoch: 0. By having Epoch: 1 @@ -74,6 +75,9 @@ developing applications that use %{name} %{_libdir}/libbpf.a %changelog +* Fri Mar 14 2025 mahailiang 2:1.2.2-7 +- add sw_64 support + * Mon Dec 23 2024 zhangmingyi 2:1.2.2-6 - backport patch from upstream: backport-libbpf-Dont-take-direct-pointers-into-BTF-data-from-.patch -- Gitee