From eab96bfae545fb264ad0a3a4b8317e58a8a6364a Mon Sep 17 00:00:00 2001 From: zhang-mingyi66 Date: Fri, 12 May 2023 16:40:05 +0800 Subject: [PATCH] backport backport-libbpf-Disable-SEC-pragma-macro-on-GCC.patch --- ...bbpf-Disable-SEC-pragma-macro-on-GCC.patch | 61 +++++++++++++++++++ libbpf.spec | 9 ++- 2 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 backport-libbpf-Disable-SEC-pragma-macro-on-GCC.patch diff --git a/backport-libbpf-Disable-SEC-pragma-macro-on-GCC.patch b/backport-libbpf-Disable-SEC-pragma-macro-on-GCC.patch new file mode 100644 index 0000000..cb6ab76 --- /dev/null +++ b/backport-libbpf-Disable-SEC-pragma-macro-on-GCC.patch @@ -0,0 +1,61 @@ +From b31ca3fa0e62fde6aa66f855136e29e088ad9dde Mon Sep 17 00:00:00 2001 +From: James Hilliard +Date: Wed, 6 Jul 2022 05:18:38 -0600 +Subject: [PATCH] libbpf: Disable SEC pragma macro on GCC + +It seems the gcc preprocessor breaks with pragmas when surrounding +__attribute__. + +Disable these pragmas on GCC due to upstream bugs see: +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55578 +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90400 + +Fixes errors like: +error: expected identifier or '(' before '#pragma' + 106 | SEC("cgroup/bind6") + | ^~~ + +error: expected '=', ',', ';', 'asm' or '__attribute__' before '#pragma' + 114 | char _license[] SEC("license") = "GPL"; + | ^~~ + +Signed-off-by: James Hilliard +Signed-off-by: Andrii Nakryiko +Link: https://lore.kernel.org/bpf/20220706111839.1247911-1-james.hilliard1@gmail.com +--- + src/bpf_helpers.h | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +diff --git a/src/bpf_helpers.h b/src/bpf_helpers.h +index fb04eaf..7349b16 100644 +--- a/src/bpf_helpers.h ++++ b/src/bpf_helpers.h +@@ -22,12 +22,25 @@ + * To allow use of SEC() with externs (e.g., for extern .maps declarations), + * make sure __attribute__((unused)) doesn't trigger compilation warning. + */ ++#if __GNUC__ && !__clang__ ++ ++/* ++ * Pragma macros are broken on GCC ++ * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55578 ++ * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90400 ++ */ ++#define SEC(name) __attribute__((section(name), used)) ++ ++#else ++ + #define SEC(name) \ + _Pragma("GCC diagnostic push") \ + _Pragma("GCC diagnostic ignored \"-Wignored-attributes\"") \ + __attribute__((section(name), used)) \ + _Pragma("GCC diagnostic pop") \ + ++#endif ++ + /* Avoid 'linux/stddef.h' definition of '__always_inline'. */ + #undef __always_inline + #define __always_inline inline __attribute__((always_inline)) +-- +2.33.0 + diff --git a/libbpf.spec b/libbpf.spec index 25a4254..8b7f888 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 @@ -12,7 +12,7 @@ URL: https://github.com/%{githubname}/%{githubname} Source: https://github.com/%{githubname}/%{githubname}/archive/refs/tags/v%{githubver}.tar.gz BuildRequires: gcc elfutils-libelf-devel elfutils-devel -Patch0000: backport-libbpf-Fix-determine_ptr_size-guessing.patch +Patch0000: backport-libbpf-Fix-determine_ptr_size-guessing.patch Patch0001: backport-libbpf-preserve-errno-across-pr_warn-pr_info-pr_debug.patch Patch0002: backport-libbpf-Ensure-functions-with-always_inline-attribute-are-inline.patch Patch0003: backport-libbpf-Fix-the-name-of-a-reused-map.patch @@ -26,6 +26,7 @@ Patch0010: backport-sync-start-syncing-include-uapi-linux-fcntl.h-UAPI-h.pa Patch0011: backport-libbpf-Handle-size-overflow-for-ringbuf-mmap.patch Patch0012: backport-libbpf-Use-page-size-as-max_entries-when-probing-rin.patch Patch0013: backport-libbpf-Fix-alen-calculation-in-libbpf_nla_dump_error.patch +Patch0014: backport-libbpf-Disable-SEC-pragma-macro-on-GCC.patch # This package supersedes libbpf from kernel-tools, # which has default Epoch: 0. By having Epoch: 1 @@ -78,6 +79,10 @@ developing applications that use %{name} %{_libdir}/libbpf.a %changelog +* Fri May 12 2023 zhangmingyi -2:0.8.1-7 +- backport patches from upstream: + backport-libbpf-Disable-SEC-pragma-macro-on-GCC.patch + * Fri Apr 28 2023 SuperCharge -2:0.8.1-6 - backport patches from upstream: backport-libbpf-Fix-alen-calculation-in-libbpf_nla_dump_error.patch -- Gitee