summaryrefslogtreecommitdiffstats
path: root/meta-openembedded/meta-networking/recipes-filter/libnetfilter/files/libnetfilter-cthelper-visibility-hidden.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-openembedded/meta-networking/recipes-filter/libnetfilter/files/libnetfilter-cthelper-visibility-hidden.patch')
-rw-r--r--meta-openembedded/meta-networking/recipes-filter/libnetfilter/files/libnetfilter-cthelper-visibility-hidden.patch382
1 files changed, 382 insertions, 0 deletions
diff --git a/meta-openembedded/meta-networking/recipes-filter/libnetfilter/files/libnetfilter-cthelper-visibility-hidden.patch b/meta-openembedded/meta-networking/recipes-filter/libnetfilter/files/libnetfilter-cthelper-visibility-hidden.patch
new file mode 100644
index 000000000..e717d5b0e
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-filter/libnetfilter/files/libnetfilter-cthelper-visibility-hidden.patch
@@ -0,0 +1,382 @@
+From f58c5b09fb59baf07c942d373fc4d522b27e73c6 Mon Sep 17 00:00:00 2001
+From: Kevin Cernekee <cernekee@chromium.org>
+Date: Wed, 4 Jan 2017 14:30:26 -0800
+Subject: Use __EXPORTED rather than EXPORT_SYMBOL
+
+clang is sensitive to the ordering of
+__attribute__((visibility("default"))) relative to the function
+body. gcc is not. So if we try to re-declare an existing function
+with default visibility, clang prints a warning and generates
+a broken .so file in which nfct_helper_* are not exported to library
+callers.
+
+Move the attribute up into the function definition to make clang happy.
+
+Signed-off-by: Kevin Cernekee <cernekee@chromium.org>
+Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
+---
+ doxygen.cfg.in | 2 +-
+ src/internal.h | 5 ++-
+ src/libnetfilter_cthelper.c | 83 ++++++++++++++++++---------------------------
+ 3 files changed, 36 insertions(+), 54 deletions(-)
+
+Index: libnetfilter_cthelper-1.0.0/doxygen.cfg.in
+===================================================================
+--- libnetfilter_cthelper-1.0.0.orig/doxygen.cfg.in
++++ libnetfilter_cthelper-1.0.0/doxygen.cfg.in
+@@ -72,7 +72,7 @@ RECURSIVE = YES
+ EXCLUDE =
+ EXCLUDE_SYMLINKS = NO
+ EXCLUDE_PATTERNS = */.git/* .*.d
+-EXCLUDE_SYMBOLS = EXPORT_SYMBOL
++EXCLUDE_SYMBOLS =
+ EXAMPLE_PATH =
+ EXAMPLE_PATTERNS =
+ EXAMPLE_RECURSIVE = NO
+Index: libnetfilter_cthelper-1.0.0/src/internal.h
+===================================================================
+--- libnetfilter_cthelper-1.0.0.orig/src/internal.h
++++ libnetfilter_cthelper-1.0.0/src/internal.h
+@@ -3,10 +3,9 @@
+
+ #include "config.h"
+ #ifdef HAVE_VISIBILITY_HIDDEN
+-# define __visible __attribute__((visibility("default")))
+-# define EXPORT_SYMBOL(x) typeof(x) (x) __visible
++# define __EXPORTED __attribute__((visibility("default")))
+ #else
+-# define EXPORT_SYMBOL
++# define __EXPORTED
+ #endif
+
+ #endif
+Index: libnetfilter_cthelper-1.0.0/src/libnetfilter_cthelper.c
+===================================================================
+--- libnetfilter_cthelper-1.0.0.orig/src/libnetfilter_cthelper.c
++++ libnetfilter_cthelper-1.0.0/src/libnetfilter_cthelper.c
+@@ -99,17 +99,16 @@ struct nfct_helper {
+ * In case of success, this function returns a valid pointer, otherwise NULL
+ * s returned and errno is appropriately set.
+ */
+-struct nfct_helper *nfct_helper_alloc(void)
++struct nfct_helper __EXPORTED *nfct_helper_alloc(void)
+ {
+ return calloc(1, sizeof(struct nfct_helper));
+ }
+-EXPORT_SYMBOL(nfct_helper_alloc);
+
+ /**
+ * nfct_helper_free - release one helper object
+ * \param nfct_helper pointer to the helper object
+ */
+-void nfct_helper_free(struct nfct_helper *h)
++void __EXPORTED nfct_helper_free(struct nfct_helper *h)
+ {
+ int i;
+
+@@ -119,7 +118,6 @@ void nfct_helper_free(struct nfct_helper
+ free(h->expect_policy[i]);
+ }
+ }
+-EXPORT_SYMBOL(nfct_helper_free);
+
+ /**
+ * nfct_helper_policy_alloc - allocate a new helper policy object
+@@ -127,21 +125,19 @@ EXPORT_SYMBOL(nfct_helper_free);
+ * In case of success, this function returns a valid pointer, otherwise NULL
+ * s returned and errno is appropriately set.
+ */
+-struct nfct_helper_policy *nfct_helper_policy_alloc(void)
++struct nfct_helper_policy __EXPORTED *nfct_helper_policy_alloc(void)
+ {
+ return calloc(1, sizeof(struct nfct_helper_policy));
+ }
+-EXPORT_SYMBOL(nfct_helper_policy_alloc);
+
+ /**
+ * nfct_helper_free - release one helper policy object
+ * \param nfct_helper pointer to the helper object
+ */
+-void nfct_helper_policy_free(struct nfct_helper_policy *p)
++void __EXPORTED nfct_helper_policy_free(struct nfct_helper_policy *p)
+ {
+ free(p);
+ }
+-EXPORT_SYMBOL(nfct_helper_policy_free);
+
+ /**
+ * nfct_helper_policy_attr_set - set one attribute of the helper object
+@@ -149,7 +145,7 @@ EXPORT_SYMBOL(nfct_helper_policy_free);
+ * \param type attribute type you want to set
+ * \param data pointer to data that will be used to set this attribute
+ */
+-void
++void __EXPORTED
+ nfct_helper_policy_attr_set(struct nfct_helper_policy *p,
+ enum nfct_helper_policy_attr_type type,
+ const void *data)
+@@ -170,7 +166,6 @@ nfct_helper_policy_attr_set(struct nfct_
+ break;
+ }
+ }
+-EXPORT_SYMBOL(nfct_helper_policy_attr_set);
+
+ /**
+ * nfct_helper_attr_set_str - set one attribute the helper object
+@@ -178,23 +173,21 @@ EXPORT_SYMBOL(nfct_helper_policy_attr_se
+ * \param type attribute type you want to set
+ * \param name string that will be used to set this attribute
+ */
+-void
++void __EXPORTED
+ nfct_helper_policy_attr_set_str(struct nfct_helper_policy *p,
+ enum nfct_helper_policy_attr_type type,
+ const char *name)
+ {
+ nfct_helper_policy_attr_set(p, type, name);
+ }
+-EXPORT_SYMBOL(nfct_helper_policy_attr_set_str);
+
+-void
++void __EXPORTED
+ nfct_helper_policy_attr_set_u32(struct nfct_helper_policy *p,
+ enum nfct_helper_policy_attr_type type,
+ uint32_t value)
+ {
+ nfct_helper_policy_attr_set(p, type, &value);
+ }
+-EXPORT_SYMBOL(nfct_helper_policy_attr_set_u32);
+
+ /**
+ * nfct_helper_attr_set - set one attribute of the helper object
+@@ -202,7 +195,7 @@ EXPORT_SYMBOL(nfct_helper_policy_attr_se
+ * \param type attribute type you want to set
+ * \param data pointer to data that will be used to set this attribute
+ */
+-void
++void __EXPORTED
+ nfct_helper_attr_set(struct nfct_helper *h,
+ enum nfct_helper_attr_type type, const void *data)
+ {
+@@ -250,7 +243,6 @@ nfct_helper_attr_set(struct nfct_helper
+ break;
+ }
+ }
+-EXPORT_SYMBOL(nfct_helper_attr_set);
+
+ /**
+ * nfct_helper_attr_set_str - set one attribute the helper object
+@@ -258,44 +250,40 @@ EXPORT_SYMBOL(nfct_helper_attr_set);
+ * \param type attribute type you want to set
+ * \param name string that will be used to set this attribute
+ */
+-void
++void __EXPORTED
+ nfct_helper_attr_set_str(struct nfct_helper *nfct_helper, enum nfct_helper_attr_type type,
+ const char *name)
+ {
+ nfct_helper_attr_set(nfct_helper, type, name);
+ }
+-EXPORT_SYMBOL(nfct_helper_attr_set_str);
+
+-void
++void __EXPORTED
+ nfct_helper_attr_set_u8(struct nfct_helper *nfct_helper,
+ enum nfct_helper_attr_type type, uint8_t value)
+ {
+ nfct_helper_attr_set(nfct_helper, type, &value);
+ }
+-EXPORT_SYMBOL(nfct_helper_attr_set_u8);
+
+-void
++void __EXPORTED
+ nfct_helper_attr_set_u16(struct nfct_helper *nfct_helper,
+ enum nfct_helper_attr_type type, uint16_t value)
+ {
+ nfct_helper_attr_set(nfct_helper, type, &value);
+ }
+-EXPORT_SYMBOL(nfct_helper_attr_set_u16);
+
+-void
++void __EXPORTED
+ nfct_helper_attr_set_u32(struct nfct_helper *nfct_helper,
+ enum nfct_helper_attr_type type, uint32_t value)
+ {
+ nfct_helper_attr_set(nfct_helper, type, &value);
+ }
+-EXPORT_SYMBOL(nfct_helper_attr_set_u32);
+
+ /**
+ * nfct_helper_attr_unset - unset one attribute the helper object
+ * \param nfct_helper pointer to the helper object
+ * \param type attribute type you want to set
+ */
+-void
++void __EXPORTED
+ nfct_helper_attr_unset(struct nfct_helper *nfct_helper, enum nfct_helper_attr_type type)
+ {
+ switch(type) {
+@@ -307,7 +295,6 @@ nfct_helper_attr_unset(struct nfct_helpe
+ break;
+ }
+ }
+-EXPORT_SYMBOL(nfct_helper_attr_unset);
+
+ /**
+ * nfct_helper_attr_get - get one attribute the helper object
+@@ -317,8 +304,9 @@ EXPORT_SYMBOL(nfct_helper_attr_unset);
+ * This function returns a valid pointer to the attribute data. If a
+ * unsupported attribute is used, this returns NULL.
+ */
+-const void *nfct_helper_attr_get(struct nfct_helper *helper,
+- enum nfct_helper_attr_type type)
++const void __EXPORTED *
++nfct_helper_attr_get(struct nfct_helper *helper,
++ enum nfct_helper_attr_type type)
+ {
+ const void *ret = NULL;
+
+@@ -358,7 +346,6 @@ const void *nfct_helper_attr_get(struct
+ }
+ return ret;
+ }
+-EXPORT_SYMBOL(nfct_helper_attr_get);
+
+ /**
+ * nfct_helper_attr_get_str - get one attribute the helper object
+@@ -368,13 +355,12 @@ EXPORT_SYMBOL(nfct_helper_attr_get);
+ * This function returns a valid pointer to the beginning of the string.
+ * If the attribute is unsupported, this returns NULL.
+ */
+-const char *
++const char __EXPORTED *
+ nfct_helper_attr_get_str(struct nfct_helper *nfct_helper,
+ enum nfct_helper_attr_type type)
+ {
+ return (const char *)nfct_helper_attr_get(nfct_helper, type);
+ }
+-EXPORT_SYMBOL(nfct_helper_attr_get_str);
+
+ /**
+ * nfct_helper_attr_get_u8 - get one attribute the helper object
+@@ -384,12 +370,12 @@ EXPORT_SYMBOL(nfct_helper_attr_get_str);
+ * This function returns a unsigned 8-bits integer. If the attribute is
+ * unsupported, this returns NULL.
+ */
+-uint8_t nfct_helper_attr_get_u8(struct nfct_helper *nfct_helper,
+- enum nfct_helper_attr_type type)
++uint8_t __EXPORTED
++nfct_helper_attr_get_u8(struct nfct_helper *nfct_helper,
++ enum nfct_helper_attr_type type)
+ {
+ return *((uint8_t *)nfct_helper_attr_get(nfct_helper, type));
+ }
+-EXPORT_SYMBOL(nfct_helper_attr_get_u8);
+
+ /**
+ * nfct_helper_attr_get_u16 - get one attribute the helper object
+@@ -399,12 +385,12 @@ EXPORT_SYMBOL(nfct_helper_attr_get_u8);
+ * This function returns a unsigned 16-bits integer. If the attribute is
+ * unsupported, this returns NULL.
+ */
+-uint16_t nfct_helper_attr_get_u16(struct nfct_helper *nfct_helper,
+- enum nfct_helper_attr_type type)
++uint16_t __EXPORTED
++nfct_helper_attr_get_u16(struct nfct_helper *nfct_helper,
++ enum nfct_helper_attr_type type)
+ {
+ return *((uint16_t *)nfct_helper_attr_get(nfct_helper, type));
+ }
+-EXPORT_SYMBOL(nfct_helper_attr_get_u16);
+
+ /**
+ * nfct_helper_attr_get_u32 - get one attribute the helper object
+@@ -414,12 +400,12 @@ EXPORT_SYMBOL(nfct_helper_attr_get_u16);
+ * This function returns a unsigned 32-bits integer. If the attribute is
+ * unsupported, this returns NULL.
+ */
+-uint32_t nfct_helper_attr_get_u32(struct nfct_helper *nfct_helper,
+- enum nfct_helper_attr_type type)
++uint32_t __EXPORTED
++nfct_helper_attr_get_u32(struct nfct_helper *nfct_helper,
++ enum nfct_helper_attr_type type)
+ {
+ return *((uint32_t *)nfct_helper_attr_get(nfct_helper, type));
+ }
+-EXPORT_SYMBOL(nfct_helper_attr_get_u32);
+
+ /**
+ * nfct_helper_snprintf - print helper object into one buffer
+@@ -431,9 +417,10 @@ EXPORT_SYMBOL(nfct_helper_attr_get_u32);
+ * This function returns -1 in case that some mandatory attributes are
+ * missing. On sucess, it returns 0.
+ */
+-int nfct_helper_snprintf(char *buf, size_t size,
+- struct nfct_helper *helper,
+- unsigned int type, unsigned int flags)
++int __EXPORTED
++nfct_helper_snprintf(char *buf, size_t size,
++ struct nfct_helper *helper,
++ unsigned int type, unsigned int flags)
+ {
+ int ret;
+
+@@ -454,7 +441,6 @@ int nfct_helper_snprintf(char *buf, size
+
+ return ret;
+ }
+-EXPORT_SYMBOL(nfct_helper_snprintf);
+
+ /**
+ * @}
+@@ -490,7 +476,7 @@ EXPORT_SYMBOL(nfct_helper_snprintf);
+ * - Command NFNL_MSG_ACCT_DEL, to delete one specific nfct_helper object (if
+ * unused, otherwise you hit EBUSY).
+ */
+-struct nlmsghdr *
++struct nlmsghdr __EXPORTED *
+ nfct_helper_nlmsg_build_hdr(char *buf, uint8_t cmd,
+ uint16_t flags, uint32_t seq)
+ {
+@@ -509,7 +495,6 @@ nfct_helper_nlmsg_build_hdr(char *buf, u
+
+ return nlh;
+ }
+-EXPORT_SYMBOL(nfct_helper_nlmsg_build_hdr);
+
+ static void
+ nfct_helper_nlmsg_build_policy(struct nlmsghdr *nlh,
+@@ -530,7 +515,7 @@ nfct_helper_nlmsg_build_policy(struct nl
+ * \param nlh: netlink message that you want to use to add the payload.
+ * \param nfct_helper: pointer to a helper object
+ */
+-void
++void __EXPORTED
+ nfct_helper_nlmsg_build_payload(struct nlmsghdr *nlh, struct nfct_helper *h)
+ {
+ struct nlattr *nest;
+@@ -593,7 +578,6 @@ nfct_helper_nlmsg_build_payload(struct n
+ if (h->bitset & (1 << NFCTH_ATTR_STATUS))
+ mnl_attr_put_u32(nlh, NFCTH_STATUS, ntohl(h->status));
+ }
+-EXPORT_SYMBOL(nfct_helper_nlmsg_build_payload);
+
+ static int
+ nfct_helper_nlmsg_parse_tuple_cb(const struct nlattr *attr, void *data)
+@@ -795,7 +779,7 @@ nfct_helper_nlmsg_parse_attr_cb(const st
+ * This function returns -1 in case that some mandatory attributes are
+ * missing. On sucess, it returns 0.
+ */
+-int
++int __EXPORTED
+ nfct_helper_nlmsg_parse_payload(const struct nlmsghdr *nlh,
+ struct nfct_helper *h)
+ {
+@@ -832,7 +816,6 @@ nfct_helper_nlmsg_parse_payload(const st
+ }
+ return 0;
+ }
+-EXPORT_SYMBOL(nfct_helper_nlmsg_parse_payload);
+
+ /**
+ * @}
OpenPOWER on IntegriCloud