Commit 0fec7a3c authored by Andrii Nakryiko's avatar Andrii Nakryiko Committed by Alexei Starovoitov

libbpf: Suppress compiler warning when using SEC() macro with externs

When used on externs SEC() macro will trigger compilation warning about
inapplicable `__attribute__((used))`. That's expected for extern declarations,
so suppress it with the corresponding _Pragma.
Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
Acked-by: default avatarYonghong Song <yhs@fb.com>
Link: https://lore.kernel.org/bpf/20210423181348.1801389-4-andrii@kernel.org
parent 5b438f01
...@@ -25,9 +25,16 @@ ...@@ -25,9 +25,16 @@
/* /*
* Helper macro to place programs, maps, license in * Helper macro to place programs, maps, license in
* different sections in elf_bpf file. Section names * different sections in elf_bpf file. Section names
* are interpreted by elf_bpf loader * are interpreted by libbpf depending on the context (BPF programs, BPF maps,
* extern variables, etc).
* To allow use of SEC() with externs (e.g., for extern .maps declarations),
* make sure __attribute__((unused)) doesn't trigger compilation warning.
*/ */
#define SEC(NAME) __attribute__((section(NAME), used)) #define SEC(name) \
_Pragma("GCC diagnostic push") \
_Pragma("GCC diagnostic ignored \"-Wignored-attributes\"") \
__attribute__((section(name), used)) \
_Pragma("GCC diagnostic pop") \
/* Avoid 'linux/stddef.h' definition of '__always_inline'. */ /* Avoid 'linux/stddef.h' definition of '__always_inline'. */
#undef __always_inline #undef __always_inline
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment