From 7966020bdf0135b7d5c4c792883875019ae2a906 Mon Sep 17 00:00:00 2001 From: Armin K Date: Sat, 23 Dec 2017 21:12:04 +0100 Subject: src: Fix exporting symbols with clang When EXPORT_SYMBOL is located after function definition, clang won't properly export the function, resulting in a library with no symbols when built with clang. Based on libmnl commit dcdb47373a37 ("Move declaration of visibility attributes before definition.") Closes: https://bugzilla.netfilter.org/show_bug.cgi?id=1205 Signed-off-by: Armin K Signed-off-by: Pablo Neira Ayuso --- src/common.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src/common.c') diff --git a/src/common.c b/src/common.c index a95883c..561c954 100644 --- a/src/common.c +++ b/src/common.c @@ -43,14 +43,15 @@ static struct nlmsghdr *__nftnl_nlmsg_build_hdr(char *buf, uint16_t type, return nlh; } +EXPORT_SYMBOL(nftnl_nlmsg_build_hdr); struct nlmsghdr *nftnl_nlmsg_build_hdr(char *buf, uint16_t type, uint16_t family, uint16_t flags, uint32_t seq) { return __nftnl_nlmsg_build_hdr(buf, (NFNL_SUBSYS_NFTABLES << 8) | type, family, flags, seq, 0); } -EXPORT_SYMBOL(nftnl_nlmsg_build_hdr); +EXPORT_SYMBOL(nftnl_parse_err_alloc); struct nftnl_parse_err *nftnl_parse_err_alloc(void) { struct nftnl_parse_err *err; @@ -63,14 +64,14 @@ struct nftnl_parse_err *nftnl_parse_err_alloc(void) return err; } -EXPORT_SYMBOL(nftnl_parse_err_alloc); +EXPORT_SYMBOL(nftnl_parse_err_free); void nftnl_parse_err_free(struct nftnl_parse_err *err) { xfree(err); } -EXPORT_SYMBOL(nftnl_parse_err_free); +EXPORT_SYMBOL(nftnl_parse_perror); int nftnl_parse_perror(const char *msg, struct nftnl_parse_err *err) { switch (err->error) { @@ -89,7 +90,6 @@ int nftnl_parse_perror(const char *msg, struct nftnl_parse_err *err) return fprintf(stderr, "%s: Undefined error\n", msg); } } -EXPORT_SYMBOL(nftnl_parse_perror); int nftnl_cmd_header_snprintf(char *buf, size_t size, uint32_t cmd, uint32_t type, uint32_t flags) @@ -165,20 +165,21 @@ int nftnl_cmd_footer_fprintf(FILE *fp, uint32_t cmd, uint32_t type, nftnl_cmd_footer_fprintf_cb); } +EXPORT_SYMBOL(nftnl_batch_begin); struct nlmsghdr *nftnl_batch_begin(char *buf, uint32_t seq) { return __nftnl_nlmsg_build_hdr(buf, NFNL_MSG_BATCH_BEGIN, AF_UNSPEC, 0, seq, NFNL_SUBSYS_NFTABLES); } -EXPORT_SYMBOL(nftnl_batch_begin); +EXPORT_SYMBOL(nftnl_batch_end); struct nlmsghdr *nftnl_batch_end(char *buf, uint32_t seq) { return __nftnl_nlmsg_build_hdr(buf, NFNL_MSG_BATCH_END, AF_UNSPEC, 0, seq, NFNL_SUBSYS_NFTABLES); } -EXPORT_SYMBOL(nftnl_batch_end); +EXPORT_SYMBOL(nftnl_batch_is_supported); int nftnl_batch_is_supported(void) { struct mnl_socket *nl; @@ -236,4 +237,3 @@ err: mnl_nlmsg_batch_stop(b); return -1; } -EXPORT_SYMBOL(nftnl_batch_is_supported); -- cgit v1.2.3