bpftool: Fix C++ additions to skeleton
authorAndrii Nakryiko <andrii@kernel.org>
Wed, 16 Feb 2022 23:35:40 +0000 (15:35 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Thu, 17 Feb 2022 00:58:51 +0000 (16:58 -0800)
Mark C++-specific T::open() and other methods as static inline to avoid
symbol redefinition when multiple files use the same skeleton header in
an application.

Fixes: bb8ffe61ea45 ("bpftool: Add C++-specific open/load/etc skeleton wrappers")
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20220216233540.216642-1-andrii@kernel.org
tools/bpf/bpftool/gen.c

index e461059..f8c1413 100644 (file)
@@ -834,13 +834,13 @@ static int do_skeleton(int argc, char **argv)
                \n\
                                                                            \n\
                #ifdef __cplusplus                                          \n\
-                       static struct %1$s *open(const struct bpf_object_open_opts *opts = nullptr);\n\
-                       static struct %1$s *open_and_load();                \n\
-                       static int load(struct %1$s *skel);                 \n\
-                       static int attach(struct %1$s *skel);               \n\
-                       static void detach(struct %1$s *skel);              \n\
-                       static void destroy(struct %1$s *skel);             \n\
-                       static const void *elf_bytes(size_t *sz);           \n\
+                       static inline struct %1$s *open(const struct bpf_object_open_opts *opts = nullptr);\n\
+                       static inline struct %1$s *open_and_load();         \n\
+                       static inline int load(struct %1$s *skel);          \n\
+                       static inline int attach(struct %1$s *skel);        \n\
+                       static inline void detach(struct %1$s *skel);       \n\
+                       static inline void destroy(struct %1$s *skel);      \n\
+                       static inline const void *elf_bytes(size_t *sz);    \n\
                #endif /* __cplusplus */                                    \n\
                };                                                          \n\
                                                                            \n\