File libsmi-exports.patch of Package libsmi
diff -ruN a/lib/Makefile.am b/lib/Makefile.am
--- a/lib/Makefile.am 2018-01-23 21:58:37.197158054 -0500
+++ b/lib/Makefile.am 2018-01-23 22:06:55.100701032 -0500
@@ -11,6 +11,7 @@
# @(#) $Id: Makefile.am 1817 2014-10-13 13:20:45Z schoenw $
#
+AM_CFLAGS = -fvisibility=hidden
EXTRA_DIST = parser-yang.y parser-sming.y parser-smi.y \
scanner-yang.l scanner-sming.l scanner-smi.l \
common.h errormacros.h error.h util.h snprintf.h \
@@ -35,7 +36,9 @@
smi_event.3 \
yang_node.3
lib_LTLIBRARIES = libsmi.la
-libsmi_la_SOURCES = common.c error.c util.c snprintf.c \
+noinst_LTLIBRARIES = libsmi-internal.la
+
+libsmi_la_SOURCES = common.c error.c util.c \
smi.c smi-data.c smi-check.c \
yang.c yang-data.c yang-check.c \
yang-complex-types.c \
@@ -43,7 +46,9 @@
parser-smi.c scanner-smi.c \
parser-sming.c scanner-sming.c \
parser-yang.c scanner-yang.c
-libsmi_la_LDFLAGS = -version-info @VERSION_LIBTOOL@
+libsmi_la_LDFLAGS = -no-undefined -version-info @VERSION_LIBTOOL@
+
+libsmi_internal_la_SOURCES = $(libsmi_la_SOURCES)
parser-smi.c parser-smi.tab.h: parser-smi.y scanner-smi.h parser-smi.h error.h
$(BISON) --defines=parser-smi.tab.h -t -psmi -o parser-smi.c parser-smi.y
diff -ruN a/lib/smi.c b/lib/smi.c
--- a/lib/smi.c 2018-01-23 21:58:37.197158054 -0500
+++ b/lib/smi.c 2018-01-23 21:59:54.191231538 -0500
@@ -30,7 +30,6 @@
#include "smi.h"
#include "smi-data.h"
#include "yang-data.h"
-#include "snprintf.h"
#ifdef BACKEND_SMI
#include "scanner-smi.h"
diff -ruN a/lib/smi.h b/lib/smi.h
--- a/lib/smi.h 2018-01-23 21:58:37.197158054 -0500
+++ b/lib/smi.h 2018-01-23 22:05:00.539566959 -0500
@@ -16,14 +16,12 @@
#include <stdlib.h>
#include <stdarg.h>
-#ifdef HAVE_STDINT_H
#include <stdint.h>
-#endif
-#ifdef HAVE_LIMITS_H
#include "limits.h"
-#endif
#include <time.h>
+#pragma GCC visibility push(default)
+
#include "yang.h"
#ifdef __cplusplus
@@ -644,9 +642,9 @@
* has to free the allocated memory using smiFree().
*/
-extern int smiAsprintf(char **strp, const char *format, ...);
+extern int smiAsprintf(char **strp, const char *format, ...) __attribute__ ((format (printf, 2, 3)));
-extern int smiVasprintf(char **strp, const char *format, va_list ap);
+extern int smiVasprintf(char **strp, const char *format, va_list ap) __attribute__ ((format (printf, 2, 0)));
/*
@@ -661,8 +659,8 @@
#ifdef HAVE_DMALLOC_H
-extern void *_smiMalloc(char *, int, size_t);
-extern void *_smiRealloc(char *, int, void *ptr, size_t size);
+extern void *_smiMalloc(char *, int, size_t) __attribute((malloc, alloc_size(2)));
+extern void *_smiRealloc(char *, int, void *ptr, size_t size) __attribute((alloc_size(2)));
extern char *_smiStrdup(char *, int, const char *s1);
extern char *_smiStrndup(char *, int, const char *s1, size_t n);
extern void _smiFree(char *, int, void *ptr);
@@ -681,6 +679,8 @@
extern void smiFree(void *ptr);
#endif
+#pragma GCC visibility pop
+
#ifdef __cplusplus
}
#endif
diff -ruN a/lib/smi.h.in b/lib/smi.h.in
--- a/lib/smi.h.in 2018-01-23 21:58:37.197158054 -0500
+++ b/lib/smi.h.in 2018-01-23 22:00:53.593745244 -0500
@@ -24,6 +24,8 @@
#endif
#include <time.h>
+#pragma GCC visibility push(default)
+
#include "yang.h"
#ifdef __cplusplus
@@ -684,6 +686,6 @@
#ifdef __cplusplus
}
#endif
-
+#pragma GCC visibility pop
#endif /* _SMI_H */
diff -ruN a/lib/util.c b/lib/util.c
--- a/lib/util.c 2018-01-23 21:58:37.197158054 -0500
+++ b/lib/util.c 2018-01-23 21:59:29.451850549 -0500
@@ -19,8 +19,8 @@
#include <string.h>
#include <time.h>
+#include "smi.h"
#include "util.h"
-#include "snprintf.h"
#ifdef HAVE_WIN_H
#include "win.h"
diff -ruN a/tools/Makefile.am b/tools/Makefile.am
--- a/tools/Makefile.am 2018-01-23 21:58:37.225157353 -0500
+++ b/tools/Makefile.am 2018-01-23 21:59:09.040361276 -0500
@@ -30,7 +30,7 @@
smiquery_LDADD = $(top_builddir)/lib/libsmi.la
smilint_SOURCES = smilint.c shhopt.c
-smilint_LDADD = $(top_builddir)/lib/libsmi.la
+smilint_LDADD = $(top_builddir)/lib/libsmi.la ../lib/libsmi-internal.la
smixlate_SOURCES = smixlate.c shhopt.c dstring.h dstring.c
smixlate_LDADD = $(top_builddir)/lib/libsmi.la