Library versioning stubs.
authorDaniel Hokka Zakrisson <daniel@hozac.com>
Thu, 30 Oct 2008 21:23:00 +0000 (21:23 +0000)
committerDaniel Hokka Zakrisson <daniel@hozac.com>
Thu, 30 Oct 2008 21:23:00 +0000 (21:23 +0000)
git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@2810 94cd875c-1c1d-0410-91d2-eb244daf1a30

configure.ac
lib/Makefile-files
lib/internal.h
lib/libvserver.ver [new file with mode: 0644]

index 2da8aa9..fa47ee6 100644 (file)
@@ -475,6 +475,16 @@ dnl Python stuff ends here
 dnl ########################
 
 
+dnl ########################
+dnl Library versioning
+
+AM_CONDITIONAL([HAVE_VERSIONING], [true])
+AC_DEFINE([HAVE_VERSIONING], [1], [Define this to use library versioning])
+
+dnl /Library versioning
+dnl ########################
+
+
 dnl BIG HACK! Do some autodetection here!
 AC_DEFINE(UTMP_GID, [22], [The utmp gid-number])
 
index cccd057..b42adce 100644 (file)
@@ -252,6 +252,10 @@ endif
 lib_libvserver_la_SOURCES =    $(lib_SRCS)
 lib_libvserver_la_CPPFLAGS =   $(AM_CPPFLAGS) $(LIB_DEBUG_CPPFLAGS)
 lib_libvserver_la_LDFLAGS =    -version $(lib_VERSION)
+if HAVE_VERSIONING
+lib_libvserver_la_LDFLAGS +=   -Wl,-version-script=$(top_srcdir)/lib/libvserver.ver
+EXTRA_DIST +=                  lib/libvserver.ver
+endif
 
 lib_libvserver_a_SOURCES =     $(lib_SRCS)
 lib_libvserver_a_CPPFLAGS =    $(AM_CPPFLAGS) $(LIB_DEBUG_CPPFLAGS)
index f9192bb..893af27 100644 (file)
 extern "C" {
 #endif
 
+
+#ifdef HAVE_VERSIONING
+/* FIXME: HAVE_ASM_DOT_GLOBAL_NAME */
+#  define _symbol_version(real, name, version) \
+     __asm__ (".symver " #real "," #name "@" #version)
+#  define _default_symbol_version(real, name, version) \
+     __asm__ (".symver " #real "," #name "@@" #version)
+#else
+#  define _symbol_version(real, name, version)
+#  define _default_symbol_version(real, name, version) \
+  extern __typeof (real) name __attribute__ ((alias (#name)));
+#endif
+#define symbol_version(real, name, version) \
+       _symbol_version(real, name, version)
+#define default_symbol_version(real, name, version) \
+       _default_symbol_version(real, name, version)
+
+
 char * vc_getVserverByCtx_Internal(xid_t ctx, /*@null@*/vcCfgStyle *style,
                                    /*@null@*/char const *revdir,
                                    bool validate_result);
diff --git a/lib/libvserver.ver b/lib/libvserver.ver
new file mode 100644 (file)
index 0000000..9ab0625
--- /dev/null
@@ -0,0 +1,6 @@
+VSERVER_0_30_215 {
+       global: *;
+};
+
+VSERVER_0_30_216 {
+} VSERVER_0_30_215;