!90 [backport]backport-libbpf-Disable-SEC-pragma-macro-on-GCC.patch

From: @zhang-mingyi66 
Reviewed-by: @nlgwcy 
Signed-off-by: @nlgwcy
This commit is contained in:
openeuler-ci-bot 2023-05-13 02:40:46 +00:00 committed by Gitee
commit 0cb688a185
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 68 additions and 2 deletions

View File

@ -0,0 +1,61 @@
From b31ca3fa0e62fde6aa66f855136e29e088ad9dde Mon Sep 17 00:00:00 2001
From: James Hilliard <james.hilliard1@gmail.com>
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 <james.hilliard1@gmail.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
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

View File

@ -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 <zhangmingyi5@huawei.com> -2:0.8.1-7
- backport patches from upstream:
backport-libbpf-Disable-SEC-pragma-macro-on-GCC.patch
* Fri Apr 28 2023 SuperCharge <xiesongyang@huawei.com> -2:0.8.1-6
- backport patches from upstream:
backport-libbpf-Fix-alen-calculation-in-libbpf_nla_dump_error.patch