From d0c4e39d12f903e06db262656cff2e24d267bed7 Mon Sep 17 00:00:00 2001
From: Kevin Cernekee <cernekee@chromium.org>
Date: Wed, 4 Jan 2017 14:30:25 -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_timeout_* 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_cttimeout.c | 44 +++++++++++++++++---------------------------
 3 files changed, 20 insertions(+), 31 deletions(-)

diff --git a/doxygen.cfg.in b/doxygen.cfg.in
index 8e5d449..09c3ce0 100644
--- a/doxygen.cfg.in
+++ b/doxygen.cfg.in
@@ -72,7 +72,7 @@ RECURSIVE              = YES
 EXCLUDE                = 
 EXCLUDE_SYMLINKS       = NO
 EXCLUDE_PATTERNS       = */.git/* .*.d
-EXCLUDE_SYMBOLS        = EXPORT_SYMBOL nfct_timeout _container_policy_cb
+EXCLUDE_SYMBOLS        = nfct_timeout _container_policy_cb
 EXAMPLE_PATH           = 
 EXAMPLE_PATTERNS       = 
 EXAMPLE_RECURSIVE      = NO
diff --git a/src/internal.h b/src/internal.h
index 3a88d1a..5d78171 100644
--- a/src/internal.h
+++ b/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
diff --git a/src/libnetfilter_cttimeout.c b/src/libnetfilter_cttimeout.c
index 7844a1f..a0a7185 100644
--- a/src/libnetfilter_cttimeout.c
+++ b/src/libnetfilter_cttimeout.c
@@ -187,7 +187,7 @@ struct nfct_timeout {
  * In case of success, this function returns a valid pointer, otherwise NULL
  * s returned and errno is appropriately set.
  */
-struct nfct_timeout *nfct_timeout_alloc(void)
+struct nfct_timeout __EXPORTED *nfct_timeout_alloc(void)
 {
 	struct nfct_timeout *t;
 
@@ -197,19 +197,17 @@ struct nfct_timeout *nfct_timeout_alloc(void)
 
 	return t;
 }
-EXPORT_SYMBOL(nfct_timeout_alloc);
 
 /**
  * nfct_timeout_free - release one conntrack timeout object
  * \param t pointer to the conntrack timeout object
  */
-void nfct_timeout_free(struct nfct_timeout *t)
+void __EXPORTED nfct_timeout_free(struct nfct_timeout *t)
 {
 	if (t->timeout)
 		free(t->timeout);
 	free(t);
 }
-EXPORT_SYMBOL(nfct_timeout_free);
 
 /**
  * nfct_timeout_attr_set - set one attribute of the conntrack timeout object
@@ -217,7 +215,7 @@ EXPORT_SYMBOL(nfct_timeout_free);
  * \param type attribute type you want to set
  * \param data pointer to data that will be used to set this attribute
  */
-int
+int __EXPORTED
 nfct_timeout_attr_set(struct nfct_timeout *t, uint32_t type, const void *data)
 {
 	switch(type) {
@@ -236,7 +234,6 @@ nfct_timeout_attr_set(struct nfct_timeout *t, uint32_t type, const void *data)
 	t->attrset |= (1 << type);
 	return 0;
 }
-EXPORT_SYMBOL(nfct_timeout_attr_set);
 
 /**
  * nfct_timeout_attr_set_u8 - set one attribute of the conntrack timeout object
@@ -244,12 +241,11 @@ EXPORT_SYMBOL(nfct_timeout_attr_set);
  * \param type attribute type you want to set
  * \param data pointer to data that will be used to set this attribute
  */
-int
+int __EXPORTED
 nfct_timeout_attr_set_u8(struct nfct_timeout *t, uint32_t type, uint8_t data)
 {
 	return nfct_timeout_attr_set(t, type, &data);
 }
-EXPORT_SYMBOL(nfct_timeout_attr_set_u8);
 
 /**
  * nfct_timeout_attr_set_u16 - set one attribute of the conntrack timeout object
@@ -257,23 +253,21 @@ EXPORT_SYMBOL(nfct_timeout_attr_set_u8);
  * \param type attribute type you want to set
  * \param data pointer to data that will be used to set this attribute
  */
-int
+int __EXPORTED
 nfct_timeout_attr_set_u16(struct nfct_timeout *t, uint32_t type, uint16_t data)
 {
 	return nfct_timeout_attr_set(t, type, &data);
 }
-EXPORT_SYMBOL(nfct_timeout_attr_set_u16);
 
 /**
  * nfct_timeout_attr_unset - unset one attribute of the conntrack timeout object
  * \param t pointer to the conntrack timeout object
  * \param type attribute type you want to set
  */
-void nfct_timeout_attr_unset(struct nfct_timeout *t, uint32_t type)
+void __EXPORTED nfct_timeout_attr_unset(struct nfct_timeout *t, uint32_t type)
 {
 	t->attrset &= ~(1 << type);
 }
-EXPORT_SYMBOL(nfct_timeout_attr_unset);
 
 /**
  * nfct_timeout_policy_attr_set_u32 - set one attribute of the policy
@@ -281,7 +275,7 @@ EXPORT_SYMBOL(nfct_timeout_attr_unset);
  * \param type attribute type you want to set
  * \param data data that will be used to set this attribute
  */
-int
+int __EXPORTED
 nfct_timeout_policy_attr_set_u32(struct nfct_timeout *t,
 				 uint32_t type, uint32_t data)
 {
@@ -319,18 +313,17 @@ nfct_timeout_policy_attr_set_u32(struct nfct_timeout *t,
 
 	return 0;
 }
-EXPORT_SYMBOL(nfct_timeout_policy_attr_set_u32);
 
 /**
  * nfct_timeout_policy_attr_unset - unset one attribute of the policy
  * \param t pointer to the conntrack timeout object
  * \param type attribute type you want to set
  */
-void nfct_timeout_policy_attr_unset(struct nfct_timeout *t, uint32_t type)
+void __EXPORTED
+nfct_timeout_policy_attr_unset(struct nfct_timeout *t, uint32_t type)
 {
 	t->attrset &= ~(1 << type);
 }
-EXPORT_SYMBOL(nfct_timeout_policy_attr_unset);
 
 /**
  * nfct_timeout_policy_attr_to_name - get state name from protocol state number
@@ -340,7 +333,8 @@ EXPORT_SYMBOL(nfct_timeout_policy_attr_unset);
  * This function returns NULL if unsupported protocol or state number is passed.
  * Otherwise, a pointer to valid string is returned.
  */
-const char *nfct_timeout_policy_attr_to_name(uint8_t l4proto, uint32_t state)
+const char __EXPORTED *
+nfct_timeout_policy_attr_to_name(uint8_t l4proto, uint32_t state)
 {
 	if (timeout_protocol[l4proto].state_to_name == NULL) {
 		printf("no array state name\n");
@@ -354,7 +348,6 @@ const char *nfct_timeout_policy_attr_to_name(uint8_t l4proto, uint32_t state)
 
 	return timeout_protocol[l4proto].state_to_name[state];
 }
-EXPORT_SYMBOL(nfct_timeout_policy_attr_to_name);
 
 /**
  * @}
@@ -438,8 +431,9 @@ nfct_timeout_snprintf_default(char *buf, size_t size,
  * This function returns -1 in case that some mandatory attributes are
  * missing. On sucess, it returns 0.
  */
-int nfct_timeout_snprintf(char *buf, size_t size, const struct nfct_timeout *t,
-			  unsigned int type, unsigned int flags)
+int __EXPORTED
+nfct_timeout_snprintf(char *buf, size_t size, const struct nfct_timeout *t,
+		      unsigned int type, unsigned int flags)
 {
 	int ret = 0;
 
@@ -454,7 +448,6 @@ int nfct_timeout_snprintf(char *buf, size_t size, const struct nfct_timeout *t,
 
 	return ret;
 }
-EXPORT_SYMBOL(nfct_timeout_snprintf);
 
 /**
  * @}
@@ -477,7 +470,7 @@ EXPORT_SYMBOL(nfct_timeout_snprintf);
  * - CTNL_MSG_TIMEOUT_GET: get conntrack timeout object.
  * - CTNL_MSG_TIMEOUT_DEL: delete conntrack timeout object.
  */
-struct nlmsghdr *
+struct nlmsghdr __EXPORTED *
 nfct_timeout_nlmsg_build_hdr(char *buf, uint8_t cmd,
 			     uint16_t flags, uint32_t seq)
 {
@@ -496,14 +489,13 @@ nfct_timeout_nlmsg_build_hdr(char *buf, uint8_t cmd,
 
 	return nlh;
 }
-EXPORT_SYMBOL(nfct_timeout_nlmsg_build_hdr);
 
 /**
  * nfct_timeout_nlmsg_build_payload - build payload from ct timeout object
  * \param nlh: netlink message that you want to use to add the payload.
  * \param t: pointer to a conntrack timeout object
  */
-void
+void __EXPORTED
 nfct_timeout_nlmsg_build_payload(struct nlmsghdr *nlh,
 				 const struct nfct_timeout *t)
 {
@@ -532,7 +524,6 @@ nfct_timeout_nlmsg_build_payload(struct nlmsghdr *nlh,
 	}
 
 }
-EXPORT_SYMBOL(nfct_timeout_nlmsg_build_payload);
 
 static int
 timeout_nlmsg_parse_attr_cb(const struct nlattr *attr, void *data)
@@ -629,7 +620,7 @@ timeout_parse_attr_data(struct nfct_timeout *t, const struct nlattr *nest)
  * This function returns -1 in case that some mandatory attributes are
  * missing. On sucess, it returns 0.
  */
-int
+int __EXPORTED
 nfct_timeout_nlmsg_parse_payload(const struct nlmsghdr *nlh,
 				 struct nfct_timeout *t)
 {
@@ -654,7 +645,6 @@ nfct_timeout_nlmsg_parse_payload(const struct nlmsghdr *nlh,
 	}
 	return 0;
 }
-EXPORT_SYMBOL(nfct_timeout_nlmsg_parse_payload);
 
 /**
  * @}
-- 
cgit v1.1

