From: Daniel Hokka Zakrisson Date: Thu, 30 Oct 2008 21:23:00 +0000 (+0000) Subject: Library versioning stubs. X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0f3b41570794aaf1260d8db23fe20871a031b92a;p=util-vserver.git Library versioning stubs. git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@2810 94cd875c-1c1d-0410-91d2-eb244daf1a30 --- diff --git a/configure.ac b/configure.ac index 2da8aa9..fa47ee6 100644 --- a/configure.ac +++ b/configure.ac @@ -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]) diff --git a/lib/Makefile-files b/lib/Makefile-files index cccd057..b42adce 100644 --- a/lib/Makefile-files +++ b/lib/Makefile-files @@ -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) diff --git a/lib/internal.h b/lib/internal.h index f9192bb..893af27 100644 --- a/lib/internal.h +++ b/lib/internal.h @@ -32,6 +32,24 @@ 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 index 0000000..9ab0625 --- /dev/null +++ b/lib/libvserver.ver @@ -0,0 +1,6 @@ +VSERVER_0_30_215 { + global: *; +}; + +VSERVER_0_30_216 { +} VSERVER_0_30_215;